This patchset aims to implement RENAME_EXCHANGE support (from sys_renameat2) to
For this to be achieved, XFS need to export a rename2() method, which I
in the first patch.
The second patch is the real implementation of the RENAME_EXCHANGE flags, which
most of the work I based on xfs_rename().
This patchset passed the xfstests 23, 24 and 25 (specifically for
RENAME_EXCHANGE), and I also tested the projectID inheritance problem, where
both paths must be under the same projectID to be able to change (I'm going to
implement this test into the xfstests too).
In this version of the patch, I tried to use xfs_rename for everything in
common between a usual rename and the RENAME_EXCHANGE, using xfs_cross_rename()
just for the needed stuff to accomplish RENAME_EXCHANGE requirements (as
suggested by Brian).
Also, applied suggestions from Dave, merging all the logic involving new_parent
Carlos Maiolino (2):
Make xfs_vn_rename compliant with renameat2() syscall
Add support to RENAME_EXCHANGE flag
fs/xfs/xfs_inode.c | 315 +++++++++++++++++++++++++++++++++++------------------
fs/xfs/xfs_inode.h | 8 +-
fs/xfs/xfs_iops.c | 15 ++-
3 files changed, 228 insertions(+), 110 deletions(-)