]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mds: include deleted file dentry in snapdiff readdir result
authorVenky Shankar <vshankar@redhat.com>
Wed, 5 Mar 2025 06:23:21 +0000 (06:23 +0000)
committerVenky Shankar <vshankar@redhat.com>
Wed, 4 Jun 2025 14:52:55 +0000 (20:22 +0530)
Fixes: http://tracker.ceph.com/issues/70287
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit 33c6f232069f1cb77447495657ab584e5d52f594)

src/mds/Server.cc

index 23cf5a9f39c054ac81541d754a87bcec0c358c65..f019b7b9ea063004db46a57d84155eaaf3abbc14 100644 (file)
@@ -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() << " "