diff --git a/utils/uvol/Makefile b/utils/uvol/Makefile index e167e20d03..6583e6e756 100644 --- a/utils/uvol/Makefile +++ b/utils/uvol/Makefile @@ -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 @@ -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)) diff --git a/utils/uvol/files/common.sh b/utils/uvol/files/common.sh index e26c26404b..8306477720 100644 --- a/utils/uvol/files/common.sh +++ b/utils/uvol/files/common.sh @@ -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" diff --git a/utils/uvol/files/lvm.sh b/utils/uvol/files/lvm.sh index 08ff8d979d..0639c10f1b 100644 --- a/utils/uvol/files/lvm.sh +++ b/utils/uvol/files/lvm.sh @@ -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 diff --git a/utils/uvol/files/ubi.sh b/utils/uvol/files/ubi.sh index 0af34f3c02..d7593606fc 100644 --- a/utils/uvol/files/ubi.sh +++ b/utils/uvol/files/ubi.sh @@ -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{" diff --git a/utils/uvol/files/uvol.defaults b/utils/uvol/files/uvol.defaults index cbd53a3e4e..e71135f7a8 100644 --- a/utils/uvol/files/uvol.defaults +++ b/utils/uvol/files/uvol.defaults @@ -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