]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mds: dump SnapRealm for src/dest in link operations
authorPatrick Donnelly <pdonnell@ibm.com>
Thu, 29 Jan 2026 15:44:53 +0000 (10:44 -0500)
committerPatrick Donnelly <pdonnell@ibm.com>
Thu, 29 Jan 2026 17:09:48 +0000 (12:09 -0500)
So we can verify the state of the SnapRealm if we hit EXDEV.

Now looks like:

    2026-01-29T12:05:52.603-0500 7defd1a64640 20 mds.0.server src_realm snaprealm(0x10000000002 seq 1 lc 0 cr 1 cps 2 snaps={} subvol last_modified 0.000000 change_attr 0 is_snapdir_visible 1 0x5c1a558a66c0)
    2026-01-29T12:05:52.603-0500 7defd1a64640 20 mds.0.server dest_realm snaprealm(0x10000000002 seq 1 lc 0 cr 1 cps 2 snaps={} subvol last_modified 0.000000 change_attr 0 is_snapdir_visible 1 0x5c1a558a66c0)

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
Fixes: https://tracker.ceph.com/issues/74652
src/mds/Server.cc

index ea60c5030dfc0e8bff6c827b6566a80e76d5e6db..82b6db406f5936845afc7032e913fb58f3e8b695 100644 (file)
@@ -7871,6 +7871,8 @@ void Server::handle_client_link(const MDRequestRef& mdr)
 
   CInode* target_pin = targeti->get_projected_parent_dir()->inode;
   SnapRealm *target_realm = target_pin->find_snaprealm();
+  ceph_assert(target_realm);
+  dout(20) << "target_realm " << *target_realm << dendl;
   if (target_pin != dir->inode &&
       target_realm->get_subvolume_ino() !=
       dir->inode->find_snaprealm()->get_subvolume_ino() &&
@@ -9692,6 +9694,10 @@ void Server::handle_client_rename(const MDRequestRef& mdr)
       src_realm = dest_realm;
     else
       src_realm = srcdir->inode->find_snaprealm();
+    ceph_assert(dest_realm);
+    ceph_assert(src_realm);
+    dout(20) << "src_realm " << *src_realm << dendl;
+    dout(20) << "dest_realm " << *dest_realm << dendl;
     if (src_realm != dest_realm &&
        src_realm->get_subvolume_ino() != dest_realm->get_subvolume_ino()) {
       respond_to_request(mdr, -EXDEV);