]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add -ESTALE recovery code for slave rmdir
authorYan, Zheng <zyan@redhat.com>
Mon, 16 Jan 2017 09:25:45 +0000 (17:25 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 19 Jan 2017 06:59:20 +0000 (14:59 +0800)
Signed-off-by: Yan, Zheng <zyan@redhat.com>
src/mds/Server.cc

index 2525fe48173e630a1e1c5f16c9a541701286d38a..d83aa2f31f9278d857244bc10d91dbbd23136804 100644 (file)
@@ -5811,6 +5811,12 @@ void Server::handle_slave_rmdir_prep(MDRequestRef& mdr)
   dout(10) << " src " << srcpath << dendl;
   CInode *in;
   int r = mdcache->path_traverse(mdr, NULL, NULL, srcpath, &trace, &in, MDS_TRAVERSE_DISCOVERXLOCK);
+  if (r > 0) return;
+  if (r == -ESTALE) {
+    mdcache->find_ino_peers(srcpath.get_ino(), new C_MDS_RetryRequest(mdcache, mdr),
+       mdr->slave_to_mds);
+    return;
+  }
   assert(r == 0);
   CDentry *dn = trace[trace.size()-1];
   dout(10) << " dn " << *dn << dendl;