From: xie xingguo Date: Tue, 19 Jan 2016 10:57:22 +0000 (+0800) Subject: BlueStore: fix dest onode process logic of clone_range X-Git-Tag: v10.0.4~178^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=696584cf6523d997cac2bf43d3234fd8518ef40b;p=ceph.git BlueStore: fix dest onode process logic of clone_range Signed-off-by: xie xingguo --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 7a8fa47bb51..756a05bc555 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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;