From: Kotresh HR Date: Mon, 24 Feb 2025 08:15:49 +0000 (+0530) Subject: mds/readdir: Handle referent inode X-Git-Tag: v20.3.0~377^2~31 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8abee7d58ae53bfbb92feb966477b0c8951fd218;p=ceph.git mds/readdir: Handle referent inode If the linkage is referent remote, link it as referent remote. Fixes: https://tracker.ceph.com/issues/54205 Signed-off-by: Kotresh HR --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 817222b0a08..04ddf87c977 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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;