]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xfs: introduce new file range commit ioctls
authorDarrick J. Wong <djwong@kernel.org>
Fri, 30 Aug 2024 22:36:47 +0000 (15:36 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Sun, 1 Sep 2024 15:58:19 +0000 (08:58 -0700)
commit398597c3ef7fb1d8fa31491c8f4f3996cff45701
treefc8b18b4369cbee3798ddfc0cea2906f3024a8c0
parent431c1646e1f86b949fa3685efc50b660a364c2b6
xfs: introduce new file range commit ioctls

This patch introduces two more new ioctls to manage atomic updates to
file contents -- XFS_IOC_START_COMMIT and XFS_IOC_COMMIT_RANGE.  The
commit mechanism here is exactly the same as what XFS_IOC_EXCHANGE_RANGE
does, but with the additional requirement that file2 cannot have changed
since some sampling point.  The start-commit ioctl performs the sampling
of file attributes.

Note: This patch currently samples i_ctime during START_COMMIT and
checks that it hasn't changed during COMMIT_RANGE.  This isn't entirely
safe in kernels prior to 6.12 because ctime only had coarse grained
granularity and very fast updates could collide with a COMMIT_RANGE.
With the multi-granularity ctime introduced by Jeff Layton, it's now
possible to update ctime such that this does not happen.

It is critical, then, that this patch must not be backported to any
kernel that does not support fine-grained file change timestamps.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Acked-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/libxfs/xfs_fs.h
fs/xfs/xfs_exchrange.c
fs/xfs/xfs_exchrange.h
fs/xfs/xfs_ioctl.c
fs/xfs/xfs_trace.h