]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
multi-mds/unlink: Handle rollback of referent_inodes list
authorKotresh HR <khiremat@redhat.com>
Tue, 25 Feb 2025 12:31:34 +0000 (18:01 +0530)
committerKotresh HR <khiremat@redhat.com>
Tue, 4 Mar 2025 06:20:47 +0000 (11:50 +0530)
The referent_inodes list needs to be rolled back if the
unlink operation involving multi-mds fails due to mds
going down. This patch takes care of the same.

Fixes: https://tracker.ceph.com/issues/54205
Signed-off-by: Kotresh HR <khiremat@redhat.com>
src/mds/Server.cc

index 5307cbfef390039934128dce108dcb7ddb21699f..0901f7cff2d6591cb3622e9ae711d74ccc89bb9a 100644 (file)
@@ -8355,6 +8355,11 @@ void Server::do_link_rollback(bufferlist &rbl, mds_rank_t leader, const MDReques
     }
   } else {
     pi.inode->nlink++;
+    if (rollback.referent_ino) {
+      pi.inode->add_referent_ino(rollback.referent_ino);
+      dout(10) << __func__ << " referent_inodes " << std::hex << pi.inode->get_referent_inodes()
+               << " referent ino added " << rollback.referent_ino << dendl;
+    }
   }
 
   map<client_t,ref_t<MClientSnap>> splits;