[lvm-devel] master - blkdeactivate: fix endless loop if device(s) given and unable to umount/deactivate

Peter Rajnoha prajnoha at fedoraproject.org
Tue Oct 22 14:25:29 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=b109bfc1ef7e20a72170a83dc9244c8b21ea658c
Commit:        b109bfc1ef7e20a72170a83dc9244c8b21ea658c
Parent:        c3f44a0c66abf8916bebafe2de9da30132cea9e2
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Tue Oct 22 16:10:20 2013 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Tue Oct 22 16:24:39 2013 +0200

blkdeactivate: fix endless loop if device(s) given and unable to umount/deactivate

The blkdeactivate script iterates over the list of devices if they're
given as an argument and it tries to umount/deactivate them one by one.

This iteration failed to proceed if any of the umount/deactivation
was unsuccessful - there was a missing "shift" call to move to the
next argument (device) for processing. As a result of this, the same
device was tried again and again, causing an endless loop, never
proceeding to the next device given.
---
 WHATS_NEW                   |    1 +
 scripts/blkdeactivate.sh.in |    5 ++++-
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 2d7792b..c2e511f 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.104
 ===================================
+  Fix endless loop for blkdeactivte <device>... if unable to umount/deactivate.
   Add dev-block-<major>:<minor>.device systemd alias for complete PV tracking.
   Use major:minor as short form of --major and --minor arg for pvscan --cache.
   Remove 2>/dev/null from three lvm commands executed by vgimportclone.
diff --git a/scripts/blkdeactivate.sh.in b/scripts/blkdeactivate.sh.in
index b6d0117..f454154 100644
--- a/scripts/blkdeactivate.sh.in
+++ b/scripts/blkdeactivate.sh.in
@@ -323,7 +323,10 @@ deactivate_all() {
 				$LSBLK_READ <<< "`$LSBLK --nodeps $1`"
 
 				# check if the device is not on the skip list already
-				test -z ${SKIP_DEVICE_LIST["$kname"]} || continue
+				test -z ${SKIP_DEVICE_LIST["$kname"]} || {
+					shift
+					continue
+				}
 
 				deactivate
 			else




More information about the lvm-devel mailing list