From 69a3f4d986a4f5302a35771376a7785b9464889d Mon Sep 17 00:00:00 2001
From: wuguanghao <wuguanghao3@huawei.com>
Date: Sat, 9 Jun 2021 19:07:43 +0800
Subject: [PATCH] udev repeat

systemd-udev exec IMPORT{program} in rules to get stdout of
program for storing some ENV vars. However due to some reasons,
the stdout of program cannot be gotten by systemd-udevd, which
cause some errors due to missing of ENV vars.

lv maybe lost after reboot, now we repeat to exec programs to
avoid lv missing.

Signed-off-by: wuguanghao<wuguanghao3@huawei.com>
Signed-off-by: Zhiqiang Liu<liuzhiqiang26@huawei.com>
---
 udev/10-dm.rules.in     | 2 ++
 udev/11-dm-lvm.rules.in | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/udev/10-dm.rules.in b/udev/10-dm.rules.in
index b4fa52a..3ed1242 100644
--- a/udev/10-dm.rules.in
+++ b/udev/10-dm.rules.in
@@ -51,6 +51,8 @@ ACTION!="add|change", GOTO="dm_end"
 # kernel version 2.6.31. Therefore, we can use this feature with
 # kernels >= 2.6.31 only. Cookie is not decoded for remove event.
 ENV{DM_COOKIE}=="?*", IMPORT{program}="(DM_EXEC)/dmsetup udevflags $env{DM_COOKIE}"
+ENV{DM_COOKIE}=="?*", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="?*", IMPORT{program}="(DM_EXEC)/dmsetup udevflags $env{DM_COOKIE}"
+ENV{DM_COOKIE}=="?*", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="?*", IMPORT{program}="(DM_EXEC)/dmsetup udevflags $env{DM_COOKIE}"
 
 # Rule out easy-to-detect inappropriate events first.
 ENV{DISK_RO}=="1", GOTO="dm_disable"
diff --git a/udev/11-dm-lvm.rules.in b/udev/11-dm-lvm.rules.in
index 7c58994..33f7d1d 100644
--- a/udev/11-dm-lvm.rules.in
+++ b/udev/11-dm-lvm.rules.in
@@ -19,6 +19,8 @@ ENV{DM_UUID}!="LVM-?*", GOTO="lvm_end"
 
 # Use DM name and split it up into its VG/LV/layer constituents.
 IMPORT{program}="(DM_EXEC)/dmsetup splitname --nameprefixes --noheadings --rows $env{DM_NAME}"
+ENV{DM_VG_NAME}!="?*", IMPORT{program}="(DM_EXEC)/dmsetup splitname --nameprefixes --noheadings --rows $env{DM_NAME}"
+ENV{DM_LV_NAME}!="?*", IMPORT{program}="(DM_EXEC)/dmsetup splitname --nameprefixes --noheadings --rows $env{DM_NAME}"
 
 # DM_SUBSYSTEM_UDEV_FLAG0 is the 'NOSCAN' flag for LVM subsystem.
 # This flag is used to temporarily disable selected rules to prevent any
-- 
2.33.0

