From: John Spray Date: Thu, 29 Jan 2015 19:00:21 +0000 (+0000) Subject: mds/Server: fix stray reintegration X-Git-Tag: v9.0.0~115^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a01e9b1f1be48b4ea4bb7f667f5c8d5a4402fd1e;p=ceph.git mds/Server: fix stray reintegration This was checking tracei's primary parent DN for remoteness as a condition to calling eval_remote. However, the *primary* parent DN in this case is the stray, which is not remote. The correct check is tracedn (the remote dentry that got us here) rather than tracei->get_parent_dn() (the primary dentry for the inode that we have looked up). This leads to eval_remote being invoked, and reintegration of stray hard-linked inodes working. Signed-off-by: John Spray --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index b5a31e6adb39..61ca3cc314a7 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -1146,9 +1146,10 @@ void Server::reply_client_request(MDRequestRef& mdr, MClientReply *reply) // take a closer look at tracei, if it happens to be a remote link if (tracei && - tracei->get_parent_dn() && - tracei->get_parent_dn()->get_projected_linkage()->is_remote()) - mdcache->eval_remote(tracei->get_parent_dn()); + tracedn && + tracedn->get_projected_linkage()->is_remote()) { + mdcache->eval_remote(tracedn); + } }