]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mds: Fix straydn race between unlink/rename linkmerge
authorKotresh HR <khiremat@redhat.com>
Thu, 27 Feb 2025 14:28:24 +0000 (19:58 +0530)
committerKotresh HR <khiremat@redhat.com>
Tue, 4 Mar 2025 06:20:47 +0000 (11:50 +0530)
commitf264f11f44d6355452dadc2a20efddc012c531e3
tree2682c2ac3e55b7c206738209d1385feaee8e648b
parentf66353d36e7ac0651417cd1dccb6a34d6ce7f784
mds: Fix straydn race between unlink/rename linkmerge

Handle race between unlink of secondary hardlink (say hl_file1) and
linkmerge rename, triggered by unlink of primary (say file1) on to
the same secondary hardlink (hl_file1).
           1. ln file1 hl_file1
           2. unlink hl_file1
           3. prepares straydn for referent inode
           4. wait for the locks

   unlink file1, triggers linkmerge rename
   rename(hl_file1, primary_stray) ---> referent straydn converted to primary

           5. On retry, it find itself as primary,
              needs to prepare straydn for primary.
              so clean up the earlier referent straydn

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