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>
This commit is contained in:
Gioh Kim 2018-11-06 16:20:17 +01:00 committed by Jes Sorensen
parent d7a1fda276
commit 563ac10865
1 changed files with 4 additions and 1 deletions

View File

@ -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) {