From: Venky Shankar Date: Wed, 5 Mar 2025 06:23:21 +0000 (+0000) Subject: mds: include deleted file dentry in snapdiff readdir result X-Git-Tag: testing/wip-vshankar-testing-20250604.145504-squid-debug^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=36c8cb5f60483066d7b6a2f6d7be809bc63307ed;p=ceph-ci.git mds: include deleted file dentry in snapdiff readdir result Fixes: http://tracker.ceph.com/issues/70287 Signed-off-by: Venky Shankar (cherry picked from commit 33c6f232069f1cb77447495657ab584e5d52f594) --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 23cf5a9f39c..f019b7b9ea0 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -12083,19 +12083,30 @@ bool Server::build_snap_diff( continue; } else { if (before.dn && dn->get_name() == name_before) { - if (mtime == before.mtime) { - dout(30) << __func__ << " timestamp not changed " << dn->get_name() << " " - << dn->first << "/" << dn->last - << " " << mtime - << dendl; + if (before.in->ino() != in->ino()) { + dout(30) << __func__ << " inode changed " << dn->get_name() << " " + << dn->first << "/" << dn->last + << " " << before.mtime << " vs. " << mtime + << dendl; + if (!insert_deleted(before)) { + break; + } before.reset(); - continue; } else { - dout(30) << __func__ << " timestamp changed " << dn->get_name() << " " - << dn->first << "/" << dn->last - << " " << before.mtime << " vs. " << mtime - << dendl; - before.reset(); + if (mtime == before.mtime) { + dout(30) << __func__ << " timestamp not changed " << dn->get_name() << " " + << dn->first << "/" << dn->last + << " " << mtime + << dendl; + before.reset(); + continue; + } else { + dout(30) << __func__ << " timestamp changed " << dn->get_name() << " " + << dn->first << "/" << dn->last + << " " << before.mtime << " vs. " << mtime + << dendl; + before.reset(); + } } } dout(20) << __func__ << " new file " << dn->get_name() << " "