Fix is_resync_complete for RAID10
For RAID10, 'sync' numbers go up to the array size rather than the component size. is_resync_complete() needs to allow for this. Reported-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
364a48c992
commit
71d68ff62f
20
mdmon.h
20
mdmon.h
|
@ -91,7 +91,21 @@ extern int monitor_loop_cnt;
|
|||
*/
|
||||
static inline int is_resync_complete(struct mdinfo *array)
|
||||
{
|
||||
if (array->resync_start >= array->component_size)
|
||||
return 1;
|
||||
return 0;
|
||||
unsigned long long sync_size = 0;
|
||||
int ncopies, l;
|
||||
switch(array->array.level) {
|
||||
case 1:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
sync_size = array->component_size;
|
||||
break;
|
||||
case 10:
|
||||
l = array->array.layout;
|
||||
ncopies = (l & 0xff) * ((l >> 8) && 0xff);
|
||||
sync_size = array->component_size * array->array.raid_disks;
|
||||
sync_size /= ncopies;
|
||||
break;
|
||||
}
|
||||
return array->resync_start >= sync_size;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue