]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix omap digest clearing for omap write ops 4124/head
authorSage Weil <sage@redhat.com>
Sat, 21 Mar 2015 00:16:26 +0000 (17:16 -0700)
committerSage Weil <sage@redhat.com>
Sat, 21 Mar 2015 00:17:35 +0000 (17:17 -0700)
1. setvals clears the digest, even for a new object, since we aren't doing
anything clever with the digest for the provided keys (yet).

2. setheader clears the digest, always, since we aren't doing anything
clever.

Backport: hammer
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/ReplicatedPG.cc

index 15e1a856e2452766abb837445399d8861fd12316..9e7a6d0d0b130a26705f01e9f264e6d835ca1d2f 100644 (file)
@@ -5070,8 +5070,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
       {
        if (maybe_create_new_object(ctx)) {
          t->touch(soid);
-       } else {
-         obs.oi.clear_omap_digest();
        }
        map<string, bufferlist> to_set;
        try {
@@ -5093,6 +5091,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        ctx->delta_stats.num_wr++;
       }
       obs.oi.set_flag(object_info_t::FLAG_OMAP);
+      obs.oi.clear_omap_digest();
       break;
 
     case CEPH_OSD_OP_OMAPSETHEADER:
@@ -5113,6 +5112,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        ctx->delta_stats.num_wr++;
       }
       obs.oi.set_flag(object_info_t::FLAG_OMAP);
+      obs.oi.clear_omap_digest();
       break;
 
     case CEPH_OSD_OP_OMAPCLEAR: