]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Relax missing entry assert for partial writes. 65770/head
authorAlex Ainscow <aainscow@uk.ibm.com>
Fri, 3 Oct 2025 12:35:48 +0000 (13:35 +0100)
committerAlex Ainscow <aainscow@uk.ibm.com>
Mon, 6 Oct 2025 07:17:54 +0000 (08:17 +0100)
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 <aainscow@uk.ibm.com>
src/osd/PGLog.h

index 9a878a9cf439c6cf231f0df648093655ee85612a..955c4ffb703dba4dd4a6d25d6ca5be7351b16588 100644 (file)
@@ -1184,9 +1184,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) &&