]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
BlueStore: fix dest onode process logic of clone_range
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 19 Jan 2016 10:57:22 +0000 (18:57 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Tue, 19 Jan 2016 11:32:20 +0000 (19:32 +0800)
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/bluestore/BlueStore.cc

index 7a8fa47bb5117fc34fe0cf4ab36dfa27fc000a60..756a05bc555fffe865a209ec85831f72d39b748c 100644 (file)
@@ -6078,10 +6078,15 @@ int BlueStore::_clone_range(TransContext *txc,
     r = -ENOENT;
     goto out;
   }
-  newo = c->get_onode(new_oid, true);
+  
+  newo = c->get_onode(new_oid, false);
+  if (!newo) {
+    newo = c->get_onode(new_oid, true);
+    _assign_nid(txc, newo);    
+  }
   assert(newo);
   newo->exists = true;
-
   r = _do_read(oldo, srcoff, length, bl, 0);
   if (r < 0)
     goto out;