diff mbox series

xfs/119: fix too small log size error

Message ID 20180912110404.32673-1-zlang@redhat.com (mailing list archive)
State Deferred, archived
Headers show
Series xfs/119: fix too small log size error | expand

Commit Message

Zorro Lang Sept. 12, 2018, 11:04 a.m. UTC
xfs/119 fails on 4k hard sector size device if reflink (with/without
rmapbt) is enabled:

  # mkfs.xfs -f -m reflink=1,rmapbt=0 -l version=2,size=2560b,su=64k /dev/sdf
  log size 2560 blocks too small, minimum size is 2688 blocks
  # mkfs.xfs -f -m reflink=1,rmapbt=1 -l version=2,size=2560b,su=64k /dev/sdf
  log size 2560 blocks too small, minimum size is 4368 blocks

So remove log size parameter and run mkfs.xfs again if it fails.

Signed-off-by: Zorro Lang <zlang@redhat.com>
---

I saw Dave changed the log size once in commit:
  d0a3cc5a xfs/104: log size too small for 4k sector drives

But it's still not enough after we have reflink feature now. I don't
know why this case need "-l version=2,size=2560b,su=64k",
if someone learns about this case, please tell me how to change this
case properly. If the log size parameter is not necessary, I'd like
to remove it.

Thanks,
Zorro

 tests/xfs/119 | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Eryu Guan Sept. 12, 2018, 1:15 p.m. UTC | #1
On Wed, Sep 12, 2018 at 07:04:04PM +0800, Zorro Lang wrote:
> xfs/119 fails on 4k hard sector size device if reflink (with/without
> rmapbt) is enabled:
> 
>   # mkfs.xfs -f -m reflink=1,rmapbt=0 -l version=2,size=2560b,su=64k /dev/sdf
>   log size 2560 blocks too small, minimum size is 2688 blocks
>   # mkfs.xfs -f -m reflink=1,rmapbt=1 -l version=2,size=2560b,su=64k /dev/sdf
>   log size 2560 blocks too small, minimum size is 4368 blocks
> 
> So remove log size parameter and run mkfs.xfs again if it fails.
> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>
> ---
> 
> I saw Dave changed the log size once in commit:
>   d0a3cc5a xfs/104: log size too small for 4k sector drives
> 
> But it's still not enough after we have reflink feature now. I don't
> know why this case need "-l version=2,size=2560b,su=64k",
> if someone learns about this case, please tell me how to change this
> case properly. If the log size parameter is not necessary, I'd like
> to remove it.

