90lvm/lvm_scan.sh: use "--partial" to force assembly incomplete VGs
authorHarald Hoyer <harald@redhat.com>
Fri, 5 Aug 2011 11:05:21 +0000 (13:05 +0200)
committerHarald Hoyer <harald@redhat.com>
Thu, 11 Aug 2011 12:27:26 +0000 (14:27 +0200)
If our internal loop counter is bigger than half of the maximum
count, try to assemble lvm device partially with the "--partial"
option.

https://bugzilla.redhat.com/show_bug.cgi?id=723548

modules.d/90lvm/64-lvm.rules
modules.d/90lvm/lvm_scan.sh

index b2af312..487d08a 100644 (file)
@@ -13,6 +13,7 @@ PROGRAM=="/bin/sh -c 'for i in $sys/$devpath/holders/dm-[0-9]*; do [ -e $$i ] &&
     GOTO="lvm_end"
 
 RUN+="/sbin/initqueue --settled --onetime --unique /sbin/lvm_scan"
+RUN+="/sbin/initqueue --timeout --onetime --unique /sbin/lvm_scan --partial"
 RUN+="/bin/sh -c '>/tmp/.lvm_scan-%k;'"
 
 LABEL="lvm_end"
index 96ec4f8..3c0094e 100755 (executable)
@@ -4,6 +4,7 @@
 
 # run lvm scan if udev has settled
 
+extraargs="$@"
 type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
 
 VGS=$(getargs rd.lvm.vg rd_LVM_VG=)
@@ -71,8 +72,11 @@ sub=${sub%%\(*};
 check_lvm_ver 2 2 57 $maj $min $sub && \
     nopoll="--poll n"
 
-check_lvm_ver 2 2 65 $maj $min $sub && \
-    sysinit=" --sysinit "
+if check_lvm_ver 2 2 65 $maj $min $sub; then
+    sysinit=" --sysinit $extraargs"
+fi
+
+unset extraargs
 
 export LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES=1