Re: [PATCH v2] fstests: generic/260: Make it handle btrfs more gracefully

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]




On 2019/6/5 下午7:16, Nikolay Borisov wrote:
>
>
> On 3.06.19 г. 9:40 ч., Qu Wenruo wrote:
>> If a filesystem doesn't map its logical address space (normally the
>> bytenr/blocknr returned by fiemap) directly to its devices(s), the
>> following assumptions used in the test case is no longer true:
>> - trim range start beyond the end of fs should fail
>> - trim range start beyond the end of fs with len set should fail
>>
>> Under the following example, even with just one device, btrfs can still
>> trim the fs correctly while breaking above assumption:
>>
>> 0		1G		1.25G
>> |---------------|///////////////|-----------------| <- btrfs logical
>> 		   |				       address space
>>         ------------  mapped as SINGLE
>>         |
>> 0	V	256M
>> |///////////////|			<- device address space
>>
>> Thus trim range start=1G len=256M will cause btrfs to trim the 256M
>> block group, thus return correct result.
>>
>> Furthermore, there is no cleared defined behavior for whether a fs should
>> trim the unmapped space. (only for indirectly mapped fs)
>>
>> Btrfs currently will always trim the unmapped space, but the behavior
>> can change as large trim can be very expensive.
>>
>> Despite the change to skip certain tests for btrfs, still run the
>> following tests for btrfs:
>> - trim start=U64_MAX with lenght set
>>   This will expose a bug that btrfs doesn't check overflow of the range.
>>   This bug will be fixed soon.
>>
>> - trim beyond the end of the fs
>>   This will expose a bug where btrfs could send trim command beyond the
>>   end of its device.
>>   This bug is a regression, can be fixed by reverting c2d1b3aae336 ("btrfs:
>>   Honour FITRIM range constraints during free space trim")
>>
>> With proper fixes for btrfs, this test case should pass on btrfs, ext4,
>> xfs.
>>
>> Signed-off-by: Qu Wenruo <wqu@xxxxxxxx>
>> ---
>> changelog:
>> v2:
>> - Return 0/1 instead of echo "1"/"0" for _is_fs_directly_mapped
>>   Although it may be a little confusing, but make
>>   "if _is_fs_directly_mapped; then" much cleaner.
>> - Comment change.
>> ---
>
> Nope, the output is rather unhelpful. Current misc-next of btrfs fails
> and the output is:

This is not the output. This is seqres.full.

For output, using 5.2-rc2, btrfs would fail like:
[+] Optional trim range test (fs dependent)
[+] Default length (should succeed)
[+] Default length with start set (should succeed)
[+] Length beyond the end of fs (should succeed)
[+] Length beyond the end of fs with start set (should succeed)
Unexpected error happened during trim
Test done

Which is already good enough to show what's wrong.

>
> [+] Start = 2^64-1 and len is set (should fail)
>
> [+] Trim an empty fs
>
> 13554941952 trimed
>
> [+] Try to trim beyond the end of the fs
>
> [+] Try to trim the fs with large enough len
>
> 15727198208 trimed

For this full, try it on 5.2-rc2, then you would understand why it's here:

[+] Start = 2^64-1 and len is set (should fail)  << It doesn't fail
[+] Trim an empty fs
0 trimed  << It trimmed 0 bytes, isn't it already a problem?
[+] Try to trim beyond the end of the fs
fstrim: /mnt/scratch: FITRIM ioctl failed: Input/output error  << Beyond
device end bug
[+] Try to trim the fs with large enough len
5367267328 trimed  << The only good result here.

>
> generic/260	[failed, exit status 1]
>
>
> There is no 260.out file which is supposed to contain some of the error
> strings which in turn makes the test tedious to debug...

I'm afraid you're checking the wrong file.

Thanks,
Qu

>
>
> <snip>
>




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux