Releases: VogelsDev/openmediavault-oar
Release list
openmediavault-oar 8.1.0~beta6-1
Follow-up to beta5. This is the first release validated by running the full end-to-end loopback lifecycle (create → mount → grow → finalize → degrade → repair → scrub → delete) on real storage — which is how the grow and scrub bugs below were found.
Fixes
- Grow now works. The pre-reshape step ran
mdadm --grow <md> --consistency-policy=bitmap, which mdadm rejects outright, so growing a pool always failed. The kernel does refuse to reshape a PPL array, so PPL is now cleared with--consistency-policy=resyncbefore the reshape and restored (or fell back to an internal write-intent bitmap) at finalization. --jsonoutput is now pure. Mutating commands streamed progress to stdout, which corrupted the JSON the RPC parses — most visibly breaking Scrub launched from the web UI. Progress now goes to stderr; only the JSON result is on stdout. The RPC still merges stderr for its streaming progress dialog.- Delete is now label-independent. It derives the arrays from the volume group's PVs and their members from
/proc/mdstat, so a pool whose GPT labels are missing or wrong (e.g. one created before beta5) is fully torn down — arrays stopped, superblocks zeroed, disks wiped — instead of leaving an assembled array behind. A pre-beta5 pool can therefore just be deleted and recreated. - Pool names capped at 24 characters. The GPT partition-name field is 36 UTF-16 units and the
oar@<pool>@t<NN>label adds 8 chars of framing; longer names were silently truncated by sgdisk. - The shipped
e2e-loopback.shharness itself is fixed (it echoed a banner to stdout that corrupted its own captured JSON — it had never run to completion before).
Docs
- Remove a disk's previous filesystem via Storage → File Systems before adding it to a pool, to avoid a stale
/srv/dev-disk-by-uuid-*mount-point directory being left behind.
Install:
wget https://github.com/carbrf/openmediavault-oar/releases/download/v8.1.0-beta6/openmediavault-oar_8.1.0.beta6-1_all.deb
sudo apt-get install ./openmediavault-oar_8.1.0.beta6-1_all.debopenmediavault-oar 8.1.0~beta5-1
Critical fix — upgrade immediately if you have a pool created by beta1-beta4.
sgdisk --change-name=<num>:<name> splits its argument on every colon in the string, not just the one separating the partition number from the name. The plugin's GPT partition label format, oar:<pool>:t<NN>, was being silently truncated by real sgdisk to just oar on every disk — verified against GPT fdisk 1.0.9 (Debian 12/bookworm). This meant partlabel-based tier/disk discovery never worked against real hardware for any pool created by this plugin: status/detail showed the pool online but with empty disks/tiers lists, and grow/replace/scrub could not see any pool member. Unit tests never caught this because they exercise the Python layout model directly and never invoke real sgdisk.
Fix: the label separator is now @ instead of : — oar@<pool>@t<NN>. Verified that every other character survives sgdisk --change-name intact, including a live relabel of an already-assembled, in-use RAID member partition (blkid/lsblk pick it up immediately — no downtime, no resync, no data risk; only partition boundary changes require a kernel rescan, not the name field).
If you created a pool with beta1-beta4, its member partitions need a one-time relabel. For each member device, find its tier index from mdadm --detail <array> (Name : host:<pool>-t<NN>), then:
sudo sgdisk --change-name=<partnum>:oar@<pool>@t<NN> <disk>Example, for a pool named Pool, tier 00, member /dev/sdc partition 1:
sudo sgdisk --change-name=1:oar@Pool@t00 /dev/sdcRepeat for every member partition of every tier. This is metadata-only (no data touched); omv-oar status will show the correct disks/tiers immediately after.
Newly created and grown pools are unaffected once you're on beta5.
Install:
wget https://github.com/carbrf/openmediavault-oar/releases/download/v8.1.0-beta5/openmediavault-oar_8.1.0.beta5-1_all.deb
sudo apt-get install ./openmediavault-oar_8.1.0.beta5-1_all.debopenmediavault-oar 8.1.0~beta4-1
Beta release for testing. Changes since v8.1.0-beta1:
Reliability
- Replace/repair now reaps the retired disk: after a hot-replace or a repair, background finalization removes the old disk's stale array members, zeroes their superblocks and clears the OAR partition labels, so pool discovery no longer double-counts the replaced disk.
- Never leave a RAID5 tier without write-hole protection: if re-enabling PPL after a grow fails, an internal bitmap is now re-added as a fallback instead of leaving the array unprotected.
- Serialize pool finalization: a per-pool lock ensures the boot-time unit, the per-pool unit and the manual RPC never race on the same pool.
Removed
- Dropped F2FS support. f2fs cannot be grown online, so finalize failed on the (mounted) pool a grow leaves behind and wedged it in the pending-finalize state. Supported file systems are now BTRFS, EXT4, XFS and JFS.
Packaging
- Systemd units ship from
/usr/lib/systemd/systemand are enabled with adaemon-reloadfrom the package maintainer scripts, so the on-demand finalize unit is always visible without a reboot. - Python modules are packaged with dh-python: bytecode is compiled on the target at install time and no stale
__pycache__is shipped. - Standards-Version bumped to 4.6.2; documented
openmediavaultdependency aligned withdebian/control.
UI/RPC
- Pool status now reports the mount point; the UI blocks pool deletion while the filesystem is mounted, not only while it is referenced by an fstab entry.
Install:
wget https://github.com/carbrf/openmediavault-oar/releases/download/v8.1.0-beta4/openmediavault-oar_8.1.0.beta4-1_all.deb
sudo apt-get install ./openmediavault-oar_8.1.0.beta4-1_all.debopenmediavault-oar 8.1.0~beta1-1
Beta release for testing. Install:
wget https://github.com/carbrf/openmediavault-oar/releases/download/v8.1.0-beta1/openmediavault-oar_8.1.0~beta1-1_all.deb
sudo apt-get install ./openmediavault-oar_8.1.0~beta1-1_all.deb
Changes from v8.0.0-2: BTRFS uppercase label in create form, version bumped to indicate beta status.