public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] du01 with btrfs on systems with > 4k page size
@ 2016-11-09 15:29 Stanislav Kholmanskikh
  2016-11-09 16:18 ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Stanislav Kholmanskikh @ 2016-11-09 15:29 UTC (permalink / raw)
  To: ltp

Hi!

On SPARC the default page size is 8k.

And du01 fails with btrfs at check3:

du01 3 TFAIL : 'du -a' failed
du01 4 TINFO : Looking for '[0-4][[:space:]]\.\/testdir\/testsymlink' in:
10240  ./testfile
8      ./testdir/testsymlink
8      ./testdir
10248  .
du01 4 TFAIL : 'du --all' failed
du01 5 TINFO : Looking for '[0-4][[:space:]]\.\/testdir\/testsymlink' in:
10240  ./testfile
8      ./testdir/testsymlink
8      ./testdir
10248  .

i.e. the testsymlink is 8k whereas at most 4k is expected by the test case.

In commit bdd09b1c6f2c8ad ("du01.sh: Fix failures on Btrfs on ppc64le")
a similar situation was fixed, but for check5 and check6. I'm curious
why check3 doesn't fail on ppc64. It seems it should fail with the
current code.

Could, please, anybody with access to a ppc64 box run this test case
with btrfs and/or provide the output from commands:

[root@skholman-m7 du]# cd /mnt
[root@skholman-m7 mnt]# mkdir basedir
[root@skholman-m7 mnt]# cd basedir/
[root@skholman-m7 basedir]# dd if=/dev/zero of=testfile bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00825522 s, 1.3 GB/s
[root@skholman-m7 basedir]# mkdir -p testdir
[root@skholman-m7 basedir]# ln -s ../testfile testdir/testsymlink
[root@skholman-m7 basedir]# du -a
10240	./testfile
8	./testdir/testsymlink
8	./testdir
10248	.
[root@skholman-m7 basedir]#

?

Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [LTP] du01 with btrfs on systems with > 4k page size
  2016-11-09 15:29 [LTP] du01 with btrfs on systems with > 4k page size Stanislav Kholmanskikh
@ 2016-11-09 16:18 ` Cyril Hrubis
  2016-11-10 14:39   ` Stanislav Kholmanskikh
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2016-11-09 16:18 UTC (permalink / raw)
  To: ltp

Hi!
> On SPARC the default page size is 8k.
> 
> And du01 fails with btrfs at check3:
> 
> du01 3 TFAIL : 'du -a' failed
> du01 4 TINFO : Looking for '[0-4][[:space:]]\.\/testdir\/testsymlink' in:
> 10240  ./testfile
> 8      ./testdir/testsymlink
> 8      ./testdir
> 10248  .
> du01 4 TFAIL : 'du --all' failed
> du01 5 TINFO : Looking for '[0-4][[:space:]]\.\/testdir\/testsymlink' in:
> 10240  ./testfile
> 8      ./testdir/testsymlink
> 8      ./testdir
> 10248  .
> 
> i.e. the testsymlink is 8k whereas at most 4k is expected by the test case.
> 
> In commit bdd09b1c6f2c8ad ("du01.sh: Fix failures on Btrfs on ppc64le")
> a similar situation was fixed, but for check5 and check6. I'm curious
> why check3 doesn't fail on ppc64. It seems it should fail with the
> current code.
>
> Could, please, anybody with access to a ppc64 box run this test case
> with btrfs and/or provide the output from commands:
> 
> [root@skholman-m7 du]# cd /mnt
> [root@skholman-m7 mnt]# mkdir basedir
> [root@skholman-m7 mnt]# cd basedir/
> [root@skholman-m7 basedir]# dd if=/dev/zero of=testfile bs=1M count=10
> 10+0 records in
> 10+0 records out
> 10485760 bytes (10 MB) copied, 0.00825522 s, 1.3 GB/s
> [root@skholman-m7 basedir]# mkdir -p testdir
> [root@skholman-m7 basedir]# ln -s ../testfile testdir/testsymlink
> [root@skholman-m7 basedir]# du -a
> 10240	./testfile
> 8	./testdir/testsymlink
> 8	./testdir
> 10248	.
> [root@skholman-m7 basedir]#

