Whamcloud - gitweb
LU-12125 mds: allow parallel regular file rename 86/41186/4
authorAndreas Dilger <adilger@whamcloud.com>
Sat, 9 Jan 2021 09:08:06 +0000 (02:08 -0700)
committerAndreas Dilger <adilger@whamcloud.com>
Fri, 15 Jan 2021 00:00:28 +0000 (17:00 -0700)
commitb632603b8d19c65dd69ea8a8dfe063c22fb87173
tree27aa437f005518bd3cbbbedf8d60df1dc8baf74b
parentf3e5f92c89e3ff62a48d475f2892158294cc909a
LU-12125 mds: allow parallel regular file rename

Allow rename of non-directory files in the same directory to be done
in parallel, by only taking the DLM lock on the parent FID, without
also locking the global LUSTRE_BFL_FID (Big Filesystem Lock).

Older clients may not send the renamed file mode in mds_rec_rename.
In this case, the LUSTRE_BFL_FID lock will still be taken, and is not
worse than before parallel rename was allowed.

Similarly, if (for whatever reason) there is a mix of MDS versions
running in the same filesystem, at worst older MDSes will continue to
unnecessarily lock LUSTRE_BFL_FID before doing the file rename.

If MDT0000 is on an older MDS, but newer MDSes are doing renames of
non-directories, the newer MDSes will *not* lock LUSTRE_BFL_FID first,
but there will still be proper serialization from the parent directory
FID lock for other renames affecting the parent and the source/target
entries.  That MDT0000 is unaware of the rename is the whole point.

In case of a race, where the file mode sent by the client is stale,
this is also not a concern, because the file mode is rechecked later
under lock and the rename fails if the source and target mode differ.

Test-Parameters: testlist=racer env=DURATION=3600
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: If330b53eb6db46e40f50fd7834a83e80db3ebbe5
lustre/mdt/mdt_reint.c