On Fri, Apr 15, 2022 at 04:57:58PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > If rounding the log start up to the next stripe unit would cause the log > to overrun the end of the AG, round the log size down by a stripe unit. > We already ensured that logblocks was small enough to fit inside the AG, > so the minor adjustment should suffice. Self NAK, Eric pointed out more ways this can fail. New patch coming soon. --D > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > mkfs/xfs_mkfs.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index b932acaa..cfa38f17 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -3219,9 +3219,19 @@ align_internal_log( > int max_logblocks) > { > /* round up log start if necessary */ > - if ((cfg->logstart % sunit) != 0) > + if ((cfg->logstart % sunit) != 0) { > cfg->logstart = ((cfg->logstart + (sunit - 1)) / sunit) * sunit; > > + /* > + * If rounding up logstart to a stripe boundary moves the end > + * of the log past the end of the AG, reduce logblocks to get > + * it back under EOAG. > + */ > + if (!libxfs_verify_fsbext(mp, cfg->logstart, cfg->logblocks) && > + cfg->logblocks > sunit) > + cfg->logblocks -= sunit; > + } > + > /* If our log start overlaps the next AG's metadata, fail. */ > if (!libxfs_verify_fsbno(mp, cfg->logstart)) { > fprintf(stderr,