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>
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>
---
package/system/uvol/Makefile | 77 ++++
package/system/uvol/files/autopart.defaults | 127 ++++++
package/system/uvol/files/common.sh | 83 ++++
package/system/uvol/files/lvm.sh | 435 ++++++++++++++++++++
package/system/uvol/files/ubi.sh | 337 +++++++++++++++
package/system/uvol/files/lvm.sh | 459 ++++++++++++++++++++
package/system/uvol/files/ubi.sh | 358 +++++++++++++++
package/system/uvol/files/uvol | 52 +++
package/system/uvol/files/uvol.defaults | 3 +
package/system/uvol/files/uvol.init | 23 ++
8 files changed, 1137 insertions(+)
package/system/uvol/files/uvol.defaults | 17 +
package/system/uvol/files/uvol.init | 23 +
8 files changed, 1196 insertions(+)
create mode 100644 package/system/uvol/Makefile
create mode 100644 package/system/uvol/files/autopart.defaults
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
new file mode 100644
index 0000000000..bd70410c5e
index 0000000000..6583e6e756
--- /dev/null
+++ b/package/system/uvol/Makefile
@@ -0,0 +1,77 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uvol
+PKG_VERSION:=0.4
+PKG_VERSION:=0.6
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
@@ -45,7 +45,7 @@ index 0000000000..bd70410c5e
+ CATEGORY:=Utilities
+ SUBMENU:=Disc
+ TITLE:=Automatically initialize LVM partition
+ DEPENDS:=+partx-utils +sfdisk
+ DEPENDS:=+lvm2 +partx-utils +sfdisk
+ PKGARCH=all
+endef
+
@@ -101,7 +101,7 @@ index 0000000000..bd70410c5e
+ $(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))
@@ -241,7 +241,7 @@ index 0000000000..870cd44156
+exit 0
diff --git a/package/system/uvol/files/common.sh b/package/system/uvol/files/common.sh
new file mode 100644
index 0000000000..e3b554e180
index 0000000000..8306477720
--- /dev/null
+++ b/package/system/uvol/files/common.sh
@@ -0,0 +1,83 @@
@@ -270,8 +270,8 @@ index 0000000000..e3b554e180
+ uuid="${uuid:5}"
+
+ case "$uciname" in
+ "_uxc")
+ target="/var/state/uxc"
+ "_meta")
+ target="/var/run/uvol/.meta"
+ ;;
+ "_"*)
+ return 1
@@ -297,7 +297,7 @@ index 0000000000..e3b554e180
+ local volname="$1"
+ local uciname
+
+ uciname="${volname//-/_}"
+ uciname="${volname//[-.]/_}"
+ uciname="${uciname//[!([:alnum:]_)]}"
+ if [ -e "${UCI_SPOOLDIR}/add-$1" ]; then
+ 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
new file mode 100644
index 0000000000..95281194ba
index 0000000000..c7e93f13f2
--- /dev/null
+++ b/package/system/uvol/files/lvm.sh
@@ -0,0 +1,435 @@
@@ -0,0 +1,459 @@
+#!/bin/sh
+
+cmd="$1"
@@ -398,8 +398,12 @@ index 0000000000..95281194ba
+
+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
@@ -488,7 +492,7 @@ index 0000000000..95281194ba
+ 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
+}
+
@@ -534,7 +538,7 @@ index 0000000000..95281194ba
+ *)
+ [ "$lv_active" = "active" ] || return 0
+ devname="$(getdev "$1")"
+ [ "$devname" ] && /sbin/block umount "$devname"
+ [ "$devname" ] && umount "/dev/$devname"
+ lvm_cmd lvchange -a n "$lv_full_name"
+ lvm_cmd lvchange -k y "$lv_full_name" || return $?
+ return 0
@@ -631,7 +635,12 @@ index 0000000000..95281194ba
+}
+
+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:-.*}
+ json_init
+ 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_name="${lv_name:3}"
+ 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 ..
+ done
+ json_select ..
+ break
+ done
+
+ if [ "$json_output" = "1" ]; then
+ [ "$json_notfirst" = "1" ] && echo
+ echo "]"
+ fi
+}
+
+
+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
@@ -771,10 +795,10 @@ index 0000000000..95281194ba
+esac
diff --git a/package/system/uvol/files/ubi.sh b/package/system/uvol/files/ubi.sh
new file mode 100644
index 0000000000..b0b363d7ed
index 0000000000..7637fba682
--- /dev/null
+++ b/package/system/uvol/files/ubi.sh
@@ -0,0 +1,337 @@
@@ -0,0 +1,358 @@
+#!/bin/sh
+
+cmd="$1"
@@ -945,12 +969,12 @@ index 0000000000..b0b363d7ed
+ vol_is_mode "$voldev" wo && return 22
+ vol_is_mode "$voldev" wp && return 16
+ 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"
+ ubirename "/dev/$ubidev" "uvol-ro-$1" "uvol-rd-$1" || return $?
+ return 0
+ elif vol_is_mode "$voldev" rw; then
+ /sbin/block umount "$voldev"
+ umount "/dev/$voldev"
+ ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $?
+ block_hotplug remove "$voldev"
+ return 0
@@ -971,7 +995,12 @@ index 0000000000..b0b363d7ed
+}
+
+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
+ read -r volname < "$voldir/name"
+ case "$volname" in
@@ -984,8 +1013,24 @@ index 0000000000..b0b363d7ed
+ esac
+ volmode="${volname:5:2}"
+ 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
+
+ if [ "$json_output" = "1" ]; then
+ [ "$json_notfirst" = "1" ] && echo
+ echo "]"
+ fi
+}
+
+bootvols() {
@@ -1172,13 +1217,27 @@ index 0000000000..4ecd2e165a
+flock -x /tmp/run/uvol.lock "$uvol_backend" "$@"
diff --git a/package/system/uvol/files/uvol.defaults b/package/system/uvol/files/uvol.defaults
new file mode 100644
index 0000000000..cbd53a3e4e
index 0000000000..e71135f7a8
--- /dev/null
+++ b/package/system/uvol/files/uvol.defaults
@@ -0,0 +1,3 @@
@@ -0,0 +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
diff --git a/package/system/uvol/files/uvol.init b/package/system/uvol/files/uvol.init
new file mode 100644
index 0000000000..1f6e2aac08