diff mbox series

xfs/513: fix 4k allocsize fails on 64k pagesize

Message ID 20200218165818.21066-1-zlang@redhat.com (mailing list archive)
State New, archived
Headers show
Series xfs/513: fix 4k allocsize fails on 64k pagesize | expand

Commit Message

Zorro Lang Feb. 18, 2020, 4:58 p.m. UTC
The minimal I/O preallocation size is page size. The allocsize=4k
always fails on 64k pagesize machine. So change the fs blocksize
allocsize test to allocsize=64k.

Signed-off-by: Zorro Lang <zlang@redhat.com>
---
 tests/xfs/513     | 4 ++--
 tests/xfs/513.out | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

Comments

Eryu Guan Feb. 23, 2020, 12:45 p.m. UTC | #1
On Wed, Feb 19, 2020 at 12:58:18AM +0800, Zorro Lang wrote:
> The minimal I/O preallocation size is page size. The allocsize=4k
> always fails on 64k pagesize machine. So change the fs blocksize
> allocsize test to allocsize=64k.
> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>

I think it's better to make the page size auto-detected, and filter out
the actual size to something like "PAGESIZE" in .out file.

> ---
>  tests/xfs/513     | 4 ++--
>  tests/xfs/513.out | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/xfs/513 b/tests/xfs/513
> index 70bc2f1c..3c3f5163 100755
> --- a/tests/xfs/513
> +++ b/tests/xfs/513
> @@ -178,13 +178,13 @@ do_test()
>  
>  echo "** start xfs mount testing ..."
>  # Test allocsize=size
> -# Valid values for this option are page size (typically 4KiB) through to 1GiB
> +# Valid values for this option are page size through to 1GiB
>  do_mkfs
>  if [ $dbsize -ge 1024 ];then
>  	blsize="$((dbsize / 1024))k"
>  fi
>  do_test "" pass "allocsize" "false"
> -do_test "-o allocsize=$blsize" pass "allocsize=$blsize" "true"
> +do_test "-o allocsize=64k" pass "allocsize=64k" "true"

do_test "-o allocsize=PAGESIZE" pass "allocsize=PAGESIZE" "true"

And do_test converts the "PAGESIZE" to actual page size.

>  do_test "-o allocsize=1048576k" pass "allocsize=1048576k" "true"
>  do_test "-o allocsize=$((dbsize / 2))" fail
>  do_test "-o allocsize=2g" fail
> diff --git a/tests/xfs/513.out b/tests/xfs/513.out
> index 9be18dd8..2d9f8384 100644
> --- a/tests/xfs/513.out
> +++ b/tests/xfs/513.out
> @@ -5,7 +5,7 @@ QA output created by 513
>  ** start xfs mount testing ...
>  FORMAT: 
>  TEST: "" "pass" "allocsize" "false"
> -TEST: "-o allocsize=4k" "pass" "allocsize=4k" "true"
> +TEST: "-o allocsize=64k" "pass" "allocsize=64k" "true"

So .out prints "... allocsize=PAGESIZE" ...

Thanks,
Eryu

