On Thu, Apr 13, 2017 at 10:05:14AM +0200, Christoph Hellwig wrote: > minleft counts the number of blocks that need to be available after the > current allocation has been completed. As the total allocation should not > be more than the transaction reservation we need to subtract the > allocation length. In addition we need to subtract the already used > transaction reservation, for that use the new xfs_trans_blk_res helper. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > fs/xfs/libxfs/xfs_bmap_btree.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_bmap_btree.c b/fs/xfs/libxfs/xfs_bmap_btree.c > index ce41dd5fbb34..153c969febd4 100644 > --- a/fs/xfs/libxfs/xfs_bmap_btree.c > +++ b/fs/xfs/libxfs/xfs_bmap_btree.c > @@ -442,6 +442,7 @@ xfs_bmbt_alloc_block( > args.mp = cur->bc_mp; > args.fsbno = cur->bc_private.b.firstblock; > args.firstblock = args.fsbno; > + args.minlen = args.maxlen = args.prod = 1; > xfs_rmap_ino_bmbt_owner(&args.oinfo, cur->bc_private.b.ip->i_ino, > cur->bc_private.b.whichfork); > > @@ -459,14 +460,14 @@ xfs_bmbt_alloc_block( > * reservation amount is insufficient then we may fail a > * block allocation here and corrupt the filesystem. > */ > - args.minleft = args.tp->t_blk_res; > + if (xfs_trans_blk_res(args.tp)) > + args.minleft = xfs_trans_blk_res(args.tp) - args.maxlen; > } else if (cur->bc_private.b.dfops->dop_low) { > args.type = XFS_ALLOCTYPE_START_BNO; > } else { > args.type = XFS_ALLOCTYPE_NEAR_BNO; > } > > - args.minlen = args.maxlen = args.prod = 1; > args.wasdel = cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL; > if (!args.wasdel && args.tp->t_blk_res == 0) { > error = -ENOSPC; > -- > 2.11.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html