Blame SOURCES/0079-mdadm-udev-Don-t-handle-change-event-on-raw-devices.patch

01ff50
From 24d329fc97a64ec185ef27e59730f3f058c09029 Mon Sep 17 00:00:00 2001
01ff50
From: Xiao Ni <xni@redhat.com>
01ff50
Date: Thu, 5 Jan 2023 00:29:20 +0800
01ff50
Subject: [PATCH 79/83] mdadm/udev: Don't handle change event on raw devices
01ff50
01ff50
The raw devices are ready when add event happpens and the raid
01ff50
can be assembled. So there is no need to handle change events.
01ff50
And it can cause some inconvenient problems.
01ff50
01ff50
For example, the OS is installed on md0(/root) and md1(/home).
01ff50
md0 and md1 are created on partitions. When it wants to re-install
01ff50
OS, anaconda can't clear the storage configure. It deletes one
01ff50
partition and does some jobs. The change event happens. Now
01ff50
the raid device is assembled again. It can't delete the other
01ff50
partitions.
01ff50
01ff50
So in this patch, we don't handle change event on raw devices
01ff50
anymore.
01ff50
01ff50
Signed-off-by: Xiao Ni <xni@redhat.com>
01ff50
Signed-off-by: Jes Sorensen <jes@trained-monkey.org>
01ff50
---
01ff50
 udev-md-raid-assembly.rules | 8 ++++++++
01ff50
 1 file changed, 8 insertions(+)
01ff50
01ff50
diff --git a/udev-md-raid-assembly.rules b/udev-md-raid-assembly.rules
01ff50
index 39b4344b..d4a7f0a5 100644
01ff50
--- a/udev-md-raid-assembly.rules
01ff50
+++ b/udev-md-raid-assembly.rules
01ff50
@@ -11,6 +11,11 @@ SUBSYSTEM!="block", GOTO="md_inc_end"
01ff50
 ENV{SYSTEMD_READY}=="0", GOTO="md_inc_end"
01ff50
 
01ff50
 # handle potential components of arrays (the ones supported by md)
01ff50
+# For member devices which are md/dm devices, we don't need to
01ff50
+# handle add event. Because md/dm devices need to do some init jobs.
01ff50
+# Then the change event happens.
01ff50
+# When adding md/dm devices, ID_FS_TYPE can only be linux_raid_member
01ff50
+# after change event happens.
01ff50
 ENV{ID_FS_TYPE}=="linux_raid_member", GOTO="md_inc"
01ff50
 
01ff50
 # "noiswmd" on kernel command line stops mdadm from handling
01ff50
@@ -28,6 +33,9 @@ GOTO="md_inc_end"
01ff50
 
01ff50
 LABEL="md_inc"
01ff50
 
01ff50
+# Bare disks are ready when add event happens, the raid can be assembled.
01ff50
+ACTION=="change", KERNEL!="dm-*|md*", GOTO="md_inc_end"
01ff50
+
01ff50
 # remember you can limit what gets auto/incrementally assembled by
01ff50
 # mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY'
01ff50
 ACTION!="remove", IMPORT{program}="BINDIR/mdadm --incremental --export $devnode --offroot $env{DEVLINKS}"
01ff50
-- 
01ff50
2.38.1
01ff50