From 99bcbe84c54ef2766a79b703a40ae73fc985ae28 Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Tue, 18 Mar 2025 08:57:23 +0000 Subject: [PATCH] Revert "mds/rename: Handle referent inode rollback" This reverts commit f66353d36e7ac0651417cd1dccb6a34d6ce7f784. Signed-off-by: Venky Shankar --- src/mds/Server.cc | 48 ++++++------------------------------ src/mds/events/EPeerUpdate.h | 1 - src/mds/journal.cc | 8 ++---- 3 files changed, 10 insertions(+), 47 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 526f748c48f..cd77957bd2e 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -11104,29 +11104,23 @@ void Server::handle_peer_rename_prep(const MDRequestRef& mdr) rollback.orig_src.dirfrag_old_mtime = srcdn->get_dir()->get_projected_fnode()->fragstat.mtime; rollback.orig_src.dirfrag_old_rctime = srcdn->get_dir()->get_projected_fnode()->rstat.rctime; rollback.orig_src.dname = srcdn->get_name(); - rollback.orig_src.referent_ino = 0; if (srcdnl->is_primary()) rollback.orig_src.ino = srcdnl->get_inode()->ino(); else { ceph_assert(srcdnl->is_remote() || srcdnl->is_referent_remote()); rollback.orig_src.remote_ino = srcdnl->get_remote_ino(); rollback.orig_src.remote_d_type = srcdnl->get_remote_d_type(); - if (srcdnl->is_referent_remote()) - rollback.orig_src.referent_ino = srcdnl->get_referent_ino(); } rollback.orig_dest.dirfrag = destdn->get_dir()->dirfrag(); rollback.orig_dest.dirfrag_old_mtime = destdn->get_dir()->get_projected_fnode()->fragstat.mtime; rollback.orig_dest.dirfrag_old_rctime = destdn->get_dir()->get_projected_fnode()->rstat.rctime; rollback.orig_dest.dname = destdn->get_name(); - rollback.orig_dest.referent_ino = 0; if (destdnl->is_primary()) rollback.orig_dest.ino = destdnl->get_inode()->ino(); else if (destdnl->is_remote() || destdnl->is_referent_remote()) { rollback.orig_dest.remote_ino = destdnl->get_remote_ino(); rollback.orig_dest.remote_d_type = destdnl->get_remote_d_type(); - if (destdnl->is_referent_remote()) - rollback.orig_dest.referent_ino = destdnl->get_referent_ino(); } if (straydn) { @@ -11493,16 +11487,12 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ dout(10) << " destdir not found" << dendl; CInode *in = NULL; - CInode *referent_in = nullptr; if (rollback.orig_src.ino) { in = mdcache->get_inode(rollback.orig_src.ino); if (in && in->is_dir()) ceph_assert(srcdn && destdn); - } else { + } else in = mdcache->get_inode(rollback.orig_src.remote_ino); - if (rollback.orig_src.referent_ino) - referent_in = mdcache->get_inode(rollback.orig_src.referent_ino); - } CDir *straydir = NULL; CDentry *straydn = NULL; @@ -11521,16 +11511,12 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ } CInode *target = NULL; - CInode *target_referent_in = nullptr; if (rollback.orig_dest.ino) { target = mdcache->get_inode(rollback.orig_dest.ino); if (target) ceph_assert(destdn && straydn); - } else if (rollback.orig_dest.remote_ino) { + } else if (rollback.orig_dest.remote_ino) target = mdcache->get_inode(rollback.orig_dest.remote_ino); - if (rollback.orig_dest.referent_ino) - target_referent_in = mdcache->get_inode(rollback.orig_dest.referent_ino); - } // can't use is_auth() in the resolve stage mds_rank_t whoami = mds->get_nodeid(); @@ -11553,15 +11539,9 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ if (rollback.orig_src.ino) { ceph_assert(in); srcdn->push_projected_linkage(in); - } else { - if (rollback.orig_src.referent_ino) { - ceph_assert(referent_in); - srcdn->push_projected_linkage(referent_in, rollback.orig_src.remote_ino, rollback.orig_src.referent_ino); - } else { - srcdn->push_projected_linkage(rollback.orig_src.remote_ino, - rollback.orig_src.remote_d_type); - } - } + } else + srcdn->push_projected_linkage(rollback.orig_src.remote_ino, + rollback.orig_src.remote_d_type); } map> splits[2]; @@ -11624,13 +11604,8 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ if (rollback.orig_dest.ino && target) { destdn->push_projected_linkage(target); } else if (rollback.orig_dest.remote_ino) { - if (rollback.orig_dest.referent_ino) { - ceph_assert(target_referent_in); - destdn->push_projected_linkage(target_referent_in, rollback.orig_dest.remote_ino, rollback.orig_dest.referent_ino); - } else { - destdn->push_projected_linkage(rollback.orig_dest.remote_ino, - rollback.orig_dest.remote_d_type); - } + destdn->push_projected_linkage(rollback.orig_dest.remote_ino, + rollback.orig_dest.remote_d_type); } else { // the dentry will be trimmed soon, it's ok to have wrong linkage if (rollback.orig_dest.ino) @@ -11668,15 +11643,8 @@ void Server::do_rename_rollback(bufferlist &rbl, mds_rank_t leader, const MDRequ else ceph_assert(rollback.orig_dest.remote_ino && rollback.orig_dest.remote_ino == rollback.orig_src.ino); - } else { + } else ti->nlink++; - //add referent inode back to the list - if (rollback.orig_dest.referent_ino) { - ti->add_referent_ino(rollback.orig_dest.referent_ino); - dout(10) << __func__ << " referent_inodes " << std::hex << ti->get_referent_inodes() - << " referent ino added " << rollback.orig_dest.referent_ino << dendl; - } - } if (!projected) target->reset_inode(ti); diff --git a/src/mds/events/EPeerUpdate.h b/src/mds/events/EPeerUpdate.h index adf7faf857d..ad999bc0b99 100644 --- a/src/mds/events/EPeerUpdate.h +++ b/src/mds/events/EPeerUpdate.h @@ -75,7 +75,6 @@ struct rename_rollback { std::string dname; char remote_d_type; utime_t old_ctime; - inodeno_t referent_ino; drec() : remote_d_type((char)S_IFREG) {} diff --git a/src/mds/journal.cc b/src/mds/journal.cc index c4600154c43..a7bf55e0fff 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -2695,7 +2695,7 @@ std::list rmdir_rollback::generate_test_instances() void rename_rollback::drec::encode(bufferlist &bl) const { - ENCODE_START(3, 2, bl); + ENCODE_START(2, 2, bl); encode(dirfrag, bl); encode(dirfrag_old_mtime, bl); encode(dirfrag_old_rctime, bl); @@ -2704,13 +2704,12 @@ void rename_rollback::drec::encode(bufferlist &bl) const encode(dname, bl); encode(remote_d_type, bl); encode(old_ctime, bl); - encode(referent_ino, bl); ENCODE_FINISH(bl); } void rename_rollback::drec::decode(bufferlist::const_iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl); + DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl); decode(dirfrag, bl); decode(dirfrag_old_mtime, bl); decode(dirfrag_old_rctime, bl); @@ -2719,8 +2718,6 @@ void rename_rollback::drec::decode(bufferlist::const_iterator &bl) decode(dname, bl); decode(remote_d_type, bl); decode(old_ctime, bl); - if (struct_v >= 3) - decode(referent_ino, bl); DECODE_FINISH(bl); } @@ -2732,7 +2729,6 @@ void rename_rollback::drec::dump(Formatter *f) const f->dump_int("ino", ino); f->dump_int("remote ino", remote_ino); f->dump_string("dname", dname); - f->dump_int("referent_ino", referent_ino); uint32_t type = DTTOIF(remote_d_type) & S_IFMT; // convert to type entries string type_string; switch(type) { -- 2.47.3