Check & remove extra chunks for degraded / incomplete objects, too
parent
80e12358a2
commit
1be94da437
|
@ -365,21 +365,19 @@ resume_7:
|
||||||
recovery_stat_bytes[0][recovery_type] += op_data->stripes[role].write_end - op_data->stripes[role].write_start;
|
recovery_stat_bytes[0][recovery_type] += op_data->stripes[role].write_end - op_data->stripes[role].write_start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (op_data->object_state->state & OBJ_MISPLACED)
|
// Any kind of a non-clean object can have extra chunks, because we don't record objects
|
||||||
|
// as degraded & misplaced or incomplete & misplaced at the same time. So try to remove extra chunks
|
||||||
|
submit_primary_del_subops(cur_op, pg.cur_set.data(), pg.pg_size, op_data->object_state->osd_set);
|
||||||
|
if (op_data->n_subops > 0)
|
||||||
{
|
{
|
||||||
// Remove extra chunks
|
|
||||||
submit_primary_del_subops(cur_op, pg.cur_set.data(), pg.pg_size, op_data->object_state->osd_set);
|
|
||||||
if (op_data->n_subops > 0)
|
|
||||||
{
|
|
||||||
resume_8:
|
resume_8:
|
||||||
op_data->st = 8;
|
op_data->st = 8;
|
||||||
return;
|
return;
|
||||||
resume_9:
|
resume_9:
|
||||||
if (op_data->errors > 0)
|
if (op_data->errors > 0)
|
||||||
{
|
{
|
||||||
pg_cancel_write_queue(pg, cur_op, op_data->oid, op_data->epipe > 0 ? -EPIPE : -EIO);
|
pg_cancel_write_queue(pg, cur_op, op_data->oid, op_data->epipe > 0 ? -EPIPE : -EIO);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Clear object state
|
// Clear object state
|
||||||
|
|
Loading…
Reference in New Issue