]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: try any AG when allocating the first btree block when reflinking
authorChristoph Hellwig <hch@lst.de>
Wed, 8 Mar 2017 18:38:53 +0000 (10:38 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 8 Mar 2017 18:38:53 +0000 (10:38 -0800)
commit89ccbe996fe6ab3f773fea0997342ab983528230
treec43d14680e8f70ea22b2c835c4fd7840e5d6a84f
parentcd2676eab2a2231f2909d0fee234d6c141729a37
xfs: try any AG when allocating the first btree block when reflinking

When a reflink operation causes the bmap code to allocate a btree block
we're currently doing single-AG allocations due to having ->firstblock
set and then try any higher AG due a little reflink quirk we've put in
when adding the reflink code.  But given that we do not have a minleft
reservation of any kind in this AG we can still not have any space in
the same or higher AG even if the file system has enough free space.
To fix this use a XFS_ALLOCTYPE_FIRST_AG allocation in this fall back
path instead.

[And yes, we need to redo this properly instead of piling hacks over
 hacks.  I'm working on that, but it's not going to be a small series.
 In the meantime this fixes the customer reported issue]

Also add a warning for failing allocations to make it easier to debug.

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/libxfs/xfs_bmap_btree.c