Re: [PATCH 03/24] generic/607: don't break on filesystems that don't support FSGETXATTR on dirs

Xiao Yang
2020-09-17T03:43:20Z

于 2020/9/17 11:27, Darrick J. Wong 写道:
> On Thu, Sep 17, 2020 at 09:41:01AM +0800, Xiao Yang wrote:
>> On 2020/9/15 9:43, Darrick J. Wong wrote:
>>> From: Darrick J. Wong<darrick.wong@oracle.com>
>>>
>>> This test requires that the filesystem support calling FSGETXATTR on
>>> regular files and directories to make sure the FS_XFLAG_DAX flag works.
>>> The _require_xfs_io_command tests a regular file but doesn't check
>>> directories, so generic/607 should do that itself. Also fix some typos.
>>>
>>> Signed-off-by: Darrick J. Wong<darrick.wong@oracle.com>
>>> ---
>>> common/rc | 10 ++++++++--
>>> tests/generic/607 | 5 +++++
>>> 2 files changed, 13 insertions(+), 2 deletions(-)
>>>
>>>
>>> diff --git a/common/rc b/common/rc
>>> index aa5a7409..f78b1cfc 100644
>>> --- a/common/rc
>>> +++ b/common/rc
>>> @@ -2162,6 +2162,12 @@ _require_xfs_io_command()
>>> local testfile=$TEST_DIR/$$.xfs_io
>>> local testio
>>> case $command in
>>> + "lsattr")
>>> + # Test xfs_io lsattr support and filesystem FS_IOC_FSSETXATTR
>>> + # support.
>>> + testio=`$XFS_IO_PROG -F -f -c "lsattr $param" $testfile 2>&1`
>>> + param_checked="$param"
>>> + ;;
>>> "chattr")
>>> if [ -z "$param" ]; then
>>> param=s
>>> @@ -3205,7 +3211,7 @@ _check_s_dax()
>>> if [ $exp_s_dax -eq 0 ]; then
>>> (( attributes& 0x2000 ))&& echo "$target has unexpected S_DAX flag"
>>> else
>>> - (( attributes& 0x2000 )) || echo "$target doen't have expected S_DAX flag"
>>> + (( attributes& 0x2000 )) || echo "$target doesn't have expected S_DAX flag"
>>> fi
>>> }
>>>
>>> @@ -3217,7 +3223,7 @@ _check_xflag()
>>> if [ $exp_xflag -eq 0 ]; then
>>> _test_inode_flag dax $target&& echo "$target has unexpected FS_XFLAG_DAX flag"
>>> else
>>> - _test_inode_flag dax $target || echo "$target doen't have expected FS_XFLAG_DAX flag"
>>> + _test_inode_flag dax $target || echo "$target doesn't have expected FS_XFLAG_DAX flag"
>>> fi
>>> }
>>>
>>> diff --git a/tests/generic/607 b/tests/generic/607
>>> index b15085ea..14d2c05f 100755
>>> --- a/tests/generic/607
>>> +++ b/tests/generic/607
>>> @@ -38,6 +38,11 @@ _require_scratch
>>> _require_dax_iflag
>>> _require_xfs_io_command "lsattr" "-v"
>>>
>>> +# Make sure we can call FSGETXATTR on a directory...
>>> +output="$($XFS_IO_PROG -c "lsattr -v" $TEST_DIR 2>&1)"
>>> +echo "$output" | grep -q "Inappropriate ioctl for device"&& \
>>> + _notrun "$FSTYP: FSGETXATTR not supported on directories."
>> Hi Darrick,
>>
>> Could you tell me which kernel version gets the issue? :-)
> ext4.
Hi Darrick,

I didn't get the issue by v5.7.0 xfs_io on v5.8.0 kernel:
----------------------------------------------------------------------------------
# blkid /dev/pmem0
/dev/pmem0: UUID="181f4d76-bc21-45b7-a6d2-e486f6cc479b" TYPE="ext4"
# df -h | grep pmem0
/dev/pmem0 2.0G 28K 1.8G 1% /mnt/xfstests/test
# strace -e ioctl xfs_io -c "lsattr -v" /mnt/xfstests/test
ioctl(3, FS_IOC_FSGETXATTR, 0x7ffdc7061d10) = 0
[] /mnt/xfstests/test
----------------------------------------------------------------------------------
Do I miss something?

Thanks,
Xiao Yang
> --D
>
>> Best Regards,
>> Xiao Yang
>>> +
>>> # If a/ is +x, check that a's new children
>>> # inherit +x from a/.
>>> test_xflag_inheritance1()
>>>
>>>
>>>
>>> .
>>>
>>
>>
>
> .
>