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
initialDelaySecondsof 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
fsfreezeoperation 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
- @cmrmahesh made their first contribution in #1991
- @susobhandey made their first contribution in #1984
- @yugchaudhari made their first contribution in #2007
- @datacore-gjanoti made their first contribution in openebs/mayastor-control-plane#1100
- @krishnag1152 made their first contribution in openebs/mayastor-extensions#916
- @aclerici38 made their first contribution in openebs/mayastor-extensions#971
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