]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd/PGLog.h: update missing set verification for deletes
authorJosh Durgin <jdurgin@redhat.com>
Fri, 23 Jun 2017 22:39:00 +0000 (18:39 -0400)
committerJosh Durgin <jdurgin@redhat.com>
Mon, 17 Jul 2017 06:00:36 +0000 (02:00 -0400)
Deleted objects may still be on-disk after merging a log that includes
deletes, so adjust the asserts accordingly.

A case like:

980'1192 (972'1186) modify foo
--- osd restart ---
999'1196 (980'1192) delete foo
1003'1199 (0'0) modify foo
1015'1208 (1003'1199) delete foo

Would trigger the assert(miter->second.have == oi.info) since the
'have' version would would be reset to 0'0.

Signed-off-by: Josh Durgin <jdurgin@redhat.com>
src/osd/PGLog.h

index a93a217e757546975ef3b9971f2de56490f106bf..b637dcda01e4267972542b6bb2c0206533bbeac8 100644 (file)
@@ -1225,7 +1225,9 @@ public:
                auto miter = missing.get_items().find(i->soid);
                assert(miter != missing.get_items().end());
                assert(miter->second.need == i->version);
-               assert(miter->second.have == oi.version);
+               // the 'have' version is reset if an object is deleted,
+               // then created again
+               assert(miter->second.have == oi.version || miter->second.have == eversion_t());
                checked.insert(i->soid);
              } else {
                missing.add(i->soid, i->version, oi.version, i->is_delete());