It's really 64k for a symlink:

du -a
10240   ./testfile
64      ./testdir/testsymlink
64      ./testdir
10304   .

And the reason that it works is:

commit 9712f3122a46c43fccd694ee7204ec8c19cfacdc
Author: Cyril Hrubis <chrubis@suse.cz>
Date:   Wed Jan 13 17:33:51 2016 +0100

    commands: du01.sh; Btrfs fix.

    Btrfs reports symlinks to be 4 blocks in size.

    Also rename the test symlink so that it's clear it's
    symlink.


Since the grep ignores the 6 at the start of the pattern and succeeds.
It's strange that logs I have in SUSE bugzilla says that it was 4k in
size, but that may have been true for some other kernel, since the
pagesize is configurable in kernel .config.

So I guess that we should fix the pattern to match anyhing that could be
pagesize. For PPC64 that should be one of 4K/16K/64K/256K, it's 8K for
sparc apparently so I guess that we should go for 2^n between 4 and
256.

And we may also specify that the pattern should start matching at the
start of the line, otherwise the test will still pass if there was some
garbage before the correct string.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [LTP] du01 with btrfs on systems with > 4k page size
  2016-11-09 16:18 ` Cyril Hrubis
@ 2016-11-10 14:39   ` Stanislav Kholmanskikh
  2016-11-10 15:12     ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Stanislav Kholmanskikh @ 2016-11-10 14:39 UTC (permalink / raw)
  To: ltp



On 11/09/2016 07:18 PM, Cyril Hrubis wrote:
> Hi!
>> On SPARC the default page size is 8k.
>>
>> And du01 fails with btrfs at check3:
>>
>> du01 3 TFAIL : 'du -a' failed
>> du01 4 TINFO : Looking for '[0-4][[:space:]]\.\/testdir\/testsymlink' in:
>> 10240  ./testfile
>> 8      ./testdir/testsymlink
>> 8      ./testdir
>> 10248  .
>> du01 4 TFAIL : 'du --all' failed
>> du01 5 TINFO : Looking for '[0-4][[:space:]]\.\/testdir\/testsymlink' in:
>> 10240  ./testfile
>> 8      ./testdir/testsymlink
>> 8      ./testdir
>> 10248  .
>>
>> i.e. the testsymlink is 8k whereas at most 4k is expected by the test case.
>>
>> In commit bdd09b1c6f2c8ad ("du01.sh: Fix failures on Btrfs on ppc64le")
>> a similar situation was fixed, but for check5 and check6. I'm curious
>> why check3 doesn't fail on ppc64. It seems it should fail with the
>> current code.
>>
>> Could, please, anybody with access to a ppc64 box run this test case
>> with btrfs and/or provide the output from commands:
>>
>> [root@skholman-m7 du]# cd /mnt
>> [root@skholman-m7 mnt]# mkdir basedir
>> [root@skholman-m7 mnt]# cd basedir/
>> [root@skholman-m7 basedir]# dd if=/dev/zero of=testfile bs=1M count=10
>> 10+0 records in
>> 10+0 records out
>> 10485760 bytes (10 MB) copied, 0.00825522 s, 1.3 GB/s
>> [root@skholman-m7 basedir]# mkdir -p testdir
>> [root@skholman-m7 basedir]# ln -s ../testfile testdir/testsymlink
>> [root@skholman-m7 basedir]# du -a
>> 10240	./testfile
>> 8	./testdir/testsymlink
>> 8	./testdir
>> 10248	.
>> [root@skholman-m7 basedir]#
> 
> It's really 64k for a symlink:
> 
> du -a
> 10240   ./testfile
> 64      ./testdir/testsymlink
> 64      ./testdir
> 10304   .
> 

Thank you.

