]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: fix fdblocks accounting w/ RMAPBT per-AG reservation
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 22 Jun 2018 06:26:56 +0000 (23:26 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sun, 24 Jun 2018 19:00:12 +0000 (12:00 -0700)
commite5092e00e0bfc6c99c51e16d72b9d43ad07502e6
treea6b91979eb68dab9cbfe3415068f8be9b358bfd5
parent7b46ad5ab5908ee54dca4307824917e1246f4635
xfs: fix fdblocks accounting w/ RMAPBT per-AG reservation

In __xfs_ag_resv_init we incorrectly calculate the amount by which to
decrease fdblocks when reserving blocks for the rmapbt.  Because rmapbt
allocations do not decrease fdblocks, we must decrease fdblocks by the
entire size of the requested reservation in order to achieve our goal of
always having enough free blocks to satisfy an rmapbt expansion.

This is in contrast to the refcountbt/finobt, which /do/ subtract from
fdblocks whenever they allocate a block.  For this allocation type we
preserve the existing behavior where we decrease fdblocks only by the
requested reservation minus the size of the existing tree.

This fixes the problem where the available block counts reported by
statfs change across a remount if there had been an rmapbt size change
since mount time.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
fs/xfs/libxfs/xfs_ag_resv.c