diff --git a/lvm2.changes b/lvm2.changes index 6ddf402..4593a08 100644 --- a/lvm2.changes +++ b/lvm2.changes @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Fri Jun 13 10:31:48 CEST 2014 - hare@suse.de + +- Generate all symlinks even for multipath events (bnc#875233) + patch: udev-Check-for-DM_NR_VALID_PATHS.patch + +------------------------------------------------------------------- Tue May 30 09:01:08 UTC 2014 - lmb@suse.com diff --git a/lvm2.spec b/lvm2.spec index 04de732..a7b386f 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -117,6 +117,8 @@ Patch96: use-mirrortype-asdefault-whenclvmdrunning.patch Patch97: systemd-use-umask-022-for-generated-systemd-units-by.patch # bnc#878930 Patch98: remove-quote-in-lvm2-monitor.patch +# bnc#875233 +Patch99: udev-Check-for-DM_NR_VALID_PATHS.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # Not a real replacement but we drop evms @@ -180,6 +182,7 @@ Volume Manager. %patch96 -p1 %patch97 -p1 %patch98 -p1 +%patch99 -p1 %build #set path so that thin_check can be found diff --git a/udev-Check-for-DM_NR_VALID_PATHS.patch b/udev-Check-for-DM_NR_VALID_PATHS.patch new file mode 100644 index 0000000..1d168dd --- /dev/null +++ b/udev-Check-for-DM_NR_VALID_PATHS.patch @@ -0,0 +1,62 @@ +From b8354ac161b5ab8a4f5842201d7ee69f5089c6dc Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 12 Jun 2014 17:07:31 +0200 +Subject: [PATCH] udev: Check for DM_NR_VALID_PATHS + +When the device becomes inaccessible we must not run any program +requiring disk access, as this will stall and cause udev to +eventually timeout this event. + +So check for DM_NR_VALID_PATHS before calling these programs. + +References: bnc#875233 + +Signed-off-by: Hannes Reinecke +--- + udev/10-dm.rules.in | 1 - + udev/13-dm-disk.rules.in | 2 ++ + udev/69-dm-lvm-metad.rules.in | 1 + + 3 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/udev/10-dm.rules.in b/udev/10-dm.rules.in +index 29af467..f108941 100644 +--- a/udev/10-dm.rules.in ++++ b/udev/10-dm.rules.in +@@ -111,7 +111,6 @@ ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="(DM_DIR)/ + + # We have to ignore further rule application for inappropriate events + # and devices. But still send the notification if cookie exists. +-ENV{DM_UUID}=="mpath-?*", ENV{DM_ACTION}=="PATH_FAILED", GOTO="dm_disable" + ENV{DM_UUID}=="CRYPT-TEMP-?*", GOTO="dm_disable" + ENV{DM_UUID}!="?*", ENV{DM_NAME}=="temporary-cryptsetup-?*", GOTO="dm_disable" + +diff --git a/udev/13-dm-disk.rules.in b/udev/13-dm-disk.rules.in +index 1920260..d117a94 100644 +--- a/udev/13-dm-disk.rules.in ++++ b/udev/13-dm-disk.rules.in +@@ -18,8 +18,10 @@ SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" + ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}" + + ENV{DM_SUSPENDED}=="1", GOTO="dm_end" ++ENV{DM_NR_VALID_PATHS}=="0", GOTO="dm_blkid_end" + + (BLKID_RULE) ++LABEL="dm_blkid_end" + ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", 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}" + ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" +diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in +index 706c03b..0b0ebbf 100644 +--- a/udev/69-dm-lvm-metad.rules.in ++++ b/udev/69-dm-lvm-metad.rules.in +@@ -19,6 +19,7 @@ SUBSYSTEM!="block", GOTO="lvm_end" + + # Device-mapper devices are processed only on change event or on supported synthesized event. + KERNEL=="dm-[0-9]*", ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="lvm_end" ++KERNEL=="dm-[0-9]*", ENV{DM_NR_VALID_PATHS}=="0", GOTO="lvm_end" + + # Only process devices already marked as a PV - this requires blkid to be called before. + ENV{ID_FS_TYPE}=="LVM2_member|LVM1_member", RUN+="(LVM_EXEC)/lvm pvscan --cache --activate ay --major $major --minor $minor" +-- +1.8.4.5 +