uvol: update to 0.6
authorDaniel Golle <daniel@makrotopia.org>
Sun, 19 Dec 2021 23:13:58 +0000 (23:13 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 20 Dec 2021 01:42:58 +0000 (01:42 +0000)
 * 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>
utils/uvol/Makefile
utils/uvol/files/common.sh
utils/uvol/files/lvm.sh
utils/uvol/files/ubi.sh
utils/uvol/files/uvol.defaults

index e167e20d0314dc335c598041b1cbfcca13245138..6583e6e75663f3904e6cf4fa75c1ac99707bb253 100644 (file)
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uvol
-PKG_VERSION:=0.5
+PKG_VERSION:=0.6
 PKG_RELEASE:=$(AUTORELEASE)
 
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
@@ -70,7 +70,7 @@ define Package/uvol/install
        $(INSTALL_BIN) ./files/ubi.sh $(1)/usr/libexec/uvol/20-ubi.sh
        $(INSTALL_BIN) ./files/lvm.sh $(1)/usr/libexec/uvol/50-lvm.sh
        $(INSTALL_BIN) ./files/uvol $(1)/usr/sbin
-       $(INSTALL_BIN) ./files/uvol.defaults $(1)/etc/uci-defaults/90-uvol-restore-uci
+       $(INSTALL_BIN) ./files/uvol.defaults $(1)/etc/uci-defaults/90-uvol-init
 endef
 
 $(eval $(call BuildPackage,autopart))
index e26c26404b12ef990736296ef371720a6ed8fecd..8306477720f3cc3f7283988435097874f1882d3d 100644 (file)
@@ -23,8 +23,8 @@ uvol_uci_add() {
        uuid="${uuid:5}"
 
        case "$uciname" in
-               "_uxc")
-                       target="/var/run/uxc"
+               "_meta")
+                       target="/var/run/uvol/.meta"
                        ;;
                "_"*)
                        return 1
@@ -50,7 +50,7 @@ uvol_uci_remove() {
        local volname="$1"
        local uciname
 
-       uciname="${volname//-/_}"
+       uciname="${volname//[-.]/_}"
        uciname="${uciname//[!([:alnum:]_)]}"
        if [ -e "${UCI_SPOOLDIR}/add-$1" ]; then
                rm "${UCI_SPOOLDIR}/add-$1"
index 08ff8d979d510439986e4a21ae4ff32160e856f7..0639c10f1b42570fc7f2ca0fd9adbf1224e9e12c 100644 (file)
@@ -62,8 +62,12 @@ existvol() {
 
 vg_name=
 exportpv() {
-       local reports rep pv pvs
        vg_name=
+       config_load fstab
+       local uvolsect="$(config_foreach echo uvol)"
+       [ -n "$uvolsect" ] && config_get vg_name "$uvolsect" vg_name
+       [ -n "$vg_name" ] && return
+       local reports rep pv pvs
        json_init
        json_load "$(pvs -o vg_name -S "pv_name=~^/dev/$rootdev.*\$")"
        json_select report
@@ -152,7 +156,7 @@ getdev() {
        for dms in /sys/devices/virtual/block/dm-* ; do
                [ "$dms" = "/sys/devices/virtual/block/dm-*" ] && break
                read -r dm_name < "$dms/dm/name"
-               [ $(basename "$lv_dm_path") = "$dm_name" ] && echo "$(basename "$dms")"
+               [ "$(basename "$lv_dm_path")" = "$dm_name" ] && basename "$dms"
        done
 }
 
@@ -316,6 +320,7 @@ listvols() {
                        lv_mode="${lv_name:0:2}"
                        lv_name="${lv_name:3}"
                        lv_size=${lv_size%B}
+                       [ "${lv_name:0:1}" = "." ] && continue
                        if [ "$json_output" = "1" ]; then
                                [ "$json_notfirst" = "1" ] && echo ","
                                echo -e "\t{"
@@ -340,7 +345,7 @@ listvols() {
 }
 
 detect() {
-       local reports rep lv lvs lv_name lv_full_name lv_mode volname devname lv_skip_activation
+       local reports rep lv lvs lv_name lv_full_name lv_mode volname devname
        local temp_up=""
 
        json_init
index 0af34f3c0286e6d60455db675e3a5417b1e0ac37..d7593606fce0c63da0fcd1cca745575b61014ce9 100644 (file)
@@ -212,6 +212,7 @@ listvols() {
                esac
                volmode="${volname:5:2}"
                volname="${volname:8}"
+               [ "${volname:0:1}" = "." ] && continue
                if [ "$json_output" = "1" ]; then
                        [ "$json_notfirst" = "1" ] && echo ","
                                echo -e "\t{"
index cbd53a3e4e06372ca5234920f2010acae6b0efb3..e71135f7a85553cb88feaa628bc0be932c25b9af 100644 (file)
@@ -1,3 +1,17 @@
 #!/bin/sh
 
-uci -q get fstab.@uvol[0].initialized >/dev/null || uvol detect || true
+uvol_init() {
+       local metasz freesz totalsz
+       uvol detect
+       metasz="$(uvol size .meta 2>/dev/null)"
+       [ "$((metasz))" -gt 0 ] && return
+       totalsz="$(uvol total)"
+       freesz="$(uvol free)"
+       metasz="$((totalsz / 10240))"
+       [ "$metasz" -lt 4194304 ] && metasz=4194304
+       [ "$metasz" -gt "$freesz" ] && return
+       uvol create .meta "$metasz" rw
+       uvol up .meta
+}
+
+uci -q get fstab.@uvol[0].initialized >/dev/null || uvol_init