On Sun, May 23, 2021 at 06:01:33PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > The new online shrink code exposed a gap in the per-AG reservation > code, which is that we only return ENOSPC to callers if the entire fs > doesn't have enough free blocks. Except for debugging mode, the > reservation init code doesn't ever check that there's enough free space > in that AG to cover the reservation. > > Not having enough space is not considered an immediate fatal error that > requires filesystem offlining because (a) it's shouldn't be possible to > wind up in that state through normal file operations and (b) even if > one did, freeing data blocks would recover the situation. > > However, online shrink now needs to know if shrinking would not leave > enough space so that it can abort the shrink operation. Hence we need > to promote this assertion into an actual error return. > > Observed by running xfs/168 with a 1k block size, though in theory this > could happen with any configuration. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> Many thanks for the fix! Reviewed-by: Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx> Thanks, Gao Xiang