- the use of sed is placeholder "hack" until lvm2 provides a proper
tool for changing lvm.conf
- lvm_scan.sh should run lvm commands with --ignorelockingfailure to
re-use lvm's existing initrd-specific logic; future lvm2 changes
will split this flag out into various new command-line switches
- no monitoring should be started from within initramfs
- NOTE: the same should apply to 90dmraid/install
- the correct types would be: '[ "blkext", 1 , "cciss0", 16 ]'
but lvm2 (>= 2.02.52) already properly supports both 'blkext' and
'cciss' (including cciss0 -> cciss7)
#!/bin/bash
inst lvm
-inst dmeventd
-
-if ldd $(which lvm) | grep -q lib64; then
- LIBDIR="/lib64"
-else
- LIBDIR="/lib"
-fi
inst_rules "$moddir/64-lvm.rules" 64-lvm.rules
if [[ $hostonly ]] || [[ $lvmconf = "yes" ]]; then
- [ -f /etc/lvm/lvm.conf ] && inst /etc/lvm/lvm.conf
+ if [ -f /etc/lvm/lvm.conf ]; then
+ inst /etc/lvm/lvm.conf
+ # FIXME: near-term hack to establish read-only locking;
+ # use command-line lvm.conf editor once it is available
+ sed -i -e 's/\(^[[:space:]]*\)locking_type[[:space:]]*=[[:space:]]*[[:digit:]]/\1locking_type = 4/' ${initdir}/etc/lvm/lvm.conf
+ fi
fi
-for i in $(ls /$LIBDIR/libdevmapper-event*.so 2>/dev/null); do
- dracut_install $i
-done
-
inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules 11-dm-lvm.rules
inst "$moddir/lvm_scan.sh" /sbin/lvm_scan
printf '"a|^/dev/%s$|", ' $dev;
done;
echo '"r/.*/" ]';
- echo 'types = [ "blkext", 1024 , "cciss0", 1024 ]'
echo '}';
+ # establish read-only locking
+ echo 'global {';
+ echo ' locking_type = 4';
+ echo '}';
} > /etc/lvm/lvm.conf
lvmwritten=1
fi
info "Scanning devices $lvmdevs for LVM volume groups $VGS"
-lvm vgscan 2>&1 | vinfo
-lvm vgchange -ay --monitor n $VGS 2>&1 | vinfo
+lvm vgscan --ignorelockingfailure 2>&1 | vinfo
+lvm vgchange -ay --ignorelockingfailure --monitor n $VGS 2>&1 | vinfo
if [ "$lvmwritten" ]; then
rm -f /etc/lvm/lvm.conf
ln -s /sbin/lvm-cleanup /pre-pivot/30-lvm-cleanup.sh 2>/dev/null