FIX: Last_checkpoint has to be initialized in per disk units
last_checkpoint is variable that tracks sync_complete sysfs entry. sync_complete is per disk counter, so initializing during starting from checkpoint has to have this in mind and convert reshape position properly. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
138477db4b
commit
0d51bfa20e
|
@ -667,6 +667,15 @@ static void manage_new(struct mdstat_ent *mdstat,
|
|||
if (sysfs_get_ll(mdi, NULL, "reshape_position",
|
||||
&new->last_checkpoint) != 0)
|
||||
new->last_checkpoint = 0;
|
||||
else {
|
||||
int data_disks = mdi->array.raid_disks;
|
||||
if (mdi->array.level == 4 || mdi->array.level == 5)
|
||||
data_disks--;
|
||||
if (mdi->array.level == 6)
|
||||
data_disks -= 2;
|
||||
|
||||
new->last_checkpoint /= data_disks;
|
||||
}
|
||||
dprintf("mdmon: New monitored array is under reshape.\n"
|
||||
" Last checkpoint is: %llu\n",
|
||||
new->last_checkpoint);
|
||||
|
|
Loading…
Reference in New Issue