xfs: go straight to real allocations for direct I/O COW writes
authorChristoph Hellwig <hch@lst.de>
Mon, 6 Feb 2017 18:50:49 +0000 (10:50 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 7 Feb 2017 01:47:47 +0000 (17:47 -0800)
commita14234c72bf41ac96bc8c98e96e2c84b6d4bd4f2
tree711d321fd0656ef512522b0293a12b836d6afecd
parentdcf9585a7511147c7ffd580be8580dd39bc52fb6
xfs: go straight to real allocations for direct I/O COW writes

When we allocate COW fork blocks for direct I/O writes we currently first
create a delayed allocation, and then convert it to a real allocation
once we've got the delayed one.

As there is no good reason for that this patch instead makes use call
xfs_bmapi_write from the COW allocation path.  The only interesting bits
are a few tweaks the low-level allocator to allow for this, most notably
the need to remove the call to xfs_bmap_extsize_align for the cowextsize
in xfs_bmap_btalloc - for the existing convert case it's a no-op, but
for the direct allocation case it would blow up our block reservation
way beyond what we reserved for the transaction.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_bmap.c
fs/xfs/xfs_reflink.c