You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.9 KiB
47 lines
1.9 KiB
From 7bd59e7926c6921121087eb067befaa896c900a4 Mon Sep 17 00:00:00 2001 |
|
From: NeilBrown <neilb@suse.de> |
|
Date: Wed, 18 Sep 2019 15:12:55 +1000 |
|
Subject: [RHEL7.8 PATCH V2 41/47] udev: allow for udev attribute reading bug. |
|
|
|
There is a bug in udev (which will hopefully get fixed, but |
|
we should allow for it anways). |
|
When reading a sysfs attribute, it first reads the whole |
|
value of the attribute, then reads again expecting to get |
|
a read of 0 bytes, like you would with an ordinary file. |
|
If the sysfs attribute changed between these two reads, it can |
|
get a mixture of two values. |
|
|
|
In particular, if it reads when 'array_state' is changing from |
|
'clear' to 'inactive', it can find the value as "clear\nve". |
|
|
|
This causes the test for "|clear|active" to fail, so systemd is allowed |
|
to think that the array is ready - when it isn't. |
|
|
|
So change the pattern to allow for this but adding a wildcard at |
|
the end. |
|
Also don't allow for an empty string - reading array_state will |
|
never return an empty string - if it exists at all, it will be |
|
non-empty. |
|
|
|
Signed-off-by: NeilBrown <neilb@suse.de> |
|
Signed-off-by: Jes Sorensen <jsorensen@fb.com> |
|
--- |
|
udev-md-raid-arrays.rules | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/udev-md-raid-arrays.rules b/udev-md-raid-arrays.rules |
|
index d391665..c8fa8e8 100644 |
|
--- a/udev-md-raid-arrays.rules |
|
+++ b/udev-md-raid-arrays.rules |
|
@@ -14,7 +14,7 @@ ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" |
|
# never leave state 'inactive' |
|
ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" |
|
TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" |
|
-ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" |
|
+ATTR{md/array_state}=="clear*|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" |
|
LABEL="md_ignore_state" |
|
|
|
IMPORT{program}="BINDIR/mdadm --detail --no-devices --export $devnode" |
|
-- |
|
2.7.5 |
|
|
|
|