* [PATCH v3] generic/401: fix test in case of no filetype support
@ 2018-06-05 8:08 Amir Goldstein
2018-06-06 2:02 ` xuhuan
0 siblings, 1 reply; 5+ messages in thread
From: Amir Goldstein @ 2018-06-05 8:08 UTC (permalink / raw)
To: Eryu Guan, Xu Huan; +Cc: fstests
Xu Huan reported that this test fails on nfs in some setup.
Apparently, the assumptions made about xfs/ext* do not hold
for nfs.
Relax the verification of filetype not supported case to
allow either DT_UNKNOWN or actual file type on all files and
not only on special dir entires "." and "..".
Convert the unknown d_type replacement code from awk to bash
so it is a bit more readable and flexible.
Reported-by: Xu Huan <xuhuan.fnst@cn.fujitsu.com>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
Xu,
Please check if this patch fixes your problem.
I prefer to keep the test coverage of unsupported case.
I tested with xfs/ext4 with/without filetype support.
Thanks,
Amir.
tests/generic/401 | 42 ++++++++++++++++++++----------------------
1 file changed, 20 insertions(+), 22 deletions(-)
diff --git a/tests/generic/401 b/tests/generic/401
index 74f2bea..34ce76e 100755
--- a/tests/generic/401
+++ b/tests/generic/401
@@ -4,14 +4,13 @@
# Test filetype feature
#
# This test does NOT require that file system support the d_type feature.
-# It verifies that either all file types are reported as DT_UNKNOWN
-# or all file types are reported correctly.
+# It verifies that file types are reported as either DT_UNKNOWN or as
+# the actual file type. For example, special dir entries . and .. MAY be
+# reported as DT_UNKNOWN IF filetype feature is disabled (ext4), but MAY
+# also be reported as DT_DIR in this case (xfs).
#
# For fs for which we know how to test the filetype feature (xfs|ext*)
# verify getting DT_UNKNOWN IFF feature is disabled.
-# Special dir entries . and .. MAY be reported as DT_UNKNOWN IF filetype
-# feature is disabled (ext4), but MAY also be reported as DT_DIR in this
-# case (xfs).
#
#-----------------------------------------------------------------------
#
@@ -73,23 +72,22 @@ mknod $testdir/c c 1 1
mknod $testdir/b b 1 1
mknod $testdir/p p
-# Test d_type of . and ..
-# it must be DT_DIR on fs with filetype support and it could be
-# either DR_DIR or DT_UNKNOWN on fs without filetype support
-src/t_dir_type $testdir d | grep -F '.' | sort
-
-# Test that either all file types are unknown or all are correct
-if _supports_filetype $SCRATCH_MNT; then
- # print real file types
- src/t_dir_type $testdir | grep -vF '.' | sort
-else
- # print fake dir file type for . and .. if they are DT_UNKNOWN
- src/t_dir_type $testdir u | grep -F '.' | \
- awk '{ print $1, "d" }' | sort
- # list unknown files and print filename as fake file type
- src/t_dir_type $testdir u | grep -vF '.' | \
- awk '{ print $1, $1 }' | sort
-fi
+# Test d_type of test files - it must be the actual file type on fs
+# with filetype support and it could be either the actual file type
+# or DT_UNKNOWN on fs without filetype support
+ftype=
+_supports_filetype $SCRATCH_MNT && ftype=1
+src/t_dir_type $testdir | \
+while read name type; do
+ if [ "$ftype" != 1 -a "$type" = u ]; then
+ if [ "$name" = "." -o "$name" = ".." ]; then
+ type=d
+ else
+ type=$name
+ fi
+ fi
+ echo $name $type
+done | sort
status=0
exit
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3] generic/401: fix test in case of no filetype support
2018-06-05 8:08 [PATCH v3] generic/401: fix test in case of no filetype support Amir Goldstein
@ 2018-06-06 2:02 ` xuhuan
2018-06-07 11:13 ` Eryu Guan
0 siblings, 1 reply; 5+ messages in thread
From: xuhuan @ 2018-06-06 2:02 UTC (permalink / raw)
To: Amir Goldstein, Eryu Guan; +Cc: fstests
Hi
I have tested it passed on nfs.
thanks.
On 06/05/18 16:08, Amir Goldstein wrote:
> Xu Huan reported that this test fails on nfs in some setup.
> Apparently, the assumptions made about xfs/ext* do not hold
> for nfs.
>
> Relax the verification of filetype not supported case to
> allow either DT_UNKNOWN or actual file type on all files and
> not only on special dir entires "." and "..".
>
> Convert the unknown d_type replacement code from awk to bash
> so it is a bit more readable and flexible.
Tested-by:Xu Huan <xuhuan.fnst@cn.fujitsu.com>
> Reported-by: Xu Huan <xuhuan.fnst@cn.fujitsu.com>
> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> ---
>
> Xu,
>
> Please check if this patch fixes your problem.
> I prefer to keep the test coverage of unsupported case.
>
> I tested with xfs/ext4 with/without filetype support.
>
> Thanks,
> Amir.
>
> tests/generic/401 | 42 ++++++++++++++++++++----------------------
> 1 file changed, 20 insertions(+), 22 deletions(-)
>
> diff --git a/tests/generic/401 b/tests/generic/401
> index 74f2bea..34ce76e 100755
> --- a/tests/generic/401
> +++ b/tests/generic/401
> @@ -4,14 +4,13 @@
> # Test filetype feature
> #
> # This test does NOT require that file system support the d_type feature.
> -# It verifies that either all file types are reported as DT_UNKNOWN
> -# or all file types are reported correctly.
> +# It verifies that file types are reported as either DT_UNKNOWN or as
> +# the actual file type. For example, special dir entries . and .. MAY be
> +# reported as DT_UNKNOWN IF filetype feature is disabled (ext4), but MAY
> +# also be reported as DT_DIR in this case (xfs).
> #
> # For fs for which we know how to test the filetype feature (xfs|ext*)
> # verify getting DT_UNKNOWN IFF feature is disabled.
> -# Special dir entries . and .. MAY be reported as DT_UNKNOWN IF filetype
> -# feature is disabled (ext4), but MAY also be reported as DT_DIR in this
> -# case (xfs).
> #
> #-----------------------------------------------------------------------
> #
> @@ -73,23 +72,22 @@ mknod $testdir/c c 1 1
> mknod $testdir/b b 1 1
> mknod $testdir/p p
>
> -# Test d_type of . and ..
> -# it must be DT_DIR on fs with filetype support and it could be
> -# either DR_DIR or DT_UNKNOWN on fs without filetype support
> -src/t_dir_type $testdir d | grep -F '.' | sort
> -
> -# Test that either all file types are unknown or all are correct
> -if _supports_filetype $SCRATCH_MNT; then
> - # print real file types
> - src/t_dir_type $testdir | grep -vF '.' | sort
> -else
> - # print fake dir file type for . and .. if they are DT_UNKNOWN
> - src/t_dir_type $testdir u | grep -F '.' | \
> - awk '{ print $1, "d" }' | sort
> - # list unknown files and print filename as fake file type
> - src/t_dir_type $testdir u | grep -vF '.' | \
> - awk '{ print $1, $1 }' | sort
> -fi
> +# Test d_type of test files - it must be the actual file type on fs
> +# with filetype support and it could be either the actual file type
> +# or DT_UNKNOWN on fs without filetype support
> +ftype=
> +_supports_filetype $SCRATCH_MNT && ftype=1
> +src/t_dir_type $testdir | \
> +while read name type; do
> + if [ "$ftype" != 1 -a "$type" = u ]; then
> + if [ "$name" = "." -o "$name" = ".." ]; then
> + type=d
> + else
> + type=$name
> + fi
> + fi
> + echo $name $type
> +done | sort
>
> status=0
> exit
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3] generic/401: fix test in case of no filetype support
2018-06-06 2:02 ` xuhuan
@ 2018-06-07 11:13 ` Eryu Guan
2018-06-07 11:29 ` Amir Goldstein
0 siblings, 1 reply; 5+ messages in thread
From: Eryu Guan @ 2018-06-07 11:13 UTC (permalink / raw)
To: xuhuan; +Cc: Amir Goldstein, fstests
On Wed, Jun 06, 2018 at 10:02:37AM +0800, xuhuan wrote:
> Hi
>
> I have tested it passed on nfs.
What version of NFS are you testing? And what's your kernel version? I
couldn't reproduce the test failure on NFS (tried v4.[012] and v3) with
v4.17-rc5 kernel. Just want to make sure I didn't miss anything.
Thanks,
Eryu
>
> thanks.
>
> On 06/05/18 16:08, Amir Goldstein wrote:
> > Xu Huan reported that this test fails on nfs in some setup.
> > Apparently, the assumptions made about xfs/ext* do not hold
> > for nfs.
> >
> > Relax the verification of filetype not supported case to
> > allow either DT_UNKNOWN or actual file type on all files and
> > not only on special dir entires "." and "..".
> >
> > Convert the unknown d_type replacement code from awk to bash
> > so it is a bit more readable and flexible.
> Tested-by:Xu Huan <xuhuan.fnst@cn.fujitsu.com>
> > Reported-by: Xu Huan <xuhuan.fnst@cn.fujitsu.com>
> > Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> > ---
> >
> > Xu,
> >
> > Please check if this patch fixes your problem.
> > I prefer to keep the test coverage of unsupported case.
> >
> > I tested with xfs/ext4 with/without filetype support.
> >
> > Thanks,
> > Amir.
> >
> > tests/generic/401 | 42 ++++++++++++++++++++----------------------
> > 1 file changed, 20 insertions(+), 22 deletions(-)
> >
> > diff --git a/tests/generic/401 b/tests/generic/401
> > index 74f2bea..34ce76e 100755
> > --- a/tests/generic/401
> > +++ b/tests/generic/401
> > @@ -4,14 +4,13 @@
> > # Test filetype feature
> > #
> > # This test does NOT require that file system support the d_type feature.
> > -# It verifies that either all file types are reported as DT_UNKNOWN
> > -# or all file types are reported correctly.
> > +# It verifies that file types are reported as either DT_UNKNOWN or as
> > +# the actual file type. For example, special dir entries . and .. MAY be
> > +# reported as DT_UNKNOWN IF filetype feature is disabled (ext4), but MAY
> > +# also be reported as DT_DIR in this case (xfs).
> > #
> > # For fs for which we know how to test the filetype feature (xfs|ext*)
> > # verify getting DT_UNKNOWN IFF feature is disabled.
> > -# Special dir entries . and .. MAY be reported as DT_UNKNOWN IF filetype
> > -# feature is disabled (ext4), but MAY also be reported as DT_DIR in this
> > -# case (xfs).
> > #
> > #-----------------------------------------------------------------------
> > #
> > @@ -73,23 +72,22 @@ mknod $testdir/c c 1 1
> > mknod $testdir/b b 1 1
> > mknod $testdir/p p
> >
> > -# Test d_type of . and ..
> > -# it must be DT_DIR on fs with filetype support and it could be
> > -# either DR_DIR or DT_UNKNOWN on fs without filetype support
> > -src/t_dir_type $testdir d | grep -F '.' | sort
> > -
> > -# Test that either all file types are unknown or all are correct
> > -if _supports_filetype $SCRATCH_MNT; then
> > - # print real file types
> > - src/t_dir_type $testdir | grep -vF '.' | sort
> > -else
> > - # print fake dir file type for . and .. if they are DT_UNKNOWN
> > - src/t_dir_type $testdir u | grep -F '.' | \
> > - awk '{ print $1, "d" }' | sort
> > - # list unknown files and print filename as fake file type
> > - src/t_dir_type $testdir u | grep -vF '.' | \
> > - awk '{ print $1, $1 }' | sort
> > -fi
> > +# Test d_type of test files - it must be the actual file type on fs
> > +# with filetype support and it could be either the actual file type
> > +# or DT_UNKNOWN on fs without filetype support
> > +ftype=
> > +_supports_filetype $SCRATCH_MNT && ftype=1
> > +src/t_dir_type $testdir | \
> > +while read name type; do
> > + if [ "$ftype" != 1 -a "$type" = u ]; then
> > + if [ "$name" = "." -o "$name" = ".." ]; then
> > + type=d
> > + else
> > + type=$name
> > + fi
> > + fi
> > + echo $name $type
> > +done | sort
> >
> > status=0
> > exit
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3] generic/401: fix test in case of no filetype support
2018-06-07 11:13 ` Eryu Guan
@ 2018-06-07 11:29 ` Amir Goldstein
2018-06-08 9:20 ` xuhuan
0 siblings, 1 reply; 5+ messages in thread
From: Amir Goldstein @ 2018-06-07 11:29 UTC (permalink / raw)
To: Eryu Guan; +Cc: xuhuan, fstests
On Thu, Jun 7, 2018 at 2:13 PM, Eryu Guan <guaneryu@gmail.com> wrote:
> On Wed, Jun 06, 2018 at 10:02:37AM +0800, xuhuan wrote:
>> Hi
>>
>> I have tested it passed on nfs.
>
> What version of NFS are you testing? And what's your kernel version? I
> couldn't reproduce the test failure on NFS (tried v4.[012] and v3) with
> v4.17-rc5 kernel. Just want to make sure I didn't miss anything.
>
That may have to do with the filesystem being exported or with
readdirplus configuration of the export.
After Overlayfs export was implemented, there was a bug in overlayfs
that I fixed causing NFS v3 to not export d_type correctly.
This was due to mismatch of i_ino and d_ino in the exported fs.
> Thanks,
> Eryu
>
>>
>> thanks.
>>
>> On 06/05/18 16:08, Amir Goldstein wrote:
>> > Xu Huan reported that this test fails on nfs in some setup.
>> > Apparently, the assumptions made about xfs/ext* do not hold
>> > for nfs.
>> >
>> > Relax the verification of filetype not supported case to
>> > allow either DT_UNKNOWN or actual file type on all files and
>> > not only on special dir entires "." and "..".
>> >
>> > Convert the unknown d_type replacement code from awk to bash
>> > so it is a bit more readable and flexible.
>> Tested-by:Xu Huan <xuhuan.fnst@cn.fujitsu.com>
>> > Reported-by: Xu Huan <xuhuan.fnst@cn.fujitsu.com>
>> > Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>> > ---
>> >
>> > Xu,
>> >
>> > Please check if this patch fixes your problem.
>> > I prefer to keep the test coverage of unsupported case.
>> >
>> > I tested with xfs/ext4 with/without filetype support.
>> >
>> > Thanks,
>> > Amir.
>> >
>> > tests/generic/401 | 42 ++++++++++++++++++++----------------------
>> > 1 file changed, 20 insertions(+), 22 deletions(-)
>> >
>> > diff --git a/tests/generic/401 b/tests/generic/401
>> > index 74f2bea..34ce76e 100755
>> > --- a/tests/generic/401
>> > +++ b/tests/generic/401
>> > @@ -4,14 +4,13 @@
>> > # Test filetype feature
>> > #
>> > # This test does NOT require that file system support the d_type feature.
>> > -# It verifies that either all file types are reported as DT_UNKNOWN
>> > -# or all file types are reported correctly.
>> > +# It verifies that file types are reported as either DT_UNKNOWN or as
>> > +# the actual file type. For example, special dir entries . and .. MAY be
>> > +# reported as DT_UNKNOWN IF filetype feature is disabled (ext4), but MAY
>> > +# also be reported as DT_DIR in this case (xfs).
>> > #
>> > # For fs for which we know how to test the filetype feature (xfs|ext*)
>> > # verify getting DT_UNKNOWN IFF feature is disabled.
>> > -# Special dir entries . and .. MAY be reported as DT_UNKNOWN IF filetype
>> > -# feature is disabled (ext4), but MAY also be reported as DT_DIR in this
>> > -# case (xfs).
>> > #
>> > #-----------------------------------------------------------------------
>> > #
>> > @@ -73,23 +72,22 @@ mknod $testdir/c c 1 1
>> > mknod $testdir/b b 1 1
>> > mknod $testdir/p p
>> >
>> > -# Test d_type of . and ..
>> > -# it must be DT_DIR on fs with filetype support and it could be
>> > -# either DR_DIR or DT_UNKNOWN on fs without filetype support
>> > -src/t_dir_type $testdir d | grep -F '.' | sort
>> > -
>> > -# Test that either all file types are unknown or all are correct
>> > -if _supports_filetype $SCRATCH_MNT; then
>> > - # print real file types
>> > - src/t_dir_type $testdir | grep -vF '.' | sort
>> > -else
>> > - # print fake dir file type for . and .. if they are DT_UNKNOWN
>> > - src/t_dir_type $testdir u | grep -F '.' | \
>> > - awk '{ print $1, "d" }' | sort
>> > - # list unknown files and print filename as fake file type
>> > - src/t_dir_type $testdir u | grep -vF '.' | \
>> > - awk '{ print $1, $1 }' | sort
>> > -fi
>> > +# Test d_type of test files - it must be the actual file type on fs
>> > +# with filetype support and it could be either the actual file type
>> > +# or DT_UNKNOWN on fs without filetype support
>> > +ftype=
>> > +_supports_filetype $SCRATCH_MNT && ftype=1
>> > +src/t_dir_type $testdir | \
>> > +while read name type; do
>> > + if [ "$ftype" != 1 -a "$type" = u ]; then
>> > + if [ "$name" = "." -o "$name" = ".." ]; then
>> > + type=d
>> > + else
>> > + type=$name
>> > + fi
>> > + fi
>> > + echo $name $type
>> > +done | sort
>> >
>> > status=0
>> > exit
>>
>>
>>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3] generic/401: fix test in case of no filetype support
2018-06-07 11:29 ` Amir Goldstein
@ 2018-06-08 9:20 ` xuhuan
0 siblings, 0 replies; 5+ messages in thread
From: xuhuan @ 2018-06-08 9:20 UTC (permalink / raw)
To: Amir Goldstein, Eryu Guan; +Cc: fstests
On 06/07/18 19:29, Amir Goldstein wrote:
> On Thu, Jun 7, 2018 at 2:13 PM, Eryu Guan <guaneryu@gmail.com> wrote:
>> On Wed, Jun 06, 2018 at 10:02:37AM +0800, xuhuan wrote:
>>> Hi
>>>
>>> I have tested it passed on nfs.
>> What version of NFS are you testing? And what's your kernel version? I
>> couldn't reproduce the test failure on NFS (tried v4.[012] and v3) with
>> v4.17-rc5 kernel. Just want to make sure I didn't miss anything.
>>
The FAIL occured on RHEL7.5GA,NFSv4,v4.1,v4.2.
I try it with the v4.16.11 kernel,it also couldn't be reproduced.
Sorry for that,It seems to be a known problem.I'm searching that patch.
Thanks.
Xu
> That may have to do with the filesystem being exported or with
> readdirplus configuration of the export.
> After Overlayfs export was implemented, there was a bug in overlayfs
> that I fixed causing NFS v3 to not export d_type correctly.
> This was due to mismatch of i_ino and d_ino in the exported fs.
>
>> Thanks,
>> Eryu
>>
>>> thanks.
>>>
>>> On 06/05/18 16:08, Amir Goldstein wrote:
>>>> Xu Huan reported that this test fails on nfs in some setup.
>>>> Apparently, the assumptions made about xfs/ext* do not hold
>>>> for nfs.
>>>>
>>>> Relax the verification of filetype not supported case to
>>>> allow either DT_UNKNOWN or actual file type on all files and
>>>> not only on special dir entires "." and "..".
>>>>
>>>> Convert the unknown d_type replacement code from awk to bash
>>>> so it is a bit more readable and flexible.
>>> Tested-by:Xu Huan <xuhuan.fnst@cn.fujitsu.com>
>>>> Reported-by: Xu Huan <xuhuan.fnst@cn.fujitsu.com>
>>>> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>>>> ---
>>>>
>>>> Xu,
>>>>
>>>> Please check if this patch fixes your problem.
>>>> I prefer to keep the test coverage of unsupported case.
>>>>
>>>> I tested with xfs/ext4 with/without filetype support.
>>>>
>>>> Thanks,
>>>> Amir.
>>>>
>>>> tests/generic/401 | 42 ++++++++++++++++++++----------------------
>>>> 1 file changed, 20 insertions(+), 22 deletions(-)
>>>>
>>>> diff --git a/tests/generic/401 b/tests/generic/401
>>>> index 74f2bea..34ce76e 100755
>>>> --- a/tests/generic/401
>>>> +++ b/tests/generic/401
>>>> @@ -4,14 +4,13 @@
>>>> # Test filetype feature
>>>> #
>>>> # This test does NOT require that file system support the d_type feature.
>>>> -# It verifies that either all file types are reported as DT_UNKNOWN
>>>> -# or all file types are reported correctly.
>>>> +# It verifies that file types are reported as either DT_UNKNOWN or as
>>>> +# the actual file type. For example, special dir entries . and .. MAY be
>>>> +# reported as DT_UNKNOWN IF filetype feature is disabled (ext4), but MAY
>>>> +# also be reported as DT_DIR in this case (xfs).
>>>> #
>>>> # For fs for which we know how to test the filetype feature (xfs|ext*)
>>>> # verify getting DT_UNKNOWN IFF feature is disabled.
>>>> -# Special dir entries . and .. MAY be reported as DT_UNKNOWN IF filetype
>>>> -# feature is disabled (ext4), but MAY also be reported as DT_DIR in this
>>>> -# case (xfs).
>>>> #
>>>> #-----------------------------------------------------------------------
>>>> #
>>>> @@ -73,23 +72,22 @@ mknod $testdir/c c 1 1
>>>> mknod $testdir/b b 1 1
>>>> mknod $testdir/p p
>>>>
>>>> -# Test d_type of . and ..
>>>> -# it must be DT_DIR on fs with filetype support and it could be
>>>> -# either DR_DIR or DT_UNKNOWN on fs without filetype support
>>>> -src/t_dir_type $testdir d | grep -F '.' | sort
>>>> -
>>>> -# Test that either all file types are unknown or all are correct
>>>> -if _supports_filetype $SCRATCH_MNT; then
>>>> - # print real file types
>>>> - src/t_dir_type $testdir | grep -vF '.' | sort
>>>> -else
>>>> - # print fake dir file type for . and .. if they are DT_UNKNOWN
>>>> - src/t_dir_type $testdir u | grep -F '.' | \
>>>> - awk '{ print $1, "d" }' | sort
>>>> - # list unknown files and print filename as fake file type
>>>> - src/t_dir_type $testdir u | grep -vF '.' | \
>>>> - awk '{ print $1, $1 }' | sort
>>>> -fi
>>>> +# Test d_type of test files - it must be the actual file type on fs
>>>> +# with filetype support and it could be either the actual file type
>>>> +# or DT_UNKNOWN on fs without filetype support
>>>> +ftype=
>>>> +_supports_filetype $SCRATCH_MNT && ftype=1
>>>> +src/t_dir_type $testdir | \
>>>> +while read name type; do
>>>> + if [ "$ftype" != 1 -a "$type" = u ]; then
>>>> + if [ "$name" = "." -o "$name" = ".." ]; then
>>>> + type=d
>>>> + else
>>>> + type=$name
>>>> + fi
>>>> + fi
>>>> + echo $name $type
>>>> +done | sort
>>>>
>>>> status=0
>>>> exit
>>>
>>>
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-06-08 9:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-05 8:08 [PATCH v3] generic/401: fix test in case of no filetype support Amir Goldstein
2018-06-06 2:02 ` xuhuan
2018-06-07 11:13 ` Eryu Guan
2018-06-07 11:29 ` Amir Goldstein
2018-06-08 9:20 ` xuhuan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox