]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: exclude BADREMOTEINO dentriess in readdir
authorSage Weil <sage@newdream.net>
Fri, 21 Nov 2008 22:58:14 +0000 (14:58 -0800)
committerSage Weil <sage@newdream.net>
Fri, 21 Nov 2008 22:58:14 +0000 (14:58 -0800)
src/mds/Server.cc

index 185ba27dfa12257d71d4f57fc88d030743199385..af836249cd65e22cc82f03f31a1efe1b2e67e488 100644 (file)
@@ -2037,10 +2037,11 @@ void Server::handle_client_readdir(MDRequest *mdr)
       in = mdcache->get_inode(dn->get_remote_ino());
       if (in) {
        dn->link_remote(in);
+      } else if (dn->state_test(CDentry::STATE_BADREMOTEINO)) {
+       dout(10) << "skipping bad remote ino on " << *dn << dendl;
+       continue;
       } else {
-       dout(10) << "opening remote ino for " << *dn << dendl;
-       mdcache->open_remote_ino(dn->get_remote_ino(),
-                                new C_MDS_RetryRequest(mdcache, mdr));
+       mdcache->open_remote_dentry(dn, new C_MDS_RetryRequest(mdcache, mdr));
 
        // touch everything i _do_ have
        for (it = dir->begin();