uvol: update to latest version

Fixes: WIFI-368
Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin
2022-02-14 16:48:37 +01:00
parent 9285fd2670
commit 4dcd0ad1da

View File

@@ -1,19 +1,19 @@
From 08809a60a8f2c065a38c24fcdbd69b939e5c29d9 Mon Sep 17 00:00:00 2001 From 813b09542fd13428d432e47eecd7191d1b3067fd Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org> From: John Crispin <john@phrozen.org>
Date: Fri, 13 Aug 2021 08:46:57 +0200 Date: Fri, 13 Aug 2021 08:46:57 +0200
Subject: [PATCH 24/27] uvol: backport package Subject: [PATCH 01/83] uvol: backport package
Signed-off-by: John Crispin <john@phrozen.org> Signed-off-by: John Crispin <john@phrozen.org>
--- ---
package/system/uvol/Makefile | 77 ++++ package/system/uvol/Makefile | 77 ++++
package/system/uvol/files/autopart.defaults | 127 ++++++ package/system/uvol/files/autopart.defaults | 127 ++++++
package/system/uvol/files/common.sh | 83 ++++ package/system/uvol/files/common.sh | 83 ++++
package/system/uvol/files/lvm.sh | 435 ++++++++++++++++++++ package/system/uvol/files/lvm.sh | 459 ++++++++++++++++++++
package/system/uvol/files/ubi.sh | 337 +++++++++++++++ package/system/uvol/files/ubi.sh | 358 +++++++++++++++
package/system/uvol/files/uvol | 52 +++ package/system/uvol/files/uvol | 52 +++
package/system/uvol/files/uvol.defaults | 3 + package/system/uvol/files/uvol.defaults | 17 +
package/system/uvol/files/uvol.init | 23 ++ package/system/uvol/files/uvol.init | 23 +
8 files changed, 1137 insertions(+) 8 files changed, 1196 insertions(+)
create mode 100644 package/system/uvol/Makefile create mode 100644 package/system/uvol/Makefile
create mode 100644 package/system/uvol/files/autopart.defaults create mode 100644 package/system/uvol/files/autopart.defaults
create mode 100644 package/system/uvol/files/common.sh create mode 100644 package/system/uvol/files/common.sh
@@ -25,14 +25,14 @@ Signed-off-by: John Crispin <john@phrozen.org>
diff --git a/package/system/uvol/Makefile b/package/system/uvol/Makefile diff --git a/package/system/uvol/Makefile b/package/system/uvol/Makefile
new file mode 100644 new file mode 100644
index 0000000000..bd70410c5e index 0000000000..6583e6e756
--- /dev/null --- /dev/null
+++ b/package/system/uvol/Makefile +++ b/package/system/uvol/Makefile
@@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
+include $(TOPDIR)/rules.mk +include $(TOPDIR)/rules.mk
+ +
+PKG_NAME:=uvol +PKG_NAME:=uvol
+PKG_VERSION:=0.4 +PKG_VERSION:=0.6
+PKG_RELEASE:=$(AUTORELEASE) +PKG_RELEASE:=$(AUTORELEASE)
+ +
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org> +PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
@@ -45,7 +45,7 @@ index 0000000000..bd70410c5e
+ CATEGORY:=Utilities + CATEGORY:=Utilities
+ SUBMENU:=Disc + SUBMENU:=Disc
+ TITLE:=Automatically initialize LVM partition + TITLE:=Automatically initialize LVM partition
+ DEPENDS:=+partx-utils +sfdisk + DEPENDS:=+lvm2 +partx-utils +sfdisk
+ PKGARCH=all + PKGARCH=all
+endef +endef
+ +
@@ -101,7 +101,7 @@ index 0000000000..bd70410c5e
+ $(INSTALL_BIN) ./files/ubi.sh $(1)/usr/libexec/uvol/20-ubi.sh + $(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/lvm.sh $(1)/usr/libexec/uvol/50-lvm.sh
+ $(INSTALL_BIN) ./files/uvol $(1)/usr/sbin + $(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 +endef
+ +
+$(eval $(call BuildPackage,autopart)) +$(eval $(call BuildPackage,autopart))
@@ -241,7 +241,7 @@ index 0000000000..870cd44156
+exit 0 +exit 0
diff --git a/package/system/uvol/files/common.sh b/package/system/uvol/files/common.sh diff --git a/package/system/uvol/files/common.sh b/package/system/uvol/files/common.sh
new file mode 100644 new file mode 100644
index 0000000000..e3b554e180 index 0000000000..8306477720
--- /dev/null --- /dev/null
+++ b/package/system/uvol/files/common.sh +++ b/package/system/uvol/files/common.sh
@@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
@@ -270,8 +270,8 @@ index 0000000000..e3b554e180
+ uuid="${uuid:5}" + uuid="${uuid:5}"
+ +
+ case "$uciname" in + case "$uciname" in
+ "_uxc") + "_meta")
+ target="/var/state/uxc" + target="/var/run/uvol/.meta"
+ ;; + ;;
+ "_"*) + "_"*)
+ return 1 + return 1
@@ -297,7 +297,7 @@ index 0000000000..e3b554e180
+ local volname="$1" + local volname="$1"
+ local uciname + local uciname
+ +
+ uciname="${volname//-/_}" + uciname="${volname//[-.]/_}"
+ uciname="${uciname//[!([:alnum:]_)]}" + uciname="${uciname//[!([:alnum:]_)]}"
+ if [ -e "${UCI_SPOOLDIR}/add-$1" ]; then + if [ -e "${UCI_SPOOLDIR}/add-$1" ]; then
+ rm "${UCI_SPOOLDIR}/add-$1" + rm "${UCI_SPOOLDIR}/add-$1"
@@ -330,10 +330,10 @@ index 0000000000..e3b554e180
+} +}
diff --git a/package/system/uvol/files/lvm.sh b/package/system/uvol/files/lvm.sh diff --git a/package/system/uvol/files/lvm.sh b/package/system/uvol/files/lvm.sh
new file mode 100644 new file mode 100644
index 0000000000..95281194ba index 0000000000..c7e93f13f2
--- /dev/null --- /dev/null
+++ b/package/system/uvol/files/lvm.sh +++ b/package/system/uvol/files/lvm.sh
@@ -0,0 +1,435 @@ @@ -0,0 +1,459 @@
+#!/bin/sh +#!/bin/sh
+ +
+cmd="$1" +cmd="$1"
@@ -398,8 +398,12 @@ index 0000000000..95281194ba
+ +
+vg_name= +vg_name=
+exportpv() { +exportpv() {
+ local reports rep pv pvs
+ vg_name= + 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_init
+ json_load "$(pvs -o vg_name -S "pv_name=~^/dev/$rootdev.*\$")" + json_load "$(pvs -o vg_name -S "pv_name=~^/dev/$rootdev.*\$")"
+ json_select report + json_select report
@@ -488,7 +492,7 @@ index 0000000000..95281194ba
+ for dms in /sys/devices/virtual/block/dm-* ; do + for dms in /sys/devices/virtual/block/dm-* ; do
+ [ "$dms" = "/sys/devices/virtual/block/dm-*" ] && break + [ "$dms" = "/sys/devices/virtual/block/dm-*" ] && break
+ read -r dm_name < "$dms/dm/name" + 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 + done
+} +}
+ +
@@ -534,7 +538,7 @@ index 0000000000..95281194ba
+ *) + *)
+ [ "$lv_active" = "active" ] || return 0 + [ "$lv_active" = "active" ] || return 0
+ devname="$(getdev "$1")" + devname="$(getdev "$1")"
+ [ "$devname" ] && /sbin/block umount "$devname" + [ "$devname" ] && umount "/dev/$devname"
+ lvm_cmd lvchange -a n "$lv_full_name" + lvm_cmd lvchange -a n "$lv_full_name"
+ lvm_cmd lvchange -k y "$lv_full_name" || return $? + lvm_cmd lvchange -k y "$lv_full_name" || return $?
+ return 0 + return 0
@@ -631,7 +635,12 @@ index 0000000000..95281194ba
+} +}
+ +
+listvols() { +listvols() {
+ local reports rep lv lvs lv_name lv_size lv_mode volname + local reports rep lv lvs lv_name lv_size lv_mode volname json_output json_notfirst
+ if [ "$1" = "-j" ]; then
+ json_output=1
+ echo "["
+ shift
+ fi
+ volname=${1:-.*} + volname=${1:-.*}
+ json_init + json_init
+ json_load "$(lvs -o lv_name,lv_size -S "lv_name=~^[rw][owp]_$volname\$ && vg_name=$vg_name")" + json_load "$(lvs -o lv_name,lv_size -S "lv_name=~^[rw][owp]_$volname\$ && vg_name=$vg_name")"
@@ -647,17 +656,32 @@ index 0000000000..95281194ba
+ lv_mode="${lv_name:0:2}" + lv_mode="${lv_name:0:2}"
+ lv_name="${lv_name:3}" + lv_name="${lv_name:3}"
+ lv_size=${lv_size%B} + lv_size=${lv_size%B}
+ echo "$lv_name $lv_mode $lv_size" + [ "${lv_name:0:1}" = "." ] && continue
+ if [ "$json_output" = "1" ]; then
+ [ "$json_notfirst" = "1" ] && echo ","
+ echo -e "\t{"
+ echo -e "\t\t\"name\": \"$lv_name\","
+ echo -e "\t\t\"mode\": \"$lv_mode\","
+ echo -e "\t\t\"size\": $lv_size"
+ echo -n -e "\t}"
+ json_notfirst=1
+ else
+ echo "$lv_name $lv_mode $lv_size"
+ fi
+ json_select .. + json_select ..
+ done + done
+ json_select .. + json_select ..
+ break + break
+ done + done
+
+ if [ "$json_output" = "1" ]; then
+ [ "$json_notfirst" = "1" ] && echo
+ echo "]"
+ fi
+} +}
+ +
+
+detect() { +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="" + local temp_up=""
+ +
+ json_init + json_init
@@ -771,10 +795,10 @@ index 0000000000..95281194ba
+esac +esac
diff --git a/package/system/uvol/files/ubi.sh b/package/system/uvol/files/ubi.sh diff --git a/package/system/uvol/files/ubi.sh b/package/system/uvol/files/ubi.sh
new file mode 100644 new file mode 100644
index 0000000000..b0b363d7ed index 0000000000..7637fba682
--- /dev/null --- /dev/null
+++ b/package/system/uvol/files/ubi.sh +++ b/package/system/uvol/files/ubi.sh
@@ -0,0 +1,337 @@ @@ -0,0 +1,358 @@
+#!/bin/sh +#!/bin/sh
+ +
+cmd="$1" +cmd="$1"
@@ -945,12 +969,12 @@ index 0000000000..b0b363d7ed
+ vol_is_mode "$voldev" wo && return 22 + vol_is_mode "$voldev" wo && return 22
+ vol_is_mode "$voldev" wp && return 16 + vol_is_mode "$voldev" wp && return 16
+ if vol_is_mode "$voldev" ro; then + if vol_is_mode "$voldev" ro; then
+ /sbin/block umount "ubiblock${voldev:3}" + grep -q "^/dev/ubiblock${voldev:3}" /proc/self/mounts && umount "/dev/ubiblock${voldev:3}"
+ ubiblock --remove "/dev/$voldev" + ubiblock --remove "/dev/$voldev"
+ ubirename "/dev/$ubidev" "uvol-ro-$1" "uvol-rd-$1" || return $? + ubirename "/dev/$ubidev" "uvol-ro-$1" "uvol-rd-$1" || return $?
+ return 0 + return 0
+ elif vol_is_mode "$voldev" rw; then + elif vol_is_mode "$voldev" rw; then
+ /sbin/block umount "$voldev" + umount "/dev/$voldev"
+ ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $? + ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $?
+ block_hotplug remove "$voldev" + block_hotplug remove "$voldev"
+ return 0 + return 0
@@ -971,7 +995,12 @@ index 0000000000..b0b363d7ed
+} +}
+ +
+listvols() { +listvols() {
+ local volname volmode volsize + local volname volmode volsize json_output json_notfirst
+ if [ "$1" = "-j" ]; then
+ json_output=1
+ shift
+ echo "["
+ fi
+ for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do + for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do
+ read -r volname < "$voldir/name" + read -r volname < "$voldir/name"
+ case "$volname" in + case "$volname" in
@@ -984,8 +1013,24 @@ index 0000000000..b0b363d7ed
+ esac + esac
+ volmode="${volname:5:2}" + volmode="${volname:5:2}"
+ volname="${volname:8}" + volname="${volname:8}"
+ echo "$volname $volmode $volsize" + [ "${volname:0:1}" = "." ] && continue
+ if [ "$json_output" = "1" ]; then
+ [ "$json_notfirst" = "1" ] && echo ","
+ echo -e "\t{"
+ echo -e "\t\t\"name\": \"$volname\","
+ echo -e "\t\t\"mode\": \"$volmode\","
+ echo -e "\t\t\"size\": $volsize"
+ echo -n -e "\t}"
+ json_notfirst=1
+ else
+ echo "$volname $volmode $volsize"
+ fi
+ done + done
+
+ if [ "$json_output" = "1" ]; then
+ [ "$json_notfirst" = "1" ] && echo
+ echo "]"
+ fi
+} +}
+ +
+bootvols() { +bootvols() {
@@ -1172,13 +1217,27 @@ index 0000000000..4ecd2e165a
+flock -x /tmp/run/uvol.lock "$uvol_backend" "$@" +flock -x /tmp/run/uvol.lock "$uvol_backend" "$@"
diff --git a/package/system/uvol/files/uvol.defaults b/package/system/uvol/files/uvol.defaults diff --git a/package/system/uvol/files/uvol.defaults b/package/system/uvol/files/uvol.defaults
new file mode 100644 new file mode 100644
index 0000000000..cbd53a3e4e index 0000000000..e71135f7a8
--- /dev/null --- /dev/null
+++ b/package/system/uvol/files/uvol.defaults +++ b/package/system/uvol/files/uvol.defaults
@@ -0,0 +1,3 @@ @@ -0,0 +1,17 @@
+#!/bin/sh +#!/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
diff --git a/package/system/uvol/files/uvol.init b/package/system/uvol/files/uvol.init diff --git a/package/system/uvol/files/uvol.init b/package/system/uvol/files/uvol.init
new file mode 100644 new file mode 100644
index 0000000000..1f6e2aac08 index 0000000000..1f6e2aac08