]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: Relax PGLog assert when ec optimisations are enabled on a pool.
authorAlex Ainscow <aainscow@uk.ibm.com>
Mon, 30 Jun 2025 13:31:21 +0000 (14:31 +0100)
committerJon <jonathan.bailey1@ibm.com>
Fri, 3 Oct 2025 13:31:23 +0000 (14:31 +0100)
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 <aainscow@uk.ibm.com>
(cherry picked from commit 0c89e7ef2ab48199ee3f7296cf1cb44c9aeec667)

src/osd/PGLog.h

index eea032b780d5cbc06b4f82d95f5fc72932129e58..4ece20c0e13550ad1dc4c8b937b2e2dcf111c2a0 100644 (file)
@@ -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);