]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: fill in mod_desc in finish_copyfrom
authorSamuel Just <sam.just@inktank.com>
Wed, 15 Jan 2014 17:21:30 +0000 (09:21 -0800)
committerSamuel Just <sam.just@inktank.com>
Wed, 22 Jan 2014 22:39:17 +0000 (14:39 -0800)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/ReplicatedPG.cc

index a4c4d2d4d11c392ff0eafe133f233d4e86a11704..2e2a36e0e2ad2d000091006ee89133aab7296249 100644 (file)
@@ -5428,8 +5428,20 @@ void ReplicatedPG::finish_copyfrom(OpContext *ctx)
   ObjectState& obs = ctx->new_obs;
   CopyFromCallback *cb = static_cast<CopyFromCallback*>(ctx->copy_cb);
 
-  if (obs.exists) {
-    ctx->op_t->remove(obs.oi.soid);
+  if (pool.info.ec_pool()) {
+    if (obs.exists) {
+      if (ctx->mod_desc.rmobject(ctx->at_version.version)) {
+       ctx->op_t->stash(obs.oi.soid, ctx->at_version.version);
+      } else {
+       ctx->op_t->remove(obs.oi.soid);
+      }
+    }
+    ctx->mod_desc.create();
+  } else {
+    if (obs.exists) {
+      ctx->op_t->remove(obs.oi.soid);
+    }
+    ctx->mod_desc.mark_unrollbackable();
   }
 
   if (!obs.exists) {