>  TEST: "-o allocsize=1048576k" "pass" "allocsize=1048576k" "true"
>  TEST: "-o allocsize=2048" "fail"
>  TEST: "-o allocsize=2g" "fail"
> -- 
> 2.20.1
>
Zorro Lang Feb. 23, 2020, 4:18 p.m. UTC | #2
On Sun, Feb 23, 2020 at 08:45:48PM +0800, Eryu Guan wrote:
> On Wed, Feb 19, 2020 at 12:58:18AM +0800, Zorro Lang wrote:
> > The minimal I/O preallocation size is page size. The allocsize=4k
> > always fails on 64k pagesize machine. So change the fs blocksize
> > allocsize test to allocsize=64k.
> > 
> > Signed-off-by: Zorro Lang <zlang@redhat.com>
> 
> I think it's better to make the page size auto-detected, and filter out
> the actual size to something like "PAGESIZE" in .out file.
> 
> > ---
> >  tests/xfs/513     | 4 ++--
> >  tests/xfs/513.out | 2 +-
> >  2 files changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/tests/xfs/513 b/tests/xfs/513
> > index 70bc2f1c..3c3f5163 100755
> > --- a/tests/xfs/513
> > +++ b/tests/xfs/513
> > @@ -178,13 +178,13 @@ do_test()
> >  
> >  echo "** start xfs mount testing ..."
> >  # Test allocsize=size
> > -# Valid values for this option are page size (typically 4KiB) through to 1GiB
> > +# Valid values for this option are page size through to 1GiB
> >  do_mkfs
> >  if [ $dbsize -ge 1024 ];then
> >  	blsize="$((dbsize / 1024))k"
> >  fi
> >  do_test "" pass "allocsize" "false"
> > -do_test "-o allocsize=$blsize" pass "allocsize=$blsize" "true"
> > +do_test "-o allocsize=64k" pass "allocsize=64k" "true"
> 
> do_test "-o allocsize=PAGESIZE" pass "allocsize=PAGESIZE" "true"
> 
> And do_test converts the "PAGESIZE" to actual page size.

I thought about that too, but due to this case only uses PAGESIZE once
at here. So I don't know if it's worth changing much code for that.
And I don't think the PAGESIZE is necessary for this test, 4k and 64k
are all fine for me. The case just trys to make sure 4k/64k can be parsed by
fs_parse().

What do you think?

Thanks,
Zorro

> 
> >  do_test "-o allocsize=1048576k" pass "allocsize=1048576k" "true"
> >  do_test "-o allocsize=$((dbsize / 2))" fail
> >  do_test "-o allocsize=2g" fail
> > diff --git a/tests/xfs/513.out b/tests/xfs/513.out
> > index 9be18dd8..2d9f8384 100644
> > --- a/tests/xfs/513.out
> > +++ b/tests/xfs/513.out
> > @@ -5,7 +5,7 @@ QA output created by 513
> >  ** start xfs mount testing ...
> >  FORMAT: 
> >  TEST: "" "pass" "allocsize" "false"
> > -TEST: "-o allocsize=4k" "pass" "allocsize=4k" "true"
> > +TEST: "-o allocsize=64k" "pass" "allocsize=64k" "true"
> 
> So .out prints "... allocsize=PAGESIZE" ...
> 
> Thanks,
> Eryu
> 
> >  TEST: "-o allocsize=1048576k" "pass" "allocsize=1048576k" "true"
> >  TEST: "-o allocsize=2048" "fail"
> >  TEST: "-o allocsize=2g" "fail"
> > -- 
> > 2.20.1
> > 
>
Eryu Guan Feb. 24, 2020, 1:35 a.m. UTC | #3
On Mon, Feb 24, 2020 at 12:18:19AM +0800, Zorro Lang wrote:
> On Sun, Feb 23, 2020 at 08:45:48PM +0800, Eryu Guan wrote:
> > On Wed, Feb 19, 2020 at 12:58:18AM +0800, Zorro Lang wrote:
> > > The minimal I/O preallocation size is page size. The allocsize=4k
> > > always fails on 64k pagesize machine. So change the fs blocksize
> > > allocsize test to allocsize=64k.
> > > 
> > > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > 
> > I think it's better to make the page size auto-detected, and filter out
> > the actual size to something like "PAGESIZE" in .out file.
> > 
> > > ---
> > >  tests/xfs/513     | 4 ++--
> > >  tests/xfs/513.out | 2 +-
> > >  2 files changed, 3 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/tests/xfs/513 b/tests/xfs/513
> > > index 70bc2f1c..3c3f5163 100755
> > > --- a/tests/xfs/513
> > > +++ b/tests/xfs/513
> > > @@ -178,13 +178,13 @@ do_test()
> > >  
> > >  echo "** start xfs mount testing ..."
> > >  # Test allocsize=size
> > > -# Valid values for this option are page size (typically 4KiB) through to 1GiB
> > > +# Valid values for this option are page size through to 1GiB

From this test description, it seems we're not only testing the
arg-parsing part, but also testing if kernel could mount the ending fs.
So I thought changing 4k to 64k would lose some test coverage, the
normal 4k pagesize case is lost.

