KERNEL=="dm-*", IMPORT{program}="vol_id --export $tempnode"
-ENV{ID_FS_TYPE}=="LVM2_member", RUN+="/bin/sh -c '/sbin/lvm vgscan; /sbin/lvm vgchange -ay'"
+ENV{ID_FS_TYPE}=="LVM2_member", RUN+="/bin/ln -fs /sbin/lvm_scan /initqueue/lvm_scan.sh"
OPTIONS="link_priority=-100"
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
KERNEL=="dm-*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
-ENV{ID_FS_TYPE}=="LVM2_member", RUN+="/bin/sh -c '/sbin/lvm vgscan; /sbin/lvm vgchange -ay'"
+ENV{ID_FS_TYPE}=="LVM2_member", RUN+="/bin/ln -fs /sbin/lvm_scan /initqueue/lvm_scan.sh"
OPTIONS="link_priority=-100"
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
else
inst_rules "$moddir/64-lvm.rules" 64-device-mapper.rules
fi
+
+inst "$moddir/lvm_scan.sh" /sbin/lvm_scan
--- /dev/null
+#!/bin/sh
+
+if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
+ [ -h "$job" ] && rm -f "$job"
+ # run lvm scan if udev has settled
+ lvm vgscan
+ lvm vgchange -ay
+fi
+