]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Revert "multi-mds/link: Create referent inode and store backtrace"
authorVenky Shankar <vshankar@redhat.com>
Tue, 18 Mar 2025 09:01:33 +0000 (09:01 +0000)
committerVenky Shankar <vshankar@redhat.com>
Thu, 12 Feb 2026 04:50:54 +0000 (10:20 +0530)
This reverts commit 79c3d122d2e8d13791cd519eeb3117ecd214fa68.

Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/mds/Server.cc
src/mds/Server.h

index af319130111358379bc25e80e117720d8218e4ef..dbda3c1dfca8ae8ca631cbb0fc1c70ade97b9ec6 100644 (file)
@@ -8021,15 +8021,14 @@ class C_MDS_link_remote_finish : public ServerLogContext {
   bool inc;
   CDentry *dn;
   CInode *targeti;
-  CInode *referenti;
   version_t dpv;
 public:
-  C_MDS_link_remote_finish(Server *s, const MDRequestRef& r, bool i, CDentry *d, CInode *ti, CInode *ri) :
-    ServerLogContext(s, r), inc(i), dn(d), targeti(ti), referenti(ri),
+  C_MDS_link_remote_finish(Server *s, const MDRequestRef& r, bool i, CDentry *d, CInode *ti) :
+    ServerLogContext(s, r), inc(i), dn(d), targeti(ti),
     dpv(d->get_projected_version()) {}
   void finish(int r) override {
     ceph_assert(r == 0);
-    server->_link_remote_finish(mdr, inc, dn, targeti, referenti, dpv);
+    server->_link_remote_finish(mdr, inc, dn, targeti, dpv);
   }
 };
 
@@ -8039,17 +8038,6 @@ void Server::_link_remote(const MDRequestRef& mdr, bool inc, CDentry *dn, CInode
           << (inc ? "link ":"unlink ")
           << *dn << " to " << *targeti << dendl;
 
-  CInode *newi = nullptr;
-
-  // create referent inode. Don't re-create on retry
-  if (mds->mdsmap->allow_referent_inodes() && inc) {
-    if (!mdr->alloc_ino && !mdr->used_prealloc_ino)
-      newi = prepare_new_inode(mdr, dn->get_dir(), inodeno_t(0), targeti->inode->mode, nullptr, true);
-    else
-      newi = mdcache->get_inode(mdr->alloc_ino ? mdr->alloc_ino : mdr->used_prealloc_ino);
-    ceph_assert(newi);
-  }
-
   // 1. send LinkPrepare to dest (journal nlink++ prepare)
   mds_rank_t linkauth = targeti->authority().first;
   if (mdr->more()->witnessed.count(linkauth) == 0) {
@@ -8070,7 +8058,6 @@ void Server::_link_remote(const MDRequestRef& mdr, bool inc, CDentry *dn, CInode
     auto req = make_message<MMDSPeerRequest>(mdr->reqid, mdr->attempt, op);
     targeti->set_object_info(req->get_object_info());
     req->op_stamp = mdr->get_op_stamp();
-
     if (auto& desti_srnode = mdr->more()->desti_srnode)
       encode(*desti_srnode, req->desti_snapbl);
     mds->send_message_mds(req, linkauth);
@@ -8102,27 +8089,11 @@ void Server::_link_remote(const MDRequestRef& mdr, bool inc, CDentry *dn, CInode
   }
 
   if (inc) {
-    version_t dnpv = dn->pre_dirty();
-
-    //referent inode stuff
-    if (newi) {
-      auto _inode = newi->_get_inode();
-      _inode->version = dnpv;
-      _inode->update_backtrace();
-    }
-
+    dn->pre_dirty();
     mdcache->predirty_journal_parents(mdr, &le->metablob, targeti, dn->get_dir(), PREDIRTY_DIR, 1);
-
-    if (newi) {
-      dout(20) << __func__ << " calling metablob add_remote_dentry with referent_ino= " << newi->ino() << dendl;
-      le->metablob.add_remote_dentry(dn, true, targeti->ino(), targeti->d_type(), newi->ino(), newi); // new remote
-      // journal allocated referent inode.
-      journal_allocated_inos(mdr, &le->metablob);
-      dn->push_projected_linkage(newi, targeti->ino(), newi->ino());
-    } else {
-      le->metablob.add_remote_dentry(dn, true, targeti->ino(), targeti->d_type(), inodeno_t(0), nullptr); // new remote
-      dn->push_projected_linkage(targeti->ino(), targeti->d_type());
-    }
+    // TODO: Pass referent inode upon creation. It's adding just remote dentry now
+    le->metablob.add_remote_dentry(dn, true, targeti->ino(), targeti->d_type(), 0, nullptr); // new remote
+    dn->push_projected_linkage(targeti->ino(), targeti->d_type());
   } else {
     dn->pre_dirty();
     mdcache->predirty_journal_parents(mdr, &le->metablob, targeti, dn->get_dir(), PREDIRTY_DIR, -1);
@@ -8132,11 +8103,11 @@ void Server::_link_remote(const MDRequestRef& mdr, bool inc, CDentry *dn, CInode
   }
 
   journal_and_reply(mdr, (inc ? targeti : nullptr), dn, le,
-                   new C_MDS_link_remote_finish(this, mdr, inc, dn, targeti, newi));
+                   new C_MDS_link_remote_finish(this, mdr, inc, dn, targeti));
 }
 
 void Server::_link_remote_finish(const MDRequestRef& mdr, bool inc,
-                                CDentry *dn, CInode *targeti, CInode *referenti,
+                                CDentry *dn, CInode *targeti,
                                 version_t dpv)
 {
   dout(10) << "_link_remote_finish "
@@ -8154,12 +8125,6 @@ void Server::_link_remote_finish(const MDRequestRef& mdr, bool inc,
     if (!dnl->get_inode())
       dn->link_remote(dnl, targeti);
     dn->mark_dirty(dpv, mdr->ls);
-
-    if (referenti) {
-      // dirty referent inode
-      referenti->mark_dirty(mdr->ls);
-      referenti->mark_dirty_parent(mdr->ls, true);
-    }
   } else {
     // unlink main dentry
     dn->get_dir()->unlink_inode(dn);
index 03ae777e7e4bc0fd220f5bd0729e3059387c7a2b..cf32561ec8c66f1a47e4eb291e81c9ae98fc1fa9 100644 (file)
@@ -307,7 +307,7 @@ public:
 
   void _link_remote(const MDRequestRef& mdr, bool inc, CDentry *dn, CInode *targeti);
   void _link_remote_finish(const MDRequestRef& mdr, bool inc, CDentry *dn, CInode *targeti,
-                           CInode *referenti, version_t);
+                          version_t);
 
   void handle_peer_link_prep(const MDRequestRef& mdr);
   void _logged_peer_link(const MDRequestRef& mdr, CInode *targeti, bool adjust_realm);