I guess we still need the log size param, as the test is testing
"freeze/thaws on a small log fs", please see commit 3ebdf78c16cb ("Test
out pv#942130 where the unmount rec is not ungranting log space. Merge
of master-melb:xfs-cmds:23759a by kenmcd."), but we don't have much
background information from that ancient commit log..

Thanks,
Eryu

> 
> Thanks,
> Zorro
> 
>  tests/xfs/119 | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/xfs/119 b/tests/xfs/119
> index bf7f1ca8..d507aacf 100755
> --- a/tests/xfs/119
> +++ b/tests/xfs/119
> @@ -40,7 +40,14 @@ sync
>  
>  export MKFS_OPTIONS="-l version=2,size=2560b,su=64k" 
>  export MOUNT_OPTIONS="-o logbsize=64k"
> -_scratch_mkfs_xfs >/dev/null
> +_scratch_mkfs_xfs >/dev/null 2>&1
> +# The specified log size maybe too small if new features (e.g: reflink
> +# or/and rmapbt) is enabled. So if mkfs fails, don't specify log size
> +# and try to mkfs again.
> +if [ $? -ne 0 ]; then
> +	export MKFS_OPTIONS="-l version=2,su=64k"
> +	_scratch_mkfs_xfs >/dev/null
> +fi
>  
>  _scratch_mount
>  
> -- 
> 2.14.4
>
Zorro Lang Sept. 12, 2018, 3:25 p.m. UTC | #2
On Wed, Sep 12, 2018 at 09:15:09PM +0800, Eryu Guan wrote:
> On Wed, Sep 12, 2018 at 07:04:04PM +0800, Zorro Lang wrote:
> > xfs/119 fails on 4k hard sector size device if reflink (with/without
> > rmapbt) is enabled:
> > 
> >   # mkfs.xfs -f -m reflink=1,rmapbt=0 -l version=2,size=2560b,su=64k /dev/sdf
> >   log size 2560 blocks too small, minimum size is 2688 blocks
> >   # mkfs.xfs -f -m reflink=1,rmapbt=1 -l version=2,size=2560b,su=64k /dev/sdf
> >   log size 2560 blocks too small, minimum size is 4368 blocks
> > 
> > So remove log size parameter and run mkfs.xfs again if it fails.
> > 
> > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > ---
> > 
> > I saw Dave changed the log size once in commit:
> >   d0a3cc5a xfs/104: log size too small for 4k sector drives
> > 
> > But it's still not enough after we have reflink feature now. I don't
> > know why this case need "-l version=2,size=2560b,su=64k",
> > if someone learns about this case, please tell me how to change this
> > case properly. If the log size parameter is not necessary, I'd like
> > to remove it.
> 
> I guess we still need the log size param, as the test is testing
> "freeze/thaws on a small log fs", please see commit 3ebdf78c16cb ("Test
> out pv#942130 where the unmount rec is not ungranting log space. Merge
> of master-melb:xfs-cmds:23759a by kenmcd."), but we don't have much
> background information from that ancient commit log..

Yeah, I can't understand the pv#942130 meaning, and can't find it by Google.
Does anyone know the background, then tell me if it must use the minimum
log size?

And I find xfs_mkfs always trys to use the smallest log size which it can
use by using libxfs_log_calc_minimum_size() (but the real calculator is
more complicated)...

Thanks,
Zorro

> 
> Thanks,
> Eryu
> 
> > 
> > Thanks,
> > Zorro
> > 
> >  tests/xfs/119 | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tests/xfs/119 b/tests/xfs/119
> > index bf7f1ca8..d507aacf 100755
> > --- a/tests/xfs/119
> > +++ b/tests/xfs/119
> > @@ -40,7 +40,14 @@ sync
> >  
> >  export MKFS_OPTIONS="-l version=2,size=2560b,su=64k" 
> >  export MOUNT_OPTIONS="-o logbsize=64k"
> > -_scratch_mkfs_xfs >/dev/null
> > +_scratch_mkfs_xfs >/dev/null 2>&1
> > +# The specified log size maybe too small if new features (e.g: reflink
> > +# or/and rmapbt) is enabled. So if mkfs fails, don't specify log size
> > +# and try to mkfs again.
> > +if [ $? -ne 0 ]; then
> > +	export MKFS_OPTIONS="-l version=2,su=64k"
> > +	_scratch_mkfs_xfs >/dev/null
> > +fi
> >  
> >  _scratch_mount
> >  
> > -- 
> > 2.14.4
> >
Dave Chinner Sept. 13, 2018, 8:32 a.m. UTC | #3
On Wed, Sep 12, 2018 at 11:25:08PM +0800, Zorro Lang wrote:
> On Wed, Sep 12, 2018 at 09:15:09PM +0800, Eryu Guan wrote:
> > On Wed, Sep 12, 2018 at 07:04:04PM +0800, Zorro Lang wrote:
> > > xfs/119 fails on 4k hard sector size device if reflink (with/without
> > > rmapbt) is enabled:
> > > 
> > >   # mkfs.xfs -f -m reflink=1,rmapbt=0 -l version=2,size=2560b,su=64k /dev/sdf
> > >   log size 2560 blocks too small, minimum size is 2688 blocks
> > >   # mkfs.xfs -f -m reflink=1,rmapbt=1 -l version=2,size=2560b,su=64k /dev/sdf
> > >   log size 2560 blocks too small, minimum size is 4368 blocks
> > > 
> > > So remove log size parameter and run mkfs.xfs again if it fails.
> > > 
> > > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > > ---
> > > 
> > > I saw Dave changed the log size once in commit:
> > >   d0a3cc5a xfs/104: log size too small for 4k sector drives
> > > 
> > > But it's still not enough after we have reflink feature now. I don't
> > > know why this case need "-l version=2,size=2560b,su=64k",
> > > if someone learns about this case, please tell me how to change this
> > > case properly. If the log size parameter is not necessary, I'd like
> > > to remove it.
> > 
> > I guess we still need the log size param, as the test is testing
> > "freeze/thaws on a small log fs", please see commit 3ebdf78c16cb ("Test
> > out pv#942130 where the unmount rec is not ungranting log space. Merge
> > of master-melb:xfs-cmds:23759a by kenmcd."), but we don't have much
> > background information from that ancient commit log..
> 
> Yeah, I can't understand the pv#942130 meaning, and can't find it by Google.
> Does anyone know the background, then tell me if it must use the minimum
> log size?

s/pv/bz/

i.e. PV was the SGI internal bug tracking system. You'll never find
it in google.

The issue with that test was exercising was a log space leak caused
by unmount records not correctly reserving/releasing log space.
Freezzing the filesystem writes an unmount record, and hence when
filesystems were repeatedly frozen (e.g. for snapshots or backups)
they'd eventually leak enough log space to hang.

With a 10MB log, 100 iterations of the freeze/unfreeze loop leaked
enough log space that the test would hang. If you're going to
increase the log size, you need to increase the number of iterations
appropriately.

(The amount of almost entirely useless crap that has stuck inside my
head over the years never ceases to amaze me!)

Cheers,

Dave.
diff mbox series

Patch

diff --git a/tests/xfs/119 b/tests/xfs/119
index bf7f1ca8..d507aacf 100755
--- a/tests/xfs/119
+++ b/tests/xfs/119
@@ -40,7 +40,14 @@  sync
 
 export MKFS_OPTIONS="-l version=2,size=2560b,su=64k" 
 export MOUNT_OPTIONS="-o logbsize=64k"
-_scratch_mkfs_xfs >/dev/null
+_scratch_mkfs_xfs >/dev/null 2>&1
+# The specified log size maybe too small if new features (e.g: reflink
+# or/and rmapbt) is enabled. So if mkfs fails, don't specify log size
+# and try to mkfs again.
+if [ $? -ne 0 ]; then
+	export MKFS_OPTIONS="-l version=2,su=64k"
+	_scratch_mkfs_xfs >/dev/null
+fi
 
 _scratch_mount