]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Fix omap upgrade to per-pg scheme 42958/head
authorAdam Kupczyk <akupczyk@redhat.com>
Sat, 13 Nov 2021 10:28:18 +0000 (11:28 +0100)
committerIgor Fedotov <ifed@suse.com>
Fri, 19 Nov 2021 12:46:31 +0000 (15:46 +0300)
This is fix to regression introduced by fix to omap upgrade: https://github.com/ceph/ceph/pull/43687
The problem was that we always skipped first omap entry.
This worked fine with objects having omap header key.
For objects without header key we skipped first actual omap key.

Fixes: https://tracker.ceph.com/issues/53260
Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
(cherry picked from commit 65a3f374aa1c57c5bb9401e57dab98a643b4360a)

src/os/bluestore/BlueStore.cc

index eb0babf204179d4bb8d4c1feeadae3b5c053a305..3156614a330fd1e8e2c80b2a72251b8fb2b59f82 100644 (file)
@@ -8204,6 +8204,7 @@ void BlueStore::_fsck_check_object_omap(FSCKDepth depth,
          txn->set(new_omap_prefix, new_head, header);
          txn_cost += new_head.length() + header.length();
        }
+       it->next();
       }
       // tail
       {
@@ -8217,7 +8218,6 @@ void BlueStore::_fsck_check_object_omap(FSCKDepth depth,
       string final_key;
       Onode::calc_omap_key(new_flags, o.get(), string(), &final_key);
       size_t base_key_len = final_key.size();
-      it->next();
       while (it->valid() && it->key() < tail) {
        string user_key;
        o->decode_omap_key(it->key(), &user_key);