From 11a972cbfb441438fb1558fcbf707caa517e715e Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 12 Jun 2026 15:09:21 +0300 Subject: [PATCH] Delete pg.peering_state when it is not needed --- src/osd/osd_peering_pg.cpp | 2 ++ src/osd/osd_scrub.cpp | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/osd/osd_peering_pg.cpp b/src/osd/osd_peering_pg.cpp index 30d79e76..db010202 100644 --- a/src/osd/osd_peering_pg.cpp +++ b/src/osd/osd_peering_pg.cpp @@ -473,6 +473,8 @@ void pg_t::calc_object_states(int log_level) printf("[PG %u/%u] %ju objects on OSD set %s\n", pool_id, pg_num, stp.second.object_count, osd_set_desc.c_str()); } } + delete ps; + peering_state = NULL; } void pg_t::print_state() diff --git a/src/osd/osd_scrub.cpp b/src/osd/osd_scrub.cpp index 6f5d87c3..c2efb7b6 100644 --- a/src/osd/osd_scrub.cpp +++ b/src/osd/osd_scrub.cpp @@ -667,9 +667,16 @@ resume_2: // I/O and checksum errors (represented by stripes[i].read_error) are OK (cur_op->op_data->errcode != -EIO && cur_op->op_data->errcode != -EDOM)) { - finish_op(cur_op, cur_op->op_data->errcode); - return; } - scrub_check_results(cur_op); - finish_op(cur_op, 0); + else + { + scrub_check_results(cur_op); + cur_op->op_data->errcode = 0; + } + if (cur_op->op_data->stripes) + { + free(cur_op->op_data->stripes); + cur_op->op_data->stripes = NULL; + } + finish_op(cur_op, cur_op->op_data->errcode); }