]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: do not set omap digest if there is no omap
authorSage Weil <sage@redhat.com>
Mon, 14 Dec 2015 16:35:46 +0000 (11:35 -0500)
committerSage Weil <sage@redhat.com>
Tue, 15 Dec 2015 02:07:14 +0000 (21:07 -0500)
We want to avoid encoding it if we can.  And if the FLAG_OMAP is not set
we don't need to *also* store an empty crc.

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

index 2c9226c30d791a6eff817e8768f5140b5c284c51..7d23687bea3e8f1a83cbd24bb7b1c5c91709773e 100644 (file)
@@ -6515,7 +6515,10 @@ void ReplicatedPG::finish_copyfrom(OpContext *ctx)
   obs.oi.user_version = ctx->user_at_version;
 
   obs.oi.set_data_digest(cb->results->data_digest);
-  obs.oi.set_omap_digest(cb->results->omap_digest);
+  if (obs.oi.is_omap())
+    obs.oi.set_omap_digest(cb->results->omap_digest);
+  else
+    obs.oi.clear_omap_digest();
 
   obs.oi.truncate_seq = cb->results->truncate_seq;
   obs.oi.truncate_size = cb->results->truncate_size;
@@ -6700,6 +6703,8 @@ void ReplicatedPG::finish_promote(int r, CopyResults *results,
       tctx->new_obs.oi.set_data_digest(results->data_digest);
     if (results->has_omap)
       tctx->new_obs.oi.set_omap_digest(results->omap_digest);
+    else
+      tctx->new_obs.oi.clear_omap_digest();
     tctx->new_obs.oi.truncate_seq = results->truncate_seq;
     tctx->new_obs.oi.truncate_size = results->truncate_size;
 
@@ -11421,7 +11426,10 @@ void ReplicatedPG::_scrub(
     ctx->at_version = get_next_version();
     ctx->mtime = utime_t();      // do not update mtime
     ctx->new_obs.oi.set_data_digest(p->second.first);
-    ctx->new_obs.oi.set_omap_digest(p->second.second);
+    if (ctx->new_obs.oi.is_omap())
+      ctx->new_obs.oi.set_omap_digest(p->second.second);
+    else
+      ctx->new_obs.oi.clear_omap_digest();
     finish_ctx(ctx, pg_log_entry_t::MODIFY, true, true);
     ctx->on_finish = new C_ScrubDigestUpdated(this);
     simple_repop_submit(repop);
index 52d45d293a1e74c5aab438dd0ea89e4dbca5782c..b058c135ce2ac2e9a0a81769a509428e03b39f4e 100644 (file)
@@ -2959,7 +2959,7 @@ struct object_info_t {
   }
   void new_object() {
     set_data_digest(-1);
-    set_omap_digest(-1);
+    clear_omap_digest();
   }
 
   void encode(bufferlist& bl) const;