From 2beb7161dc90f61857367e59664b29eb2a3cd5e3 Mon Sep 17 00:00:00 2001 From: Alex Ainscow Date: Mon, 30 Jun 2025 14:31:21 +0100 Subject: [PATCH] osd: Relax PGLog assert when ec optimisations are enabled on a pool. The versions on partial shards are permitted to be behind, so we need to relax several asserts, this is another example. Signed-off-by: Alex Ainscow (cherry picked from commit 0c89e7ef2ab48199ee3f7296cf1cb44c9aeec667) --- src/osd/PGLog.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h index eea032b780d..4ece20c0e13 100644 --- a/src/osd/PGLog.h +++ b/src/osd/PGLog.h @@ -1716,15 +1716,16 @@ public: if (debug_verify_stored_missing) { auto miter = missing.get_items().find(i->soid); ceph_assert(miter != missing.get_items().end()); - ceph_assert(miter->second.need == i->version); // the 'have' version is reset if an object is deleted, // then created again if (ec_optimizations_enabled) { // non-primary shards in an optimized pool may not have updates // because of partial writes, which may result in oi.version being // less than have + ceph_assert(miter->second.need >= i->version); ceph_assert(miter->second.have >= oi.version || miter->second.have == eversion_t()); } else { + ceph_assert(miter->second.need == i->version); ceph_assert(miter->second.have == oi.version || miter->second.have == eversion_t()); } checked.insert(i->soid); -- 2.39.5