Skip to contentSkip to conversation

help on xfs test results

DISCUSSION Angelo Dureghello 3 participants 5 messages Oct 1, 2015 – Oct 5, 2015 1 message not in the archive

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive

Hi Dave,

many thanks

Quoted 31 lines · Dave Chinner
Quoted 18 lines · Angelo Dureghello

Hi all,

thanks for all the great support until now.

I finally completed all the tests in my arm 32 bit target platform, and have still 4 hopefully false positives. Below my comments:

generic tests

*** 256
/media/p6/fill.161/3.bin: No space left on device

- output mismatch (see
/home/angelo/xfstests/results//./generic/256.out.bad)

     --- tests/./generic/256.out	2015-09-17 10:54:06.815078834 +0000
     +++
Quoted 11 lines

/home/angelo/xfstests/results//./generic/256.out.bad 2000-01-01
00:42:13.822058816 +0000
@@ -1 +1,2229 @@
QA output created by 256
+wrote 1073741824/1073741824 bytes at offset 0
+1 GiB, 262144 ops; 0:02:35.00 (6.602 MiB/sec and 1690.0353 ops/sec) +pwrite64: No space left on device
+pwrite64: No space left on device
+pwrite64: No space left on device
+pwrite64: No space left on device
...

Quoted 3 lines

There should be ENOSPC being reported during the test but they should all be redirected to /dev/null. Perhaps shomething wrong with redirection?

Well, this is generic/256,
the expected output is null,
my output btw is full of failed and also non-failed operations. Sounds quite strange.

QA output created by 256
wrote 1073741824/1073741824 bytes at offset 0
1 GiB, 262144 ops; 0:01:58.00 (8.653 MiB/sec and 2215.1991 ops/sec)
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
pwrite64: No space left on device
/media/p6/fill/13.bin: No space left on device /media/p6/fill/14.bin: No space left on device /media/p6/fill/15.bin: No space left on device /media/p6/fill/16.bin: No space left on device /media/p6/fill/17.bin: No space left on device /media/p6/fill/18.bin: No space left on device /media/p6/fill/19.bin: No space left on device /media/p6/fill/20.bin: No space left on device
wrote 8192/8192 bytes at offset 0
8 KiB, 2 ops; 0.0000 sec (2.031 MiB/sec and 519.8856 ops/sec)
pwrite64: No space left on device
pwrite64: No space left on device
wrote 8192/8192 bytes at offset 0
8 KiB, 2 ops; 0.0000 sec (427.122 KiB/sec and 106.7806 ops/sec)
pwrite64: No space left on device
pwrite64: No space left on device
wrote 8192/8192 bytes at offset 0
8 KiB, 2 ops; 0.0000 sec (49.019 KiB/sec and 12.2548 ops/sec)
pwrite64: No space left on device
pwrite64: No space left on device
wrote 8192/8192 bytes at offset 0
.....

Quoted 4 lines
Quoted 3 lines

xfs tests
**** 020

Quoted 9 lines

You need to be more explicit about the test description. Does "020" mean generic/020, xfs/020, btrfs/020, etc?

Quoted 2 lines

creates a 60t, fails if > 16t (Growing the data section failed), could be normal in 32bit arch ?

32 bit system can't use a 60TB block device or file, so this needs a "_requires_64bit_blockdev" type of check.

ack, thanks.

Quoted 6 lines
Quoted 2 lines

**** 080
Looks like not XFS issue. mmap() failed, no more memory after 2,5G

various tests will fail if you don't have enough memory or address space. Expunge them from your normal testing if it's just memory allocation that is the problem.

ack, thanks.

Quoted 7 lines
Quoted 3 lines

**** 136
very long test, output similar but different values

xfs/136 shouldn't run your machine out of memory. If it does, then you probably should start looking for a memory leak...

Sorry, was not precise in explaining this.
This is xfs/136,
Test is very long and full of differences compared to the expected .out. Strange thing is that the the messages are very similar, but values displayed are different.

xfs/136 - output mismatch (see
/home/angelo/xfstests/results//xfs/136.out.bad)

     --- tests/xfs/136.out	2015-09-17 10:54:06.984088997 +0000
     +++ /home/angelo/xfstests/results//xfs/136.out.bad	2015-09-20
# diff 136.out.bad ../../tests/xfs/136.out
17c17
< core.forkoff = 47 (376 bytes)
---
Quoted 1 line

core.forkoff = 24 (192 bytes)

34c34
< core.forkoff = 47 (376 bytes)
---

Quoted 1 line

core.forkoff = 24 (192 bytes)

57c57
< core.forkoff = 44 (352 bytes)
---

Quoted 1 line

core.forkoff = 24 (192 bytes)

92c92
< core.forkoff = 37 (296 bytes)
---

Quoted 1 line

core.forkoff = 24 (192 bytes)

150,250c150,153
< core.naextents = 0
< core.forkoff = 22 (176 bytes)
< core.aformat = 1 (local)
< a.sfattr.hdr.totsize = 235
< a.sfattr.hdr.count = 16
< a.sfattr.list[0].namelen = 6
< a.sfattr.list[0].valuelen = 5
< a.sfattr.list[0].root = 0
< a.sfattr.list[0].secure = 0
< a.sfattr.list[0].name = "name.1"
< a.sfattr.list[0].value = "value"
< a.sfattr.list[1].namelen = 6
< a.sfattr.list[1].valuelen = 5
< a.sfattr.list[1].root = 0
< a.sfattr.list[1].secure = 0
< a.sfattr.list[1].name = "name.2"
< a.sfattr.list[1].value = "value"
< a.sfattr.list[2].namelen = 6
< a.sfattr.list[2].valuelen = 5
< a.sfattr.list[2].root = 0
< a.sfattr.list[2].secure = 0
< a.sfattr.list[2].name = "name.3"
< a.sfattr.list[2].value = "value"
< a.sfattr.list[3].namelen = 6
< a.sfattr.list[3].valuelen = 5
< a.sfattr.list[3].root = 0
< a.sfattr.list[3].secure = 0
< a.sfattr.list[3].name = "name.4"
< a.sfattr.list[3].value = "value"
< a.sfattr.list[4].namelen = 6
< a.sfattr.list[4].valuelen = 5
< a.sfattr.list[4].root = 0
< a.sfattr.list[4].secure = 0
< a.sfattr.list[4].name = "name.5"
< a.sfattr.list[4].value = "value"
< a.sfattr.list[5].namelen = 6
< a.sfattr.list[5].valuelen = 5
< a.sfattr.list[5].root = 0
< a.sfattr.list[5].secure = 0
< a.sfattr.list[5].name = "name.6"
< a.sfattr.list[5].value = "value"
< a.sfattr.list[6].namelen = 6
< a.sfattr.list[6].valuelen = 5
< a.sfattr.list[6].root = 0
< a.sfattr.list[6].secure = 0
< a.sfattr.list[6].name = "name.7"
< a.sfattr.list[6].value = "value"
< a.sfattr.list[7].namelen = 6
< a.sfattr.list[7].valuelen = 5
< a.sfattr.list[7].root = 0
< a.sfattr.list[7].secure = 0
< a.sfattr.list[7].name = "name.8"
< a.sfattr.list[7].value = "value"
< a.sfattr.list[8].namelen = 6
< a.sfattr.list[8].valuelen = 5
< a.sfattr.list[8].root = 0
< a.sfattr.list[8].secure = 0
< a.sfattr.list[8].name = "name.9"
< a.sfattr.list[8].value = "value"
< a.sfattr.list[9].namelen = 7
< a.sfattr.list[9].valuelen = 5
< a.sfattr.list[9].root = 0
< a.sfattr.list[9].secure = 0
< a.sfattr.list[9].name = "name.10"
< a.sfattr.list[9].value = "value"
< a.sfattr.list[10].namelen = 7
< a.sfattr.list[10].valuelen = 5
< a.sfattr.list[10].root = 0
< a.sfattr.list[10].secure = 0
< a.sfattr.list[10].name = "name.11"
< a.sfattr.list[10].value = "value"
< a.sfattr.list[11].namelen = 7
< a.sfattr.list[11].valuelen = 5
< a.sfattr.list[11].root = 0
< a.sfattr.list[11].secure = 0
< a.sfattr.list[11].name = "name.12"
< a.sfattr.list[11].value = "value"
< a.sfattr.list[12].namelen = 7
< a.sfattr.list[12].valuelen = 5
< a.sfattr.list[12].root = 0
< a.sfattr.list[12].secure = 0
< a.sfattr.list[12].name = "name.13"
< a.sfattr.list[12].value = "value"
< a.sfattr.list[13].namelen = 7
< a.sfattr.list[13].valuelen = 5
< a.sfattr.list[13].root = 0
< a.sfattr.list[13].secure = 0
< a.sfattr.list[13].name = "name.14"
< a.sfattr.list[13].value = "value"
< a.sfattr.list[14].namelen = 7
< a.sfattr.list[14].valuelen = 5
< a.sfattr.list[14].root = 0
< a.sfattr.list[14].secure = 0
< a.sfattr.list[14].name = "name.15"
< a.sfattr.list[14].value = "value"
< a.sfattr.list[15].namelen = 7
< a.sfattr.list[15].valuelen = 5
< a.sfattr.list[15].root = 0
< a.sfattr.list[15].secure = 0
< a.sfattr.list[15].name = "name.16"
< a.sfattr.list[15].value = "value"
---

Quoted 4 lines

core.naextents = 1
core.forkoff = 24 (192 bytes)
core.aformat = 2 (extents)
a.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,16,1,0]

.....

Regards,
Angelo

#2 lore raw
Quoted 13 lines · Angelo Dureghello
Quoted 12 lines · Dave Chinner
Quoted 10 lines · Angelo Dureghello

00:42:13.822058816 +0000
@@ -1 +1,2229 @@
QA output created by 256
+wrote 1073741824/1073741824 bytes at offset 0
+1 GiB, 262144 ops; 0:02:35.00 (6.602 MiB/sec and 1690.0353 ops/sec) +pwrite64: No space left on device
+pwrite64: No space left on device
+pwrite64: No space left on device
+pwrite64: No space left on device
...

Quoted 8 lines
Quoted 3 lines

There should be ENOSPC being reported during the test but they should all be redirected to /dev/null. Perhaps shomething wrong with redirection?

Well, this is generic/256,
the expected output is null,
my output btw is full of failed and also non-failed operations. Sounds quite strange.

It uses "&> /dev/null" as the method of redirection. what happens if you replace that with something like "> /dev/null 2>&1"?

....

Quoted 13 lines
Quoted 6 lines
Quoted 2 lines

**** 136
very long test, output similar but different values

xfs/136 shouldn't run your machine out of memory. If it does, then you probably should start looking for a memory leak...

Sorry, was not precise in explaining this.
This is xfs/136,
Test is very long and full of differences compared to the expected .out. Strange thing is that the the messages are very similar, but values displayed are different.

Quoted 5 lines

xfs/136 - output mismatch (see
/home/angelo/xfstests/results//xfs/136.out.bad)

     --- tests/xfs/136.out	2015-09-17 10:54:06.984088997 +0000
     +++ /home/angelo/xfstests/results//xfs/136.out.bad	2015-09-20

Ah, xfs/136 is not part of the "auto" group. That means it's unreliable. Indeed, the original commit back in 2006:

commit 7dcf3ce6f95603965b51c53d0a48864b0c6e8268

Author: Tim Shimmin <[email protected]>
Date:   Tue Oct 17 06:10:19 2006 +0000

test out attr2 with different number of extents and number of EAs - with both sizes shrinking and enlarging and changing formats. Need to fix up the output before setting live. Merge of master-melb:xfs-cmds:27208a by kenmcd.

had output problems and it has never been fixed...

And, looking at:

commit 3e29b0b732f2386aa01e1b8d6dc3e57bfe6d3762

Author: Tim Shimmin <[email protected]>
Date:   Fri Dec 1 14:46:42 2006 +0000

Add some more tests for the attr2 test.
Do some EA and extent interaction at different formats due to different number of extents and EAs.
It showed up the current attr2 bug.
With the proposed patch this doesn't happen.
Merge of master-melb:xfs-cmds:27606a by kenmcd.

The diff has:

-- a/136.out
+++ b/136.out
@@ -22,7 +22,7 @@ core.size = 0
core.extsize = 0
core.nextents = 0
core.naextents = 0
-core.forkoff = 47 (376 bytes)
+core.forkoff = 24 (192 bytes)
core.aformat = 1 (local)
a.sfattr.hdr.totsize = 18
a.sfattr.hdr.count = 1
@@ -39,7 +39,7 @@ core.size = 0
core.extsize = 0
core.nextents = 0
core.naextents = 0
-core.forkoff = 47 (376 bytes)
+core.forkoff = 24 (192 bytes)
core.aformat = 1 (local)
a.sfattr.hdr.totsize = 32
a.sfattr.hdr.count = 2
@@ -62,7 +62,7 @@ core.size = 0
core.extsize = 0
core.nextents = 0
core.naextents = 0
-core.forkoff = 44 (352 bytes)
+core.forkoff = 24 (192 bytes)
core.aformat = 1 (local)
a.sfattr.hdr.totsize = 60
a.sfattr.hdr.count = 4
@@ -97,7 +97,7 @@ core.size = 0
core.extsize = 0
core.nextents = 0
core.naextents = 0
-core.forkoff = 37 (296 bytes)
+core.forkoff = 24 (192 bytes)
core.aformat = 1 (local)
a.sfattr.hdr.totsize = 116
a.sfattr.hdr.count = 8

Which looks very much like the diff you are seeing, and I think the bug referred to by the commit message was fixed by this commit:

http://oss.sgi.com/cgi-bin/gitweb.cgi?p=archive/xfs-import.git;a=commitdiff;h=94aa0de19b6654848be060d4bcae2e9147733d41

which implies the attribute fork is being created with the wrong size. Hmmm.

Are you testing with something like selinux or some other security subsystem enabled that creates attributes at inode creation time?

Also, can you run this:

$ pahole fs/xfs/libxfs/xfs_attr.o

And grab the output of these structure definitions:

(from x86-64, using gcc 4.9.3):

struct xfs_attr_sf_hdr {
        __be16                     totsize;              /*     0     2 */
        __u8                       count;                /*     2     1 */

        /* size: 4, cachelines: 1, members: 2 */
        /* padding: 1 */
        /* last cacheline: 4 bytes */
};
struct xfs_attr_sf_entry {
        __uint8_t                  namelen;              /*     0     1 */
        __uint8_t                  valuelen;             /*     1     1 */
        __uint8_t                  flags;                /*     2     1 */
        __uint8_t                  nameval[1];           /*     3     1 */
        /* size: 4, cachelines: 1, members: 4 */
        /* last cacheline: 4 bytes */
};
struct xfs_attr_shortform {
        struct xfs_attr_sf_hdr     hdr;                  /*     0     4 */

        /* XXX last struct has 1 byte of padding */

        struct xfs_attr_sf_entry   list[1];              /*     4     4 */

        /* size: 8, cachelines: 1, members: 2 */
        /* paddings: 1, sum paddings: 1 */
        /* last cacheline: 8 bytes */
};

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
#3 lore raw
Quoted 2 lines · Dave Chinner

Are you testing with something like selinux or some other security subsystem enabled that creates attributes at inode creation time?

In theory, xfstests detects this and mounts with an fs-wide context to avoid that...

-Eric

#4 lore raw
Quoted 8 lines · Eric Sandeen
Quoted 2 lines · Dave Chinner

Are you testing with something like selinux or some other security subsystem enabled that creates attributes at inode creation time?

In theory, xfstests detects this and mounts with an fs-wide context to avoid that...

For selinux, yes. i don't think it's aware of anything else, though...

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
#5 lore raw

Hi Dave, Eric and all,

still thanks.

About generic/256 failing in my system,

in the xfstests README there is:

- create fsgqa test user ("sudo useradd fsgqa")

this creates the user, but in /etc/passwd comes "/bin/sh" as shell, and in this system is it "dash". Redirection to /dev/null as required from this test then fails. Setting to "/bin/bash" test passes.

About xfs/136,

ack, thanks.

Quoted 10 lines · Dave Chinner
Quoted 8 lines · Eric Sandeen
Quoted 2 lines · Dave Chinner

Are you testing with something like selinux or some other security subsystem enabled that creates attributes at inode creation time?

In theory, xfstests detects this and mounts with an fs-wide context to avoid that...

Quoted 7 lines

For selinux, yes. i don't think it's aware of anything else, though...

Cheers,

Dave.

Best regards
Angelo