]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: Log and dump referent remote cdentry
authorKotresh HR <khiremat@redhat.com>
Thu, 20 Feb 2025 10:37:07 +0000 (16:07 +0530)
committerKotresh HR <khiremat@redhat.com>
Tue, 4 Mar 2025 06:20:47 +0000 (11:50 +0530)
Fixes: https://tracker.ceph.com/issues/54205
Signed-off-by: Kotresh HR <khiremat@redhat.com>
src/mds/CDentry.cc

index 212637e82f4359e7890efaee3b32ef42c1e36950..555fe090a8737d938c10e060092e991254ce5e4e 100644 (file)
@@ -79,6 +79,12 @@ ostream& operator<<(ostream& out, const CDentry& dn)
     out << ")";
   }
 
+  if (dn.get_linkage()->is_referent_remote()) {
+    out << " REFERENT REMOTE(";
+    out << dn.get_linkage()->get_remote_d_type_string();
+    out << ")";
+  }
+
   if (!dn.lock.is_sync_and_unlocked())
     out << " " << dn.lock;
   if (!dn.versionlock.is_sync_and_unlocked())
@@ -105,6 +111,20 @@ ostream& operator<<(ostream& out, const CDentry& dn)
      }
   }
 
+  {
+    out << " remote_ino=";
+    out << dn.get_linkage()->get_remote_ino();
+    const CInode *ref_in = dn.get_linkage()->get_referent_inode();
+    out << " referent_inode_ptr=";
+     if (ref_in) {
+       out << ref_in;
+     } else {
+       out << "(nil)";
+     }
+    out << " referent_ino=";
+    out << dn.get_linkage()->get_referent_ino();
+  }
+
   out << " state=" << dn.get_state();
   if (dn.is_new()) out << "|new";
   if (dn.state_test(CDentry::STATE_BOTTOMLRU)) out << "|bottomlru";
@@ -650,6 +670,7 @@ void CDentry::dump(Formatter *f) const
   
   f->dump_bool("is_primary", get_linkage()->is_primary());
   f->dump_bool("is_remote", get_linkage()->is_remote());
+  f->dump_bool("is_referent_remote", get_linkage()->is_referent_remote());
   f->dump_bool("is_null", get_linkage()->is_null());
   f->dump_bool("is_new", is_new());
   if (get_linkage()->get_inode()) {
@@ -660,6 +681,8 @@ void CDentry::dump(Formatter *f) const
 
   if (linkage.is_remote()) {
     f->dump_string("remote_type", linkage.get_remote_d_type_string());
+  } else if (linkage.is_referent_remote()) {
+    f->dump_string("referent_remote_type", linkage.get_remote_d_type_string());
   } else {
     f->dump_string("remote_type", "");
   }