On Mon, Jan 31, 2022 at 06:02:26PM +1100, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > Now that we only call xfs_update_prealloc_flags() from > xfs_file_fallocate() in the case where we need to set the > preallocation flag, do this in xfs_alloc_file_space() where we > already have the inode joined into a transaction and get > rid of the call to xfs_update_prealloc_flags() from the fallocate > code. > > This also means that we now correctly avoid setting the > XFS_DIFLAG_PREALLOC flag when xfs_is_always_cow_inode() is true, as > these inodes will never have preallocated extents. > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Aha, there's the @flags elision. Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > --- > V1.1 > - fix whitespace damage > - remove redundant comments in xfs_alloc_file_space(). > > fs/xfs/xfs_bmap_util.c | 9 +++------ > fs/xfs/xfs_file.c | 8 -------- > 2 files changed, 3 insertions(+), 14 deletions(-) > > diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c > index d4a387d3d0ce..eb2e387ba528 100644 > --- a/fs/xfs/xfs_bmap_util.c > +++ b/fs/xfs/xfs_bmap_util.c > @@ -850,9 +850,6 @@ xfs_alloc_file_space( > rblocks = 0; > } > > - /* > - * Allocate and setup the transaction. > - */ > error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write, > dblocks, rblocks, false, &tp); > if (error) > @@ -869,9 +866,9 @@ xfs_alloc_file_space( > if (error) > goto error; > > - /* > - * Complete the transaction > - */ > + ip->i_diflags |= XFS_DIFLAG_PREALLOC; > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + > error = xfs_trans_commit(tp); > xfs_iunlock(ip, XFS_ILOCK_EXCL); > if (error) > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index 223996822d84..ae6f5b15a023 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -908,7 +908,6 @@ xfs_file_fallocate( > struct inode *inode = file_inode(file); > struct xfs_inode *ip = XFS_I(inode); > long error; > - enum xfs_prealloc_flags flags = 0; > uint iolock = XFS_IOLOCK_EXCL | XFS_MMAPLOCK_EXCL; > loff_t new_size = 0; > bool do_file_insert = false; > @@ -1006,8 +1005,6 @@ xfs_file_fallocate( > } > do_file_insert = true; > } else { > - flags |= XFS_PREALLOC_SET; > - > if (!(mode & FALLOC_FL_KEEP_SIZE) && > offset + len > i_size_read(inode)) { > new_size = offset + len; > @@ -1057,11 +1054,6 @@ xfs_file_fallocate( > if (error) > goto out_unlock; > } > - > - error = xfs_update_prealloc_flags(ip, XFS_PREALLOC_SET); > - if (error) > - goto out_unlock; > - > } > > /* Change file size if needed */ > -- > Dave Chinner > david@xxxxxxxxxxxxx