openpower-software-manager: Move ubiumount.service logic to script
The service files that manage the pnor ubi volumes and mount points are
starting to get too much logic in them. Move the logic to a shell script.
Closes openbmc/openbmc#1673
Change-Id: I6c9fb239b493eb64049fd4b8efc9be6eaf5b9b79
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios
index cbe58e1..2265275 100644
--- a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios
+++ b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios
@@ -108,6 +108,26 @@
fi
}
+umount_ubi() {
+ pnormtd="$(findmtd pnor)"
+ pnor="${pnormtd#mtd}"
+ ubidev="/dev/ubi${pnor}"
+ mountdir="/media/${name}"
+
+ if is_mounted "${name}"; then
+ umount "${mountdir}"
+ fi
+
+ vol="$(findubi "${name}")"
+ if [ -n "${vol}" ]; then
+ ubirmvol "${ubidev}" -N "${name}"
+ fi
+
+ if [ -d "${mountdir}" ]; then
+ rm -r "${mountdir}"
+ fi
+}
+
case "$1" in
ubiattach)
attach_ubi
@@ -121,6 +141,10 @@
name="$2"
mount_ubi
;;
+ ubiumount)
+ name="$2"
+ umount_ubi
+ ;;
*)
echo "Invalid argument"
exit 1
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-prsv.service b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-prsv.service
index 7dcf1b2..463714c 100644
--- a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-prsv.service
+++ b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-prsv.service
@@ -6,10 +6,4 @@
[Service]
Type=oneshot
RemainAfterExit=no
-ExecStart=/bin/sh -c 'if grep -q pnor-prsv /proc/mounts; then \
- umount /media/pnor-prsv; fi; \
- prsv_ubi=`ubinfo -d 0 -a | grep pnor-prsv`; \
- if [ ! -z "$prsv_ubi" ]; then \
- {sbindir}/ubirmvol /dev/ubi0 -N pnor-prsv; fi; \
- if [ -d "/media/pnor-prsv" ]; then \
- rm -r /media/pnor-prsv; fi;'
+ExecStart={sbindir}/obmc-flash-bios ubiumount pnor-prsv
diff --git a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service
index b272402..84fd523 100644
--- a/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service
+++ b/common/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service
@@ -6,11 +6,4 @@
[Service]
Type=oneshot
RemainAfterExit=no
-ExecStart=/bin/sh -c 'rw=pnor-rw-%i; \
- if grep -q $rw /proc/mounts; then \
- umount /media/$rw; fi; \
- rw_ubi=`ubinfo -d 0 -a | grep $rw`; \
- if [ ! -z "$rw_ubi" ]; then \
- {sbindir}/ubirmvol /dev/ubi0 -N $rw; fi; \
- if [ -d "/media/$rw" ]; then \
- rm -r /media/$rw; fi;'
+ExecStart={sbindir}/obmc-flash-bios ubiumount pnor-rw-%i