On Thu, Nov 07, 2024 at 04:40:44PM +0800, Jinliang Zheng wrote: > In xfs_alloc_compute_diff(), ensure that the remaining length of extent > still meets the wantlen requirements after newbno1 is rounded. What problem are you observing? --D > Signed-off-by: Jinliang Zheng <alexjlzheng@xxxxxxxxxxx> > --- > Changelog: > > V2: Fix the error logic > > V1: https://lore.kernel.org/linux-xfs/20241107070300.13535-1-alexjlzheng@xxxxxxxxxxx/#R > --- > fs/xfs/libxfs/xfs_alloc.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c > index 22bdbb3e9980..1d4cc75b7318 100644 > --- a/fs/xfs/libxfs/xfs_alloc.c > +++ b/fs/xfs/libxfs/xfs_alloc.c > @@ -393,7 +393,8 @@ xfs_alloc_compute_diff( > * grows in the short term. > */ > if (freebno >= wantbno || (userdata && freeend < wantend)) { > - if ((newbno1 = roundup(freebno, alignment)) >= freeend) > + newbno1 = roundup(freebno, alignment); > + if (newbno1 >= freeend || newbno1 > freeend - wantlen) > newbno1 = NULLAGBLOCK; > } else if (freeend >= wantend && alignment > 1) { > newbno1 = roundup(wantbno, alignment); > @@ -414,6 +415,8 @@ xfs_alloc_compute_diff( > newbno1 = newbno2; > } else if (newbno2 != NULLAGBLOCK) > newbno1 = newbno2; > + if (newbno1 > freeend - wantlen) > + newbno1 = NULLAGBLOCK; > } else if (freeend >= wantend) { > newbno1 = wantbno; > } else if (alignment > 1) { > -- > 2.41.1 > >