summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Barbe <laurent@ksperis.com>2013-08-13 17:16:35 +0200
committerLaurent Barbe <laurent@ksperis.com>2013-08-13 18:06:14 +0200
commitd9cb2ead36e1338079da624e1b95e9621bfda1ef (patch)
tree82593ff62abd65efd3b19722b49bdd316667a6b0
parentb9a5664bbbb7d65f51a39d03247390911f999a48 (diff)
downloadceph-d9cb2ead36e1338079da624e1b95e9621bfda1ef.tar.gz
init-rbdmap: fix for recursive umount
Umount is not always done in the correct order. For exemple in that case : /dev/rbd1 on /myrbd /dev/rbd2 on /myrbd/.snapshots/@GMT-2013.08.09-10.14.44 rbd2 should be umounted before rbd1 Signed-off-by: Laurent Barbe <laurent@ksperis.com>
-rwxr-xr-xsrc/init-rbdmap10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/init-rbdmap b/src/init-rbdmap
index 6ea4af7624b..16d618a6c0d 100755
--- a/src/init-rbdmap
+++ b/src/init-rbdmap
@@ -62,14 +62,14 @@ do_map() {
do_unmap() {
log_daemon_msg "Stopping $DESC"
RET=0
+ # Recursive umount that depends /dev/rbd*
+ MNTDEP=$(findmnt --mtab | awk '$2 ~ /^\/dev\/rbd[0-9]*$/ {print $1}' | sort -r)
+ for MNT in $MNTDEP; do
+ umount $MNT
+ done
# Unmap all rbd device
for DEV in /dev/rbd[0-9]*; do
log_progress_msg $DEV
- # Umount before unmap
- MNTDEP=$(findmnt --mtab --source $DEV --output TARGET | sed 1,1d | sort -r)
- for MNT in $MNTDEP; do
- umount $MNT || sleep 1 && umount -l $DEV
- done
rbd unmap $DEV
[ $? -ne "0" ] && RET=1
done