Skip to content

v2.12.0

Latest

Choose a tag to compare

@Abhinandan-Purkait Abhinandan-Purkait released this 24 Aug 12:42

Release Date: 24th August, 2026

Summary

OpenEBS Replicated PV Mayastor version 2.12.0 introduces new features, enhancements, and several functional fixes.

What's New

Eventing Framework and Event Observability

A new eventing-aggregator component consumes events from NATS JetStream and persists them. A new kubectl mayastor get events command lets you inspect events from Loki, NATS JetStream, or offline from a support-bundle system dump, with filtering by category, action, node, target, and time range. Events are also collected in the supportability system dump.

Best-Effort Snapshot Restore Policy

A new StorageClass parameter snapshotRestorePolicy controls snapshot restore behavior when not every replica pool can host a clone of the source snapshot:

  • strict (default): every requested replica must be cloned from the snapshot.
  • bestEffort: the restore proceeds if at least one clone succeeds; the volume comes up under-replicated and missing replicas are filled in through a normal rebuild.

Volume / Nexus Label V2

A new versioned on-disk V2 label layout is introduced alongside the existing V1 layout. V2 reduces the per-replica metadata partition from 4MiB to 3MiB, aligns the data partition to a 4MiB cluster boundary, and aligns volume capacity to 1MiB boundaries. This also resolves block-mode backup compatibility with Kasten K10.

  • Size handling — V2 volume sizes are rounded up to the next 1MiB boundary, and each replica reserves an additional 8MiB for metadata (aligned up to the pool's cluster size). For example, a 10MiB volume is exposed as a 10MiB device while each replica consumes 20MiB of pool space.
  • Automatic version negotiation — The cluster-wide label version is the minimum supported across all registered io-engines and only ever moves up, so the control plane never creates a label a node cannot understand.
  • Backward compatible — Existing volumes remain V1 with no migration required. Once all nodes support V2, newly created volumes transparently adopt it. Resize and snapshots preserve the volume's label version.

DiskPool Hot-Remove Detection for File-Based Devices

A periodic DiskPool handle rescanner now detects hot-removed disks and refreshes disk sizes for AIO/uring devices, bringing them to parity with NVMe devices. The rescan interval is configurable.

Selective Pool Error Reset

The pool clear-errors API now supports selectively resetting specific error states, available through the kubectl mayastor plugin.

Enhancements

TLS Hardening and Certificate Auto-Reload

TLS certificates are now hot-reloaded on rotation without a restart, TLS discovery is enabled by default, plain HTTP on the REST service is restricted to health probes only, and the Helm chart exposes TLS configuration for the public API.

Richer Replica Metrics

Replica metrics now include poolname and pooluuid labels for easier correlation with the hosting pools.

Improved Node/Pool Purge Workflow

The purge workflow now displays the affected volumes and snapshots before any data-loss operation, and --show-impact never triggers DiskPool custom resource cleanup.

Asynchronous Bdev Destruction

Block device destruction in the io-engine is now asynchronous, improving responsiveness of pool and replica teardown.

Helm Chart Improvements

  • The snapshot-controller can now be disabled.
  • Additional environment variables are exposed for component customization.
  • api-rest health probes use an initialDelaySeconds of 1 for faster readiness.
  • Loki maximum ingestion limits have been increased.

RDMA Capability Detection

The CSI node now checks the nvme_rdma kernel module for RDMA capability, and node transport capabilities are propagated through registration.

Issues Resolved

Nexus Size Miscalculation

Resolved an issue where the nexus block device size could be off by one block; volume sizing now accounts for label metadata so usable capacity always meets the requested size.

Volume Resize with Undersized Replicas

Resolved an issue where a nexus resize could repeatedly fail when replicas were undersized; undersized replicas are now resized first.

Pool Capacity Accounting for Snapshot Clones

Resolved an issue where pool capacity tallying did not account for snapshot clone creation, which could lead to over-commitment of pool space.

Readiness Probe Startup Race

Resolved an issue where a readiness failure could be cached before the first successful probe, causing api-rest to be incorrectly reported as not ready.

Device Handling on I/O Submission Errors

Resolved an issue where devices could be incorrectly detached on transient I/O submission errors.

Nexus Shutdown and Unshare Reliability

Resolved issues where frozen I/Os from a shutdown nexus were not aborted on unshare, and where child device closure was not correctly awaited.

Logical Volume Race During Pool Listing

Resolved a race condition where listing pools while replicas were being destroyed could cause failures.

SPDK Fixes

Pulled in updated SPDK with fixes for a null pointer dereference and IPv6 transport handling, and resolved an interrupt-mode reactor teardown issue.

Node Rebuild Count Accuracy

Resolved an issue where the node rebuild count was not refreshed on single nexus updates, improving rebuild throttling accuracy.

Testing

Mayastor is subject to extensive unit, component and system-level testing throughout the development and release cycle. Resources for system-level (E2E) testing are currently provided by DataCore Software.

At this time, personnel and hardware resource limitations constrain testing by the maintainers to linux builds on x86. This reflects the primary use-case which the maintainers are currently targeting with the OpenEBS Mayastor project. Therefore, the use of Mayastor with other operating systems and/or architectures, if even possible, should be considered serendipitous and wholly experimental.

This release has been subject to End-to-End testing under Ubuntu 22.04 LTS (kernel: ubuntu-6.8.0-90-generic)

  • Tested k8s versions
    • 1.32.10
    • 1.35.6

Known Behavioural Limitations

  • The IO engine fully utilizes all allocated CPU cores regardless of the actual I/O load, as it runs a poller at full speed.

NOTE: An experimental implementation of interrupt mode support is available.

  • Each DiskPool is limited to a single block device and cannot span across multiple devices.
  • The data-at-rest encryption feature does not support rotation of Data Encryption Keys (DEKs).

Known Issues

  • If a node hosting a pod reboots and the pod lacks a controller (like a Deployment), the volume unpublish operation may not trigger. This causes the control plane to assume the volume is still in use, which leads to fsfreeze operation failure during snapshots.
    Workaround: Recreate or rebind the pod to ensure proper volume mounting.
  • Large pools (Example: 10–20TiB) may take a while during recovery after a dirty shutdown of the node hosting the io-engine.

New Contributors

Full Changelog:
v2.11.1...v2.12.0
openebs/mayastor-control-plane@v2.11.1...v2.12.0
openebs/mayastor-extensions@v2.11.1...v2.12.0