getinfo_super1: Use MaxSector in place of sb->size
when deciding whether the array is clean or dirty, compare sb->resync_offset against MaxSector and not against sb->size With RAID6 resyncing and subsequent drive failures, it is possible to reach the case, in which sb->resync_offset==sb->size. This happens when resync is aborted due to drive failures, and immediately a rebuild of a spare starts. In this case, mdadm was considered the array as clean, while kernel was considering the array as dirty. It is better for mdadm also to consider the array as dirty in this case. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
f878b24226
commit
d59770567c
2
super1.c
2
super1.c
|
@ -573,7 +573,7 @@ static void getinfo_super1(struct supertype *st, struct mdinfo *info, char *map)
|
|||
info->array.utime = __le64_to_cpu(sb->utime);
|
||||
info->array.chunk_size = __le32_to_cpu(sb->chunksize)*512;
|
||||
info->array.state =
|
||||
(__le64_to_cpu(sb->resync_offset) >= __le64_to_cpu(sb->size))
|
||||
(__le64_to_cpu(sb->resync_offset) == MaxSector)
|
||||
? 1 : 0;
|
||||
|
||||
info->data_offset = __le64_to_cpu(sb->data_offset);
|
||||
|
|
Loading…
Reference in New Issue