From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martin Wilck Date: Thu, 2 Apr 2020 18:12:48 +0200 Subject: [PATCH] kpartx.rules: check for skip_kpartx on synthetic uevents The current test to detect "spurious" uevents, and thus whether to import DM_SUBSYSTEM_UDEV_FLAG1 (the flag for the "skip_kpartx" option) from the udev db is wrong. In 10-dm.rules, DM_UDEV_PRIMARY_SOURCE_FLAG is imported from the db if it isn't set, meaning that it's always 1 for active maps. The only events for which DM_SUBSYSTEM_UDEV_FLAG1 must not be loaded from the db are the real "primary" events, which are "change" events with DM_ACTIVATION=="1". 11-dm-mpath.rules resets DM_ACTIVATION to 0 if nothing should change in upper layers. In this case importing DM_SUBSYSTEM_UDEV_FLAG1 is correct, too. kpartx will not be called anyway, because 11-dm-mpath.rules also sets MPATH_UNCHANGED=1. Signed-off-by: Benjamin Marzinski --- kpartx/kpartx.rules | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules index f1bf31ca..d7527d7d 100644 --- a/kpartx/kpartx.rules +++ b/kpartx/kpartx.rules @@ -13,8 +13,11 @@ ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="kpartx_end" ENV{DM_UUID}!="mpath-?*", GOTO="mpath_kpartx_end" # DM_SUBSYSTEM_UDEV_FLAG1 is the "skip_kpartx" flag. -# For events not generated by libdevmapper, we need to fetch it from db. -ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1" +# For events not generated by libdevmapper, we need to fetch it from db: +# - "change" events with DM_ACTIVATION!="1" (e.g. partition table changes) +# - "add" events for which rules are not disabled ("coldplug" case) +ENV{DM_ACTIVATION}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1" +ACTION=="add", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1" ENV{DM_SUBSYSTEM_UDEV_FLAG1}=="1", GOTO="mpath_kpartx_end" # 11-dm-mpath.rules sets MPATH_UNCHANGED for events that can be ignored. -- 2.17.2