uvol: general clean up

* 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>
This commit is contained in:
Daniel Golle 2021-07-16 22:01:26 +01:00
parent 9eb200f0d5
commit ad61196780
No known key found for this signature in database
GPG key ID: 5A8F39C31C3217CA
2 changed files with 12 additions and 27 deletions

View file

@ -239,7 +239,6 @@ createvol() {
fi fi
lvm_cmd lvrename "$vg_name" "wp_$1" "rw_$1" lvm_cmd lvrename "$vg_name" "wp_$1" "rw_$1"
exportlv "$1" exportlv "$1"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"up\", \"mode\": \"${lv_name:0:2}\", \"device\": \"$lv_dm_path\"}"
return 0 return 0
} }
@ -247,7 +246,6 @@ removevol() {
exportlv "$1" exportlv "$1"
[ "$lv_full_name" ] || return 2 [ "$lv_full_name" ] || return 2
lvm_cmd lvremove -y "$lv_full_name" lvm_cmd lvremove -y "$lv_full_name"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"down\", \"mode\": \"${lv_name:0:2}\", \"device\": \"$lv_dm_path\"}"
} }
updatevol() { updatevol() {
@ -256,11 +254,12 @@ updatevol() {
[ "$lv_size" -ge "$2" ] || return 27 [ "$lv_size" -ge "$2" ] || return 27
case "$lv_path" in case "$lv_path" in
/dev/*/wo_*) /dev/*/wo_*)
lvm_cmd lvchange -a y -p rw "$lv_full_name" lvm_cmd lvchange -p rw "$lv_full_name"
lvm_cmd lvchange -a y "$lv_full_name"
dd of="$lv_path" dd of="$lv_path"
lvm_cmd lvchange -a n "$lv_full_name"
lvm_cmd lvchange -p r "$lv_full_name" lvm_cmd lvchange -p r "$lv_full_name"
lvm_cmd lvrename "$lv_full_name" "${lv_full_name%%/*}/ro_$1" lvm_cmd lvrename "$lv_full_name" "${lv_full_name%%/*}/ro_$1"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"up\", \"mode\": \"ro\", \"device\": \"$(getdev "$@")\"}"
return 0 return 0
;; ;;
default) default)

View file

@ -114,22 +114,15 @@ createvol() {
ubiupdatevol -t "/dev/$voldev" ubiupdatevol -t "/dev/$voldev"
[ "$mode" = "wp" ] || return 0 [ "$mode" = "wp" ] || return 0
mkubifs "/dev/$voldev" mkubifs "/dev/$voldev"
ubirename "/dev/$ubidev" "uvol-wp-$1" "uvol-rw-$1" ubirename "/dev/$ubidev" "uvol-wp-$1" "uvol-wd-$1"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"up\", \"mode\": \"rw\", \"fstype\": \"ubifs\", \"device\": \"/dev/$voldev\"}"
} }
removevol() { removevol() {
local voldev evdata local voldev
voldev=$(getdev "$@") voldev=$(getdev "$@")
[ "$voldev" ] || return 2 [ "$voldev" ] || return 2
if vol_is_mode "$voldev" rw ; then
evdata="{\"name\": \"$1\", \"action\": \"down\", \"device\": \"/dev/$voldev\"}"
elif vol_is_mode "$voldev" ro && [ -e "/dev/ubiblock${voldev:3}" ]; then
evdata="{\"name\": \"$1\", \"action\": \"down\", \"device\": \"/dev/ubiblock${voldev:3}\"}"
fi
local volnum="${voldev#${ubidev}_}" local volnum="${voldev#${ubidev}_}"
ubirmvol "/dev/$ubidev" -n "$volnum" || return $? ubirmvol "/dev/$ubidev" -n "$volnum" || return $?
[ "$evdata" ] && ubus send block.volume "$evdata"
} }
activatevol() { activatevol() {
@ -137,16 +130,15 @@ activatevol() {
voldev="$(getdev "$@")" voldev="$(getdev "$@")"
[ "$voldev" ] || return 2 [ "$voldev" ] || return 2
vol_is_mode "$voldev" rw && return 0 vol_is_mode "$voldev" rw && return 0
vol_is_mode "$voldev" ro && return 0
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" rd; then
[ -e "/dev/ubiblock${voldev:3}" ] && return 0 ubirename "/dev/$ubidev" "uvol-rd-$1" "uvol-ro-$1"
ubiblock --create "/dev/$voldev" ubiblock --create "/dev/$voldev"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"up\", \"mode\": \"ro\", \"device\": \"/dev/ubiblock${voldev:3}\"}"
return 0 return 0
elif vol_is_mode "$voldev" wd; then elif vol_is_mode "$voldev" wd; then
ubirename "/dev/$ubidev" "uvol-wd-$1" "uvol-rw-$1" ubirename "/dev/$ubidev" "uvol-wd-$1" "uvol-rw-$1"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"up\", \"mode\": \"rw\", \"fstype\": \"ubifs\", \"device\": \"/dev/$voldev\"}"
return 0 return 0
fi fi
} }
@ -155,16 +147,17 @@ disactivatevol() {
local voldev local voldev
voldev="$(getdev "$@")" voldev="$(getdev "$@")"
[ "$voldev" ] || return 2 [ "$voldev" ] || return 2
vol_is_mode "$voldev" rd && return 0
vol_is_mode "$voldev" wd && return 0
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
[ -e "/dev/ubiblock${voldev:3}" ] || return 0 [ -e "/dev/ubiblock${voldev:3}" ] || return 0
ubiblock --remove "/dev/$voldev" || return $? ubiblock --remove "/dev/$voldev" || return $?
ubus send block.volume "{\"name\": \"$1\", \"action\": \"down\", \"mode\": \"ro\", \"device\": \"/dev/ubiblock${voldev:3}\"}" 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
ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $? ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $?
ubus send block.volume "{\"name\": \"$1\", \"action\": \"down\", \"mode\": \"rw\", \"device\": \"/dev/$voldev\"}"
return 0 return 0
fi fi
} }
@ -176,9 +169,7 @@ updatevol() {
[ "$2" ] || return 22 [ "$2" ] || return 22
vol_is_mode "$voldev" wo || return 22 vol_is_mode "$voldev" wo || return 22
ubiupdatevol -s "$2" "/dev/$voldev" - ubiupdatevol -s "$2" "/dev/$voldev" -
ubirename "/dev/$ubidev" "uvol-wo-$1" "uvol-ro-$1" ubirename "/dev/$ubidev" "uvol-wo-$1" "uvol-rd-$1"
ubiblock --create "/dev/$voldev"
ubus send block.volume "{\"name\": \"$1\", \"action\": \"up\", \"mode\": \"ro\", \"device\": \"/dev/ubiblock${voldev:3}\"}"
} }
listvols() { listvols() {
@ -210,17 +201,12 @@ bootvols() {
voldev="/dev/ubiblock${voldev:3}" voldev="/dev/ubiblock${voldev:3}"
ubiblock --create "/dev/$voldev" ubiblock --create "/dev/$voldev"
;; ;;
uvol-rw-*)
voldev="/dev/$voldev"
fstype="ubifs"
;;
*) *)
continue continue
;; ;;
esac esac
volmode="${volname:5:2}" volmode="${volname:5:2}"
volname="${volname:8}" volname="${volname:8}"
ubus send block.volume "{\"name\": \"$volname\", \"action\": \"up\", \"mode\": \"$volmode\",${fstype:+ \"fstype\": \"$fstype\", }\"device\": \"$voldev\"}"
done done
} }