Don't do anything with the object state after errors because
it's freed by PG re-peer in this case
rel-0.5
Vitaliy Filippov 2020-03-25 02:48:58 +03:00
parent 18a5fafa2a
commit cf54741c95
1 changed files with 5 additions and 7 deletions

View File

@ -165,6 +165,11 @@ resume_5:
// Remove version override just after the write, but before stabilizing // Remove version override just after the write, but before stabilizing
pg.ver_override.erase(op_data->oid); pg.ver_override.erase(op_data->oid);
} }
if (op_data->errors > 0)
{
pg_cancel_write_queue(pg, cur_op, op_data->oid, op_data->epipe > 0 ? -EPIPE : -EIO);
return;
}
if (op_data->object_state) if (op_data->object_state)
{ {
// We must forget the unclean state of the object before deleting it // We must forget the unclean state of the object before deleting it
@ -173,17 +178,10 @@ resume_5:
remove_object_from_state(op_data->oid, op_data->object_state, pg); remove_object_from_state(op_data->oid, op_data->object_state, pg);
pg.clean_count++; pg.clean_count++;
} }
if (op_data->errors > 0)
{
free_object_state(pg, &op_data->object_state);
pg_cancel_write_queue(pg, cur_op, op_data->oid, op_data->epipe > 0 ? -EPIPE : -EIO);
return;
}
resume_6: resume_6:
resume_7: resume_7:
if (!remember_unstable_write(cur_op, pg, pg.cur_loc_set, 6)) if (!remember_unstable_write(cur_op, pg, pg.cur_loc_set, 6))
{ {
free_object_state(pg, &op_data->object_state);
return; return;
} }
if (op_data->fact_ver == 1) if (op_data->fact_ver == 1)