> And the reason that it works is:
> 
> commit 9712f3122a46c43fccd694ee7204ec8c19cfacdc
> Author: Cyril Hrubis <chrubis@suse.cz>
> Date:   Wed Jan 13 17:33:51 2016 +0100
> 
>     commands: du01.sh; Btrfs fix.
> 
>     Btrfs reports symlinks to be 4 blocks in size.
> 
>     Also rename the test symlink so that it's clear it's
>     symlink.
> 
> 
> Since the grep ignores the 6 at the start of the pattern and succeeds.
> It's strange that logs I have in SUSE bugzilla says that it was 4k in
> size, but that may have been true for some other kernel, since the
> pagesize is configurable in kernel .config.
> 
> So I guess that we should fix the pattern to match anyhing that could be
> pagesize. For PPC64 that should be one of 4K/16K/64K/256K, it's 8K for
> sparc apparently so I guess that we should go for 2^n between 4 and
> 256.

Maybe determine the default page size at runtime (getconf PAGESIZE) and
check if testsymlink is either 0 or the page size?


> 
> And we may also specify that the pattern should start matching at the
> start of the line, otherwise the test will still pass if there was some
> garbage before the correct string.
> 

Agreed. For all the checks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [LTP] du01 with btrfs on systems with > 4k page size
  2016-11-10 14:39   ` Stanislav Kholmanskikh
@ 2016-11-10 15:12     ` Cyril Hrubis
  2016-11-16 15:39       ` [LTP] [PATCH 1/2] du01.sh: start matching at the beginning of a line Stanislav Kholmanskikh
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2016-11-10 15:12 UTC (permalink / raw)
  To: ltp

Hi!
> > Since the grep ignores the 6 at the start of the pattern and succeeds.
> > It's strange that logs I have in SUSE bugzilla says that it was 4k in
> > size, but that may have been true for some other kernel, since the
> > pagesize is configurable in kernel .config.
> > 
> > So I guess that we should fix the pattern to match anyhing that could be
> > pagesize. For PPC64 that should be one of 4K/16K/64K/256K, it's 8K for
> > sparc apparently so I guess that we should go for 2^n between 4 and
> > 256.
> 
> Maybe determine the default page size at runtime (getconf PAGESIZE) and
> check if testsymlink is either 0 or the page size?

Sounds good.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [LTP] [PATCH 1/2] du01.sh: start matching at the beginning of a line
  2016-11-10 15:12     ` Cyril Hrubis
@ 2016-11-16 15:39       ` Stanislav Kholmanskikh
  2016-11-16 15:39         ` [LTP] [PATCH 2/2] du01.sh: BTRFS fix for the symlink Stanislav Kholmanskikh
  0 siblings, 1 reply; 8+ messages in thread
From: Stanislav Kholmanskikh @ 2016-11-16 15:39 UTC (permalink / raw)
  To: ltp

Otherwise the test may pass if there is some garbage before
the correct string.

Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
---
 testcases/commands/du/du01.sh |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/testcases/commands/du/du01.sh b/testcases/commands/du/du01.sh
index a0e3017..823c50a 100755
--- a/testcases/commands/du/du01.sh
+++ b/testcases/commands/du/du01.sh
@@ -86,17 +86,17 @@ block_size=512
 # The output could be different in some systems, if we use du to
 # estimate file space usage with the same filesystem and the same size.
 # So we use the approximate value to check.
