From 8abee7d58ae53bfbb92feb966477b0c8951fd218 Mon Sep 17 00:00:00 2001 From: Kotresh HR Date: Mon, 24 Feb 2025 13:45:49 +0530 Subject: [PATCH] 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 --- src/mds/Server.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 817222b0a089..04ddf87c9773 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; -- 2.47.3