From: Patrick Donnelly Date: Thu, 29 Jan 2026 15:44:53 +0000 (-0500) Subject: mds: dump SnapRealm for src/dest in link operations X-Git-Tag: testing/wip-vshankar-testing-20260304.135307~2^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2cd07acd52ccb14ec024df83ba95ddfe1b2ac04d;p=ceph-ci.git mds: dump SnapRealm for src/dest in link operations 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 Fixes: https://tracker.ceph.com/issues/74652 --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index ea60c5030df..82b6db406f5 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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);