From: Venky Shankar Date: Tue, 18 Mar 2025 09:01:55 +0000 (+0000) Subject: Revert "mds/mdcache: Handle referent inode on discover" X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9d90040ba8e3541f7f5dbd72501c7861b6a36434;p=ceph.git Revert "mds/mdcache: Handle referent inode on discover" This reverts commit 645493bc6c438476b0078b6213d9919d49e9154d. Signed-off-by: Venky Shankar --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index fbb6ee5c21f0..48c7cce69ae7 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -10924,17 +10924,6 @@ void MDCache::handle_discover(const cref_t &dis) dout(7) << *dnl->get_inode() << " is frozen, non-empty reply, stopping" << dendl; break; } - } else if (dnl->is_referent_remote() && dnl->get_referent_inode()->is_frozen_inode()) { - if (tailitem && dis->is_path_locked()) { - dout(7) << __func__ << " allowing discovery of frozen tail referent inode" << *dnl->get_referent_inode() << dendl; - } else if (reply->is_empty()) { - dout(7) << __func__ << *dnl->get_referent_inode() << " referent inode is frozen, empty reply, waiting" << dendl; - dnl->get_referent_inode()->add_waiter(CDir::WAIT_UNFREEZE, new C_MDS_RetryMessage(mds, dis)); - return; - } else { - dout(7) << __func__ << *dnl->get_referent_inode() << " referent inode is frozen, non-empty reply, stopping" << dendl; - break; - } } // add dentry @@ -10943,15 +10932,6 @@ void MDCache::handle_discover(const cref_t &dis) encode_replica_dentry(dn, from, reply->trace); dout(7) << "handle_discover added dentry " << *dn << dendl; - // add referent inode - if (dnl->is_referent_remote()) { - CInode *referent_inode = dnl->get_referent_inode(); - ceph_assert(referent_inode->is_auth()); - - encode_replica_inode(referent_inode, from, reply->trace, mds->mdsmap->get_up_features()); - dout(7) << "handle_discover added referent inode " << *referent_inode << dendl; - } - if (!dnl->is_primary()) break; // stop on null or remote link. // add inode @@ -11138,7 +11118,7 @@ void MDCache::encode_replica_dir(CDir *dir, mds_rank_t to, bufferlist& bl) void MDCache::encode_replica_dentry(CDentry *dn, mds_rank_t to, bufferlist& bl) { - ENCODE_START(3, 1, bl); + ENCODE_START(2, 1, bl); encode(dn->get_name(), bl); encode(dn->last, bl); @@ -11151,7 +11131,6 @@ void MDCache::encode_replica_dentry(CDentry *dn, mds_rank_t to, bufferlist& bl) bool need_recover = mds->get_state() < MDSMap::STATE_ACTIVE; encode(need_recover, bl); encode(dn->alternate_name, bl); - encode(dn->linkage.referent_ino, bl); ENCODE_FINISH(bl); } @@ -11261,17 +11240,10 @@ void MDCache::decode_replica_dentry(CDentry *&dn, bufferlist::const_iterator& p, decode(alternate_name, p); } - inodeno_t referent_ino; - if (struct_v >= 3) { - decode(referent_ino, p); - } - if (is_new) { dn->set_alternate_name(std::move(alternate_name)); - if (rino && !referent_ino) + if (rino) dir->link_remote_inode(dn, rino, rdtype); - else if (rino && referent_ino) - dir->link_null_referent_inode(dn, referent_ino, rino, rdtype); if (need_recover) dn->lock.mark_need_recover(); } else { @@ -11303,12 +11275,7 @@ void MDCache::decode_replica_inode(CInode *&in, bufferlist::const_iterator& p, C else if (in->is_mdsdir()) in->inode_auth.first = in->ino() - MDS_INO_MDSDIR_OFFSET; dout(10) << __func__ << " added " << *in << dendl; - if (dn && dn->get_linkage()->get_referent_ino() > 0) { - dout(10) << __func__ << " linking referent inode " << *in << dendl; - ceph_assert(!dn->get_linkage()->get_referent_inode()); - ceph_assert(dn->get_linkage()->get_referent_ino() == in->ino()); - dn->dir->link_referent_inode(dn, in, dn->get_linkage()->get_remote_ino(), dn->get_linkage()->get_remote_d_type()); - } else if (dn) { + if (dn) { ceph_assert(dn->get_linkage()->is_null()); dn->dir->link_primary_inode(dn, in); } @@ -11317,13 +11284,9 @@ void MDCache::decode_replica_inode(CInode *&in, bufferlist::const_iterator& p, C in->_decode_base(p); in->_decode_locks_state_for_replica(p, false); dout(10) << __func__ << " had " << *in << dendl; - if (dn && dn->get_linkage()->get_referent_ino() > 0) { - if (!dn->get_linkage()->is_referent_remote() || dn->get_linkage()->get_referent_inode() != in) - dout(10) << __func__ << " different referent inode linkage in dentry " << *dn << " inode " << *in << dendl; - } } - if (dn && !dn->get_linkage()->is_referent_remote()) { + if (dn) { if (!dn->get_linkage()->is_primary() || dn->get_linkage()->get_inode() != in) dout(10) << __func__ << " different linkage in dentry " << *dn << dendl; }