From 7c02d121d5a6dea2e78672593c0be004df44b87d Mon Sep 17 00:00:00 2001 From: Alex Ainscow Date: Fri, 3 Oct 2025 13:35:48 +0100 Subject: [PATCH] osd: Relax missing entry assert for partial writes. This assert was relaxed to allow for missing partial write logs. However it needs to be relaxed further to cope with the missing list not containing some objects with later log entries. Fixes tracker https://tracker.ceph.com/issues/73248 Signed-off-by: Alex Ainscow --- src/osd/PGLog.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h index d3b1748a206..1161d0901a9 100644 --- a/src/osd/PGLog.h +++ b/src/osd/PGLog.h @@ -1185,9 +1185,11 @@ protected: if (objiter->second->is_update() || (missing.may_include_deletes && objiter->second->is_delete())) { if (ec_optimizations_enabled) { - // relax the assert for partial writes - missing may be newer than the - // most recent log entry - ceph_assert(missing.is_missing(hoid) && + // relax the assert for partial writes. The log may not contain any + // updates for this object, in which case the object will not be in + // the missing list. If it is in the missing list, then the need version + // had better be higher or equal to the log version + ceph_assert(!missing.is_missing(hoid) || missing.get_items().at(hoid).need >= objiter->second->version); } else { ceph_assert(missing.is_missing(hoid) && -- 2.39.5