From a01e9b1f1be48b4ea4bb7f667f5c8d5a4402fd1e Mon Sep 17 00:00:00 2001 From: John Spray Date: Thu, 29 Jan 2015 19:00:21 +0000 Subject: [PATCH] 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 --- src/mds/Server.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index b5a31e6adb39b..61ca3cc314a7e 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); + } } -- 2.39.5