]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/readdir: Handle referent inode
authorKotresh HR <khiremat@redhat.com>
Mon, 24 Feb 2025 08:15:49 +0000 (13:45 +0530)
committerKotresh HR <khiremat@redhat.com>
Tue, 4 Mar 2025 06:20:47 +0000 (11:50 +0530)
If the linkage is referent remote, link it
as referent remote.

Fixes: https://tracker.ceph.com/issues/54205
Signed-off-by: Kotresh HR <khiremat@redhat.com>
src/mds/Server.cc

index 817222b0a089c59ee424d0b08d2c859a27dafcf2..04ddf87c977332ac9b32d7ddfe07580bee702508 100644 (file)
@@ -5141,10 +5141,13 @@ void Server::handle_client_readdir(const MDRequestRef& mdr)
 
     // remote link?
     // better for the MDS to do the work, if we think the client will stat any of these files.
-    if (dnl->is_remote() && !in) {
+    if ((dnl->is_remote() || dnl->is_referent_remote()) && !in) {
       in = mdcache->get_inode(dnl->get_remote_ino());
       if (in) {
-       dn->link_remote(dnl, in);
+        if (dnl->is_remote())
+          dn->link_remote(dnl, in);
+        else if (dnl->is_referent_remote())
+         dn->link_remote(dnl, in, dnl->get_referent_inode());
       } else if (dn->state_test(CDentry::STATE_BADREMOTEINO)) {
        dout(10) << "skipping bad remote ino on " << *dn << dendl;
        continue;