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.
43 lines
1.4 KiB
43 lines
1.4 KiB
From 563ac108659980b3d1e226fe416254a86656235f Mon Sep 17 00:00:00 2001 |
|
From: Gioh Kim <gi-oh.kim@cloud.ionos.com> |
|
Date: Tue, 6 Nov 2018 16:20:17 +0100 |
|
Subject: [RHEL7.7 PATCH 07/21] Assemble: mask FAILFAST and WRITEMOSTLY flags |
|
when finding the most recent device |
|
|
|
If devices[].i.disk.state has MD_DISK_FAILFAST or MD_DISK_WRITEMOSTLY |
|
flag, it cannot be the most recent device. Both flags should be masked |
|
before checking the state. |
|
|
|
Reviewed-by: NeilBrown <neilb@suse.com> |
|
Signed-off-by: Gioh Kim <gi-oh.kim@cloud.ionos.com> |
|
Signed-off-by: Jes Sorensen <jsorensen@fb.com> |
|
--- |
|
Assemble.c | 5 ++++- |
|
1 file changed, 4 insertions(+), 1 deletion(-) |
|
|
|
diff --git a/Assemble.c b/Assemble.c |
|
index f39c9e1..9f75c68 100644 |
|
--- a/Assemble.c |
|
+++ b/Assemble.c |
|
@@ -578,6 +578,7 @@ static int load_devices(struct devs *devices, char *devmap, |
|
struct supertype *tst; |
|
int i; |
|
int dfd; |
|
+ int disk_state; |
|
|
|
if (tmpdev->used != 1) |
|
continue; |
|
@@ -711,7 +712,9 @@ static int load_devices(struct devs *devices, char *devmap, |
|
devices[devcnt].i.disk.major = major(stb.st_rdev); |
|
devices[devcnt].i.disk.minor = minor(stb.st_rdev); |
|
|
|
- if (devices[devcnt].i.disk.state == 6) { |
|
+ disk_state = devices[devcnt].i.disk.state & ~((1<<MD_DISK_FAILFAST) | |
|
+ (1<<MD_DISK_WRITEMOSTLY)); |
|
+ if (disk_state == ((1<<MD_DISK_ACTIVE) | (1<<MD_DISK_SYNC))) { |
|
if (most_recent < 0 || |
|
devices[devcnt].i.events |
|
> devices[most_recent].i.events) { |
|
-- |
|
2.7.5 |
|
|
|
|