From: Hannes Reinecke Date: Thu, 11 Dec 2014 14:46:06 +0000 (+0100) Subject: Do not call 'lvm' for non-LVM device-mapper devices X-Git-Tag: 041~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3244bf59816096377edee6f8937f16838dc1a709;p=thirdparty%2Fdracut.git Do not call 'lvm' for non-LVM device-mapper devices If a device-mapper device is not created by LVM it's pointless to call any 'lvm' programs got extract details; they'll be failing anyway. So check the UUID before calling 'lvm'. This speeds up initrd creation and avoids I/O errors on multipath devices. Signed-off-by: Hannes Reinecke Signed-off-by: Thomas Renninger --- diff --git a/dracut-functions.sh b/dracut-functions.sh index 17a71f0eb..edd8ea9ef 100755 --- a/dracut-functions.sh +++ b/dracut-functions.sh @@ -698,10 +698,12 @@ for_each_host_dev_and_slaves() # but you cannot create the logical volume without the volume group. # And the volume group might be bigger than the devices the LV needs. check_vol_slaves() { - local _lv _vg _pv + local _lv _vg _pv _dm for i in /dev/mapper/*; do [[ $i == /dev/mapper/control ]] && continue _lv=$(get_maj_min $i) + _dm=/sys/dev/block/$_lv/dm + [[ -f $_dm/uuid && $(<$_dm/uuid) =~ LVM-* ]] || continue if [[ $_lv = $2 ]]; then _vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null) # strip space