-check1="10[2-3][0-9][0-9][[:space:]]\."
-check2="10[2-3][0-9][0-9][[:space:]]testfile"
-check3="[0-4][[:space:]]\.\/testdir\/testsymlink"
-check5="20[4-6][0-9][0-9][[:space:]]\."
-check7="10[4-5][0-9][0-9]\{4\}[[:space:]]\."
-check9="10[2-3][0-9][0-9][[:space:]]total"
-check11="10[2-3][0-9][0-9][[:space:]]testdir\/testsymlink"
-check14="1[0,1]M[[:space:]]\."
-check16="10[2-3][0-9][0-9][[:space:]]testdir\/"
-check20="11M[[:space:]]\."
-check23="[0-9]\{1,2\}[[:space:]]\."
+check1="^10[2-3][0-9][0-9][[:space:]]\."
+check2="^10[2-3][0-9][0-9][[:space:]]testfile"
+check3="^[0-4][[:space:]]\.\/testdir\/testsymlink"
+check5="^20[4-6][0-9][0-9][[:space:]]\."
+check7="^10[4-5][0-9][0-9]\{4\}[[:space:]]\."
+check9="^10[2-3][0-9][0-9][[:space:]]total"
+check11="^10[2-3][0-9][0-9][[:space:]]testdir\/testsymlink"
+check14="^1[0,1]M[[:space:]]\."
+check16="^10[2-3][0-9][0-9][[:space:]]testdir\/"
+check20="^11M[[:space:]]\."
+check23="^[0-9]\{1,2\}[[:space:]]\."
 
 du_test "du" ${check1}
 du_test "du testfile" ${check2}
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [LTP] [PATCH 2/2] du01.sh: BTRFS fix for the symlink
  2016-11-16 15:39       ` [LTP] [PATCH 1/2] du01.sh: start matching at the beginning of a line Stanislav Kholmanskikh
@ 2016-11-16 15:39         ` Stanislav Kholmanskikh
  2016-11-21 12:40           ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Stanislav Kholmanskikh @ 2016-11-16 15:39 UTC (permalink / raw)
  To: ltp

By default, BTRFS reports symlinks to be of page size.

Modify the corresponding check to verify if the symlink
is either 0 or page size.

Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
---
 testcases/commands/du/du01.sh |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/testcases/commands/du/du01.sh b/testcases/commands/du/du01.sh
index 823c50a..7b17f6f 100755
--- a/testcases/commands/du/du01.sh
+++ b/testcases/commands/du/du01.sh
@@ -83,12 +83,18 @@ setup
 
 block_size=512
 
+page_size=$(getconf PAGESIZE)
+if [ "$page_size" -lt 1024 ]; then
+	tst_brkm TBROK "Page size < 1024"
+fi
+page_size=$(( page_size / 1024 ))
+
 # The output could be different in some systems, if we use du to
 # estimate file space usage with the same filesystem and the same size.
 # So we use the approximate value to check.
 check1="^10[2-3][0-9][0-9][[:space:]]\."
 check2="^10[2-3][0-9][0-9][[:space:]]testfile"
-check3="^[0-4][[:space:]]\.\/testdir\/testsymlink"
+check3="^\(0\|${page_size}\)[[:space:]]\.\/testdir\/testsymlink"
 check5="^20[4-6][0-9][0-9][[:space:]]\."
 check7="^10[4-5][0-9][0-9]\{4\}[[:space:]]\."
 check9="^10[2-3][0-9][0-9][[:space:]]total"
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [LTP] [PATCH 2/2] du01.sh: BTRFS fix for the symlink
  2016-11-16 15:39         ` [LTP] [PATCH 2/2] du01.sh: BTRFS fix for the symlink Stanislav Kholmanskikh
@ 2016-11-21 12:40           ` Cyril Hrubis
  2016-11-21 14:07             ` Stanislav Kholmanskikh
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2016-11-21 12:40 UTC (permalink / raw)
  To: ltp

Hi!
> By default, BTRFS reports symlinks to be of page size.
> 
> Modify the corresponding check to verify if the symlink
> is either 0 or page size.
> 
> Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
> ---
>  testcases/commands/du/du01.sh |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> diff --git a/testcases/commands/du/du01.sh b/testcases/commands/du/du01.sh
> index 823c50a..7b17f6f 100755
> --- a/testcases/commands/du/du01.sh
> +++ b/testcases/commands/du/du01.sh
> @@ -83,12 +83,18 @@ setup
>  
>  block_size=512
>  
> +page_size=$(getconf PAGESIZE)
> +if [ "$page_size" -lt 1024 ]; then
> +	tst_brkm TBROK "Page size < 1024"
> +fi

I doubt that this will ever happen, but it does not do any harm anyway.

Both patches acked, thanks for fixing this.

> +page_size=$(( page_size / 1024 ))
> +
>  # The output could be different in some systems, if we use du to
>  # estimate file space usage with the same filesystem and the same size.
>  # So we use the approximate value to check.
>  check1="^10[2-3][0-9][0-9][[:space:]]\."
>  check2="^10[2-3][0-9][0-9][[:space:]]testfile"
> -check3="^[0-4][[:space:]]\.\/testdir\/testsymlink"
> +check3="^\(0\|${page_size}\)[[:space:]]\.\/testdir\/testsymlink"
>  check5="^20[4-6][0-9][0-9][[:space:]]\."
>  check7="^10[4-5][0-9][0-9]\{4\}[[:space:]]\."
>  check9="^10[2-3][0-9][0-9][[:space:]]total"
> -- 
> 1.7.1
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [LTP] [PATCH 2/2] du01.sh: BTRFS fix for the symlink
  2016-11-21 12:40           ` Cyril Hrubis
