summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_globals.c
diff options
context:
space:
mode:
authorDarrick J. Wong2016-10-03 18:11:45 +0200
committerDarrick J. Wong2016-10-06 01:26:28 +0200
commit90e2056d76adc7894a019f5289d259de58065e13 (patch)
treea442c9b59ed16f95f4ba73e19990a2114cdccf0f /fs/xfs/xfs_globals.c
parentxfs: don't allow reflink when the AG is low on space (diff)
downloadkernel-qcow2-linux-90e2056d76adc7894a019f5289d259de58065e13.tar.gz
kernel-qcow2-linux-90e2056d76adc7894a019f5289d259de58065e13.tar.xz
kernel-qcow2-linux-90e2056d76adc7894a019f5289d259de58065e13.zip
xfs: try other AGs to allocate a BMBT block
Prior to the introduction of reflink, allocating a block and mapping it into a file was performed in a single transaction with a single block reservation, and the allocator was supposed to find enough blocks to allocate the extent and any BMBT blocks that might be necessary (unless we're low on space). However, due to the way copy on write works, allocation and mapping have been split into two transactions, which means that we must be able to handle the case where we allocate an extent for CoW but that AG runs out of free space before the blocks can be mapped into a file, and the mapping requires a new BMBT block. When this happens, look in one of the other AGs for a BMBT block instead of taking the FS down. The same applies to the functions that convert a data fork to extents and later btree format. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/xfs/xfs_globals.c')
0 files changed, 0 insertions, 0 deletions