aboutsummaryrefslogtreecommitdiff
path: root/utils/uvol/files/ubi.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/uvol/files/ubi.sh')
-rw-r--r--utils/uvol/files/ubi.sh50
1 files changed, 35 insertions, 15 deletions
diff --git a/utils/uvol/files/ubi.sh b/utils/uvol/files/ubi.sh
index 3eb79adb9..9ddda54da 100644
--- a/utils/uvol/files/ubi.sh
+++ b/utils/uvol/files/ubi.sh
@@ -17,6 +17,8 @@ ubidev=$(ls -1 /sys/devices/virtual/ubi | head -n 1)
read -r ebsize < "/sys/devices/virtual/ubi/${ubidev}/eraseblock_size"
+. /lib/functions/uvol.sh
+
freebytes() {
read -r availeb < "/sys/devices/virtual/ubi/${ubidev}/avail_eraseblocks"
echo $((availeb * ebsize))
@@ -87,9 +89,10 @@ getuserdev() {
mkubifs() {
local tmp_mp
tmp_mp="$(mktemp -d)"
- mount -t ubifs "$1" "$tmp_mp"
- umount "$tmp_mp"
- rmdir "$tmp_mp"
+ mount -t ubifs "$1" "$tmp_mp" || return $?
+ umount "$tmp_mp" || return $?
+ rmdir "$tmp_mp" || return $?
+ return 0
}
createvol() {
@@ -107,22 +110,33 @@ createvol() {
return 22
;;
esac
- ubimkvol "/dev/$ubidev" -N "uvol-$mode-$1" -s "$2"
+ ubimkvol "/dev/$ubidev" -N "uvol-$mode-$1" -s "$2" || return $?
ret=$?
[ $ret -eq 0 ] || return $ret
voldev="$(getdev "$@")"
- ubiupdatevol -t "/dev/$voldev"
+ ubiupdatevol -t "/dev/$voldev" || return $?
[ "$mode" = "wp" ] || return 0
- mkubifs "/dev/$voldev"
- ubirename "/dev/$ubidev" "uvol-wp-$1" "uvol-wd-$1"
+ mkubifs "/dev/$voldev" || return $?
+ uvol_uci_add "$1" "/dev/$voldev" "rw"
+ ubirename "/dev/$ubidev" "uvol-wp-$1" "uvol-wd-$1" || return $?
}
removevol() {
- local voldev
+ local voldev volnum
voldev=$(getdev "$@")
[ "$voldev" ] || return 2
- local volnum="${voldev#${ubidev}_}"
+ vol_is_mode "$voldev" rw && return 16
+ vol_is_mode "$voldev" ro && return 16
+ volnum="${voldev#${ubidev}_}"
ubirmvol "/dev/$ubidev" -n "$volnum" || return $?
+ uvol_uci_remove "$1"
+ uvol_uci_commit "$1"
+}
+
+block_hotplug() {
+ export ACTION="$1"
+ export DEVNAME="$2"
+ /sbin/block hotplug
}
activatevol() {
@@ -133,12 +147,15 @@ activatevol() {
vol_is_mode "$voldev" ro && return 0
vol_is_mode "$voldev" wo && return 22
vol_is_mode "$voldev" wp && return 16
+ uvol_uci_commit "$1"
if vol_is_mode "$voldev" rd; then
- ubirename "/dev/$ubidev" "uvol-rd-$1" "uvol-ro-$1"
- ubiblock --create "/dev/$voldev"
+ ubirename "/dev/$ubidev" "uvol-rd-$1" "uvol-ro-$1" || return $?
+ ubiblock --create "/dev/$voldev" || return $?
+ block_hotplug add "ubiblock${voldev:3}"
return 0
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" || return $?
+ block_hotplug add "$voldev"
return 0
fi
}
@@ -152,12 +169,14 @@ disactivatevol() {
vol_is_mode "$voldev" wo && return 22
vol_is_mode "$voldev" wp && return 16
if vol_is_mode "$voldev" ro; then
- [ -e "/dev/ubiblock${voldev:3}" ] || return 0
- ubiblock --remove "/dev/$voldev" || return $?
+ /sbin/block umount "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"
ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $?
+ block_hotplug remove "$voldev"
return 0
fi
}
@@ -169,6 +188,7 @@ updatevol() {
[ "$2" ] || return 22
vol_is_mode "$voldev" wo || return 22
ubiupdatevol -s "$2" "/dev/$voldev" -
+ uvol_uci_add "$1" "/dev/$voldev" "ro"
ubirename "/dev/$ubidev" "uvol-wo-$1" "uvol-rd-$1"
}
@@ -199,7 +219,7 @@ bootvols() {
case "$volname" in
uvol-ro-*)
voldev="/dev/ubiblock${voldev:3}"
- ubiblock --create "/dev/$voldev"
+ ubiblock --create "/dev/$voldev" || return $?
;;
*)
continue