@ 2016-11-21 14:07             ` Stanislav Kholmanskikh
  0 siblings, 0 replies; 8+ messages in thread
From: Stanislav Kholmanskikh @ 2016-11-21 14:07 UTC (permalink / raw)
  To: ltp



On 11/21/2016 03:40 PM, Cyril Hrubis wrote:
> Hi!
>> By default, BTRFS reports symlinks to be of page size.
>>
>> Modify the corresponding check to verify if the symlink
>> is either 0 or page size.
>>
>> Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
>> ---
>>  testcases/commands/du/du01.sh |    8 +++++++-
>>  1 files changed, 7 insertions(+), 1 deletions(-)
>>
>> diff --git a/testcases/commands/du/du01.sh b/testcases/commands/du/du01.sh
>> index 823c50a..7b17f6f 100755
>> --- a/testcases/commands/du/du01.sh
>> +++ b/testcases/commands/du/du01.sh
>> @@ -83,12 +83,18 @@ setup
>>  
>>  block_size=512
>>  
>> +page_size=$(getconf PAGESIZE)
>> +if [ "$page_size" -lt 1024 ]; then
>> +	tst_brkm TBROK "Page size < 1024"
>> +fi
> 
> I doubt that this will ever happen, but it does not do any harm anyway.
> 
> Both patches acked, thanks for fixing this.

Thank you. Pushed.


> 
>> +page_size=$(( page_size / 1024 ))
>> +
>>  # The output could be different in some systems, if we use du to
>>  # estimate file space usage with the same filesystem and the same size.
>>  # So we use the approximate value to check.
>>  check1="^10[2-3][0-9][0-9][[:space:]]\."
>>  check2="^10[2-3][0-9][0-9][[:space:]]testfile"
>> -check3="^[0-4][[:space:]]\.\/testdir\/testsymlink"
>> +check3="^\(0\|${page_size}\)[[:space:]]\.\/testdir\/testsymlink"
>>  check5="^20[4-6][0-9][0-9][[:space:]]\."
>>  check7="^10[4-5][0-9][0-9]\{4\}[[:space:]]\."
>>  check9="^10[2-3][0-9][0-9][[:space:]]total"
>> -- 
>> 1.7.1
>>
>>
>> -- 
>> Mailing list info: https://lists.linux.it/listinfo/ltp
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-11-21 14:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-09 15:29 [LTP] du01 with btrfs on systems with > 4k page size Stanislav Kholmanskikh
2016-11-09 16:18 ` Cyril Hrubis
2016-11-10 14:39   ` Stanislav Kholmanskikh
2016-11-10 15:12     ` Cyril Hrubis
2016-11-16 15:39       ` [LTP] [PATCH 1/2] du01.sh: start matching at the beginning of a line Stanislav Kholmanskikh
2016-11-16 15:39         ` [LTP] [PATCH 2/2] du01.sh: BTRFS fix for the symlink Stanislav Kholmanskikh
2016-11-21 12:40           ` Cyril Hrubis
2016-11-21 14:07             ` Stanislav Kholmanskikh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox