From cf54741c9512f810d9846dcac0cbb11247e5f773 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Wed, 25 Mar 2020 02:48:58 +0300 Subject: [PATCH] Followup to 05db1308aa1a8abc6dd4fd764c82cf0f87403d86 Don't do anything with the object state after errors because it's freed by PG re-peer in this case --- src/osd_primary_write.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/osd_primary_write.cpp b/src/osd_primary_write.cpp index 47a7a317..17945e88 100644 --- a/src/osd_primary_write.cpp +++ b/src/osd_primary_write.cpp @@ -165,6 +165,11 @@ resume_5: // Remove version override just after the write, but before stabilizing 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) { // 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); 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_7: if (!remember_unstable_write(cur_op, pg, pg.cur_loc_set, 6)) { - free_object_state(pg, &op_data->object_state); return; } if (op_data->fact_ver == 1)