aboutsummaryrefslogtreecommitdiff
path: root/utils/uvol
Commit message (Collapse)AuthorAge
* uvol: switch to /sys/class/ubiDaniel Golle2023-02-15
| | | | | | | | | Instead of /sys/devices/virtual/ubi which will no longer be available in future kernels, switch to /sys/class/ubi. While at it fix unrelated arithmetic syntax error by guarding the affected expression to not run on an empty string. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: add missing quoteDaniel Golle2023-01-25
| | | | | | | Add missing quote which broke the autopart script. Fixes: b1edbe349 ("uvol: fix regression in handling fractional megabytes free") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: fix regression in handling fractional megabytes freePhilip Prindeville2023-01-23
| | | | | | Also, fix off-by-one issue when computing free size. Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
* uvol: fix autopart handling double/float numberDaniel Golle2022-08-14
| | | | | | | Consider only integer part of free space in megabytes when deciding the boundaries of the to be created partition. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: update to version 0.8Daniel Golle2022-04-15
| | | | | | | | Bump version to reset PKG_RELEASE counter. Add missing dependency on ucode-mod-math which is needed for the mkdtemp() implementation used to format UBI volumes. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: unbreak if LVM is installed but unusedDaniel Golle2022-04-13
| | | | | | | Fix and simplify console output, make sure uvol doesn't break in case of LVM being installed but not used. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: yet another small compatibility hackDaniel Golle2022-04-04
| | | | | | | Shift ARGV until actual parameters start to compensate for older versions of ucode passing the complete cmdline. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: fixes and adapt to in-tree ucodeDaniel Golle2022-04-04
| | | | | | | | | Don't use features which are not yet present in the version of ucode currently shipped with OpenWrt (such as `fs.access()` or assuming raw mode by default). Fix syntax error in main executable. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: unbreak build and adapt to updated ucodeDaniel Golle2022-03-31
| | | | | | | | | | | | * Fix build which was broken by a wrong path in the Makefile. Adapt to ucode commit 4618807 ("main: rework CLI frontend"): * ucode now no longer needs the {% %} around each code file, remove that and safe one level of indentation. * ARGV now no longer includes ucode executable and script itself Fixes: 6350c7bc6 ("uvol: replace with re-write in ucode") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: replace with re-write in ucodeDaniel Golle2022-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | Replace previous Shell draft-quality implementation of uvol with a rewrite in ucode[1]. While the new code is slightly larger, it performs much better (as we no longer fork() for parsing strings like in Shell with grep, sed and friends). Before: time uvol list -j [ ... ] real 0m 0.82s user 0m 0.13s sys 0m 0.10s After: time uvol list -j [ ... ] real 0m 0.47s user 0m 0.05s sys 0m 0.05s [1]: https://github.com/jow-/ucode Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: fix list output on LVM backendDaniel Golle2022-03-22
| | | | | | | | 'uvol list' was broken when introducing support for the hidden volumes. Fix that by not using 'continue' keyword to break the loop (as that lead to skipping 'json_select ..') and using if-clause instead. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: clean up paths and fix delayed startupDaniel Golle2022-02-18
| | | | | | | | | | | | | | * Winchester discs can take a long time to spin up which results in blockd also taking a while to complete to start. * Make sure uvol only gets started once blockd is ready. * Clean up paths (use '/tmp/run/uvol' everywhere instead of relying on the '/var' -> '/tmp' symlink) * Create 'apk' folder when initializing .meta volume. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: call umount instead of using 'block umount'Daniel Golle2022-02-13
| | | | | | | | | Calling 'block umount' results in *all* devices listed in /etc/config/fstab being unmounted. Just call 'umount /dev/$devname' directly instead as that has the desired effect. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: update to 0.6Daniel Golle2021-12-20
| | | | | | | | | | | | | | | | | | * auto-created meta volume Automatically create volume '.meta' sized 0.01% of the total space managed by uvol, the minimum size being 4 MiB. This volume should be used to keep metadata about stored volumes, such as container runtime configuration (in /var/run/uvol/.meta/uxc) or the database of installed container packages. * configurable LVM volume group Allow setting volume group to be used by uvol using UCI. This is useful on devices which do not boot off the device which should be used for uvol and hence cannot make use of autopart and physical volume detection based on kernel cmdline. Use option vg_name in uvol section of fstab UCI config package. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: update to version 0.5Daniel Golle2021-09-15
| | | | | | Adds '-j' option for 'list' command to generate JSON output. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: move uxc persistent config volume to /var/run/uxcDaniel Golle2021-08-30
| | | | | | | | As /var/state is used for UCI state, move persistent config for uxc from /var/state/uxc to /var/run/uxc. uxc itself has already been changed to look for it there. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: update to version 0.4Daniel Golle2021-08-15
| | | | | | | | | | Create UCI fstab mount sections for existing volumes on firstboot. Introduce special handling for volumes with non-[:alnum:] prefix: - do not create UCI sections for these 'hidden' volumes - create UCI section for '.uxc' special volume with target /var/state/uxc to be used for uxc config. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: lvm: make 'up' call reliableDaniel Golle2021-07-30
| | | | | | | | Changing a volume right after activation doesn't work well due to some caching or race-condition issue. Perform activation as last lvchange operation as a work-around. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: ubi: fix bring-up of ro volumesDaniel Golle2021-07-28
| | | | | | Fix bring-up of ro volumes on creation and on boot. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: update to version 0.3Daniel Golle2021-07-25
| | | | | | | | | | | * genrate UCI fstab configs for each volume before first 'up' * remove UCI section on volume remove * use autofs automounter for read-only volumes * try umount on 'down' * emulate hotplug events for UBI volume up/down * more robust error paths Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: adapt to changes in coreDaniel Golle2021-07-24
| | | | | | | | | * lvm: remove left-over ubus events * lvm: resolve /dev/dm-* device name As block-mount and blockd now use /dev/dm-* names, let uvol also return those device names. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: general clean upDaniel Golle2021-07-16
| | | | | | | | | * make sure new volumes are in state 'down' until explicitely requested to transition to 'up' state. Useful for additional verification steps after writing a read-only volume. * remove unused ubus events as blockd does that much better now Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* autopart: work on MBR/DOS partitioned disksDaniel Golle2021-07-10
| | | | | | | | Using GPT/UUID parition table is not always a possible choice. Add support for MBR/DOS partitioned disks to make autopart work on legacy targets like mt7623. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: fix units with lvm backendDaniel Golle2021-07-06
| | | | | | | | Free and total bytes are now properly returned as bytes by LVM2 as requested. No longer multiply values. Fix parameter order of 'create' command in usage output while at it. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: try to be more shellcheck compliant, fix LVM vol-upDaniel Golle2021-06-13
| | | | | | | | | * quotes around all variables * always use 'read -r' instead of 'read' * some more minor shellcheck fixes * reorder LVM ops for 'up' call to allow it to succeed Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: fix emmitting ubus event when removing UBI volumeDaniel Golle2021-04-26
| | | | | | | In case a volume which is down is removed, no ubus event needs to be fired. Don't try. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: improve autopart and lvm scripts, fix F2FS volumesDaniel Golle2021-04-21
| | | | | | | | | | | | Use sfdisk to get GPT partition by name as partition names are not known by the kernel if added via partx. Make sure physical volume names are unique, if possible correlate with the disks serial number and/or card's cid. mkf2fs apparently returns 134 even in case format succeeded, so don't fail in that case (this fixes rw volumes large enough for F2FS to be selected by the lvm scripts of uvol). Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: emmit ubus events and bring up volumes on bootDaniel Golle2021-04-18
| | | | | | | | | Emmit ubus events when volumes come up/down. Make sure volume state is always well defined by introducing additional state 'write-prepare' (wp) during mkfs. Add init scripts to bring up volumes at boot. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: make volume creation atomicDaniel Golle2021-04-15
| | | | | | | | | | Make sure filesystem is ready when volume becomes available. Use 'write-once' as initial state for read-only volumes, only allow writing to volumes in that state and transision to 'read-only' once write has completed. Also fix a typo which prevented 'list' command from working with LVM. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: some improvementsDaniel Golle2021-04-11
| | | | | | | | * use lvm --reportformat json * add 'list' and 'align' commands * add help output Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uvol: add new packageDaniel Golle2021-04-10
uvol is a wrapper-script which allows automated handling of storage volumes. uvol currently comes with backend support for LVM2 and UBI, covering practically all options for storage large enough to be managed (NAND, SPI-NAND, eMMC, SATA, NVME, virtio-blk, ...). Signed-off-by: Daniel Golle <daniel@makrotopia.org>