From 1834743a0ef32d991055819a18452c70026661d1 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 12 Jun 2026 15:02:46 +0300 Subject: [PATCH] Fix incorrect clearing of LOC_CORRUPTED on the second scrub --- src/osd/osd_scrub.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/osd/osd_scrub.cpp b/src/osd/osd_scrub.cpp index 8be6f43d..6f5d87c3 100644 --- a/src/osd/osd_scrub.cpp +++ b/src/osd/osd_scrub.cpp @@ -622,10 +622,13 @@ void osd_t::scrub_check_results(osd_op_t *cur_op) continue; } auto & chunk = new_set[set_pos]; - if (op_data->stripes[i].read_error && chunk.loc_bad != LOC_CORRUPTED) + if (op_data->stripes[i].read_error) { - changes++; - chunk.loc_bad = LOC_CORRUPTED; + if (!(chunk.loc_bad & LOC_CORRUPTED)) + { + changes++; + chunk.loc_bad = LOC_CORRUPTED; + } } else if (op_data->stripes[i].read_end > 0 && !op_data->stripes[chunk.role].missing && (chunk.loc_bad & LOC_CORRUPTED))