> > >  do_mkfs
> > >  if [ $dbsize -ge 1024 ];then
> > >  	blsize="$((dbsize / 1024))k"
> > >  fi
> > >  do_test "" pass "allocsize" "false"
> > > -do_test "-o allocsize=$blsize" pass "allocsize=$blsize" "true"
> > > +do_test "-o allocsize=64k" pass "allocsize=64k" "true"
> > 
> > do_test "-o allocsize=PAGESIZE" pass "allocsize=PAGESIZE" "true"
> > 
> > And do_test converts the "PAGESIZE" to actual page size.
> 
> I thought about that too, but due to this case only uses PAGESIZE once
> at here. So I don't know if it's worth changing much code for that.
> And I don't think the PAGESIZE is necessary for this test, 4k and 64k
> are all fine for me. The case just trys to make sure 4k/64k can be parsed by
> fs_parse().

If it only wants to make sure fs_parse() could parse the arg, then I'm
fine with the fix.

Thanks,
Eryu

> 
> What do you think?
> 
> Thanks,
> Zorro
> 
> > 
> > >  do_test "-o allocsize=1048576k" pass "allocsize=1048576k" "true"
> > >  do_test "-o allocsize=$((dbsize / 2))" fail
> > >  do_test "-o allocsize=2g" fail
> > > diff --git a/tests/xfs/513.out b/tests/xfs/513.out
> > > index 9be18dd8..2d9f8384 100644
> > > --- a/tests/xfs/513.out
> > > +++ b/tests/xfs/513.out
> > > @@ -5,7 +5,7 @@ QA output created by 513
> > >  ** start xfs mount testing ...
> > >  FORMAT: 
> > >  TEST: "" "pass" "allocsize" "false"
> > > -TEST: "-o allocsize=4k" "pass" "allocsize=4k" "true"
> > > +TEST: "-o allocsize=64k" "pass" "allocsize=64k" "true"
> > 
> > So .out prints "... allocsize=PAGESIZE" ...
> > 
> > Thanks,
> > Eryu
> > 
> > >  TEST: "-o allocsize=1048576k" "pass" "allocsize=1048576k" "true"
> > >  TEST: "-o allocsize=2048" "fail"
> > >  TEST: "-o allocsize=2g" "fail"
> > > -- 
> > > 2.20.1
> > > 
> > 
>
diff mbox series

Patch

diff --git a/tests/xfs/513 b/tests/xfs/513
index 70bc2f1c..3c3f5163 100755
--- a/tests/xfs/513
+++ b/tests/xfs/513
@@ -178,13 +178,13 @@  do_test()
 
 echo "** start xfs mount testing ..."
 # Test allocsize=size
-# Valid values for this option are page size (typically 4KiB) through to 1GiB
+# Valid values for this option are page size through to 1GiB
 do_mkfs
 if [ $dbsize -ge 1024 ];then
 	blsize="$((dbsize / 1024))k"
 fi
 do_test "" pass "allocsize" "false"
-do_test "-o allocsize=$blsize" pass "allocsize=$blsize" "true"
+do_test "-o allocsize=64k" pass "allocsize=64k" "true"
 do_test "-o allocsize=1048576k" pass "allocsize=1048576k" "true"
 do_test "-o allocsize=$((dbsize / 2))" fail
 do_test "-o allocsize=2g" fail
diff --git a/tests/xfs/513.out b/tests/xfs/513.out
index 9be18dd8..2d9f8384 100644
--- a/tests/xfs/513.out
+++ b/tests/xfs/513.out
@@ -5,7 +5,7 @@  QA output created by 513
 ** start xfs mount testing ...
 FORMAT: 
 TEST: "" "pass" "allocsize" "false"
-TEST: "-o allocsize=4k" "pass" "allocsize=4k" "true"
+TEST: "-o allocsize=64k" "pass" "allocsize=64k" "true"
 TEST: "-o allocsize=1048576k" "pass" "allocsize=1048576k" "true"
 TEST: "-o allocsize=2048" "fail"
 TEST: "-o allocsize=2g" "fail"