2021-06-29 17:23:20

by Josef Bacik

[permalink] [raw]
Subject: Re: [BUG] btrfs potential failure on 32 core LTP test (fallocate05)

On 6/29/21 1:00 PM, Krzysztof Kozlowski wrote:
> Dear BTRFS folks,
>
> I am hitting a potential regression of btrfs, visible only with
> fallocate05 test from LTP (Linux Test Project) only on 32+ core Azure
> instances (x86_64).
>
> Tested:
> v5.8 (Ubuntu with our stable patches): PASS
> v5.11 (Ubuntu with our stable patches): FAIL
> v5.13 mainline: FAIL
>
> PASS means test passes on all instances
> FAIL means test passes on other instance types (e.g. 4 or 16 core) but
> fails on 32 and 64 core instances (did not test higher),
> e.g.: Standard_F32s_v2, Standard_F64s_v2, Standard_D32s_v3,
> Standard_E32s_v3
>
> Reproduction steps:
> git clone https://github.com/linux-test-project/ltp.git
> cd ltp
> ./build.sh && make install -j8
> cd ../ltp-install
> sudo ./runltp -f syscalls -s fallocate05
>

This thing keeps trying to test ext2, how do I make it only test btrfs? Thanks,

Josef


2021-06-29 17:26:28

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [BUG] btrfs potential failure on 32 core LTP test (fallocate05)

On 29/06/2021 19:20, Josef Bacik wrote:
> On 6/29/21 1:00 PM, Krzysztof Kozlowski wrote:
>> Dear BTRFS folks,
>>
>> I am hitting a potential regression of btrfs, visible only with
>> fallocate05 test from LTP (Linux Test Project) only on 32+ core Azure
>> instances (x86_64).
>>
>> Tested:
>> v5.8 (Ubuntu with our stable patches): PASS
>> v5.11 (Ubuntu with our stable patches): FAIL
>> v5.13 mainline: FAIL
>>
>> PASS means test passes on all instances
>> FAIL means test passes on other instance types (e.g. 4 or 16 core) but
>> fails on 32 and 64 core instances (did not test higher),
>> e.g.: Standard_F32s_v2, Standard_F64s_v2, Standard_D32s_v3,
>> Standard_E32s_v3
>>
>> Reproduction steps:
>> git clone https://github.com/linux-test-project/ltp.git
>> cd ltp
>> ./build.sh && make install -j8
>> cd ../ltp-install
>> sudo ./runltp -f syscalls -s fallocate05
>>
>
> This thing keeps trying to test ext2, how do I make it only test btrfs? Thanks,

It tests all available file systems, just wait till it gets to btrfs. I
don't know how to limit it only to one file system.


Best regards,
Krzysztof

2021-06-30 11:22:10

by Petr Vorel

[permalink] [raw]
Subject: Re: [LTP] [BUG] btrfs potential failure on 32 core LTP test (fallocate05)

> On 29/06/2021 19:20, Josef Bacik wrote:
> > On 6/29/21 1:00 PM, Krzysztof Kozlowski wrote:
> >> Dear BTRFS folks,

> >> I am hitting a potential regression of btrfs, visible only with
> >> fallocate05 test from LTP (Linux Test Project) only on 32+ core Azure
> >> instances (x86_64).

> >> Tested:
> >> v5.8 (Ubuntu with our stable patches): PASS
> >> v5.11 (Ubuntu with our stable patches): FAIL
> >> v5.13 mainline: FAIL

> >> PASS means test passes on all instances
> >> FAIL means test passes on other instance types (e.g. 4 or 16 core) but
> >> fails on 32 and 64 core instances (did not test higher),
> >> e.g.: Standard_F32s_v2, Standard_F64s_v2, Standard_D32s_v3,
> >> Standard_E32s_v3

> >> Reproduction steps:
> >> git clone https://github.com/linux-test-project/ltp.git
> >> cd ltp
> >> ./build.sh && make install -j8
> >> cd ../ltp-install
> >> sudo ./runltp -f syscalls -s fallocate05


> > This thing keeps trying to test ext2, how do I make it only test btrfs? Thanks,

> It tests all available file systems, just wait till it gets to btrfs. I
> don't know how to limit it only to one file system.
In the future we can add environment variable to specify the only fs to be
tested. There is LTP_DEV_FS_TYPE, but that does not work when .all_filesystems
flag is enabled. Thus just patch the file:

Kind regards,
Petr

diff --git testcases/kernel/syscalls/fallocate/fallocate05.c testcases/kernel/syscalls/fallocate/fallocate05.c
index 55ec1aee4..7f5a3005a 100644
--- testcases/kernel/syscalls/fallocate/fallocate05.c
+++ testcases/kernel/syscalls/fallocate/fallocate05.c
@@ -149,7 +149,8 @@ static struct tst_test test = {
.mount_device = 1,
.dev_min_size = 512,
.mntpoint = MNTPOINT,
- .all_filesystems = 1,
+ .needs_device = 1,
+ .dev_fs_type = "btrfs",
.setup = setup,
.cleanup = cleanup,
.test_all = run,

2021-06-30 11:31:12

by Petr Vorel

[permalink] [raw]
Subject: Re: [LTP] [BUG] btrfs potential failure on 32 core LTP test (fallocate05)

Hi all,

...
> > >> Reproduction steps:
> > >> git clone https://github.com/linux-test-project/ltp.git
> > >> cd ltp
> > >> ./build.sh && make install -j8
> > >> cd ../ltp-install
> > >> sudo ./runltp -f syscalls -s fallocate05

NOTE: you can also be a bit faster if you test just single test, see
https://github.com/linux-test-project/ltp#shortcut-to-running-a-single-test
(not compiling and installing whole LTP)

$ cd testcases/kernel/syscalls/fallocate/
$ make -j`nproc`
$ sudo ./fallocate05

> > > This thing keeps trying to test ext2, how do I make it only test btrfs? Thanks,

> > It tests all available file systems, just wait till it gets to btrfs. I
> > don't know how to limit it only to one file system.
> In the future we can add environment variable to specify the only fs to be
> tested. There is LTP_DEV_FS_TYPE, but that does not work when .all_filesystems
> flag is enabled. Thus just patch the file:

NOTE: It detect kernel filesystem support and presence of mkfs.xxx.
Thus other way to limit filesystem is to rename mkfs.xxx of other filesystems
(in case you test LTP from package and don't want / cannot compile and can
modify root filesystem).

Kind regards,
Petr