* [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
@ 2017-07-18 8:27 Xiao Yang
2017-07-18 13:18 ` Eryu Guan
0 siblings, 1 reply; 12+ messages in thread
From: Xiao Yang @ 2017-07-18 8:27 UTC (permalink / raw)
To: fstests; +Cc: Xiao Yang
On some old kernel(e.g. v3.5), this case fails because it can not create
extent_max_zeroout_kb file, as below:
Silence is golden
+./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
seek sanity check failed!
The extent_max_zeroout_kb file is introduced by:
67a5da564f97('ext4: make the zero-out chunk size tunable')
We should only disable extent zeroing when extent_max_zeroout_kb is supported.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
tests/generic/448 | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/generic/448 b/tests/generic/448
index 87b99d7..3e92742 100755
--- a/tests/generic/448
+++ b/tests/generic/448
@@ -51,7 +51,8 @@ _require_test_program "seek_sanity_test"
# Disable extent zeroing for ext4 as that change where holes are created
if [ "$FSTYP" = "ext4" ]; then
DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
+ [ -f /sys/fs/ext4/$DEV/extent_max_zeroout_kb ] \
+ && echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
fi
$here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE > $seqres.full 2>&1 ||
--
1.8.3.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
2017-07-18 8:27 [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported Xiao Yang
@ 2017-07-18 13:18 ` Eryu Guan
2017-07-19 2:35 ` Xiao Yang
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Eryu Guan @ 2017-07-18 13:18 UTC (permalink / raw)
To: Xiao Yang; +Cc: fstests
On Tue, Jul 18, 2017 at 04:27:50PM +0800, Xiao Yang wrote:
> On some old kernel(e.g. v3.5), this case fails because it can not create
> extent_max_zeroout_kb file, as below:
> Silence is golden
> +./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
> seek sanity check failed!
>
> The extent_max_zeroout_kb file is introduced by:
> 67a5da564f97('ext4: make the zero-out chunk size tunable')
This is available since v3.7-rc1 kernel
$ git describe --contains 67a5da564f97
v3.7-rc1~91^2~63
But ext4 SEEK_DATA/SEEK_HOLE support was added in v3.8-rc1
$ git describe --contains c8c0df241cc2
v3.8-rc1~89^2~40
IMO, you shouldn't hit this error at all, because test won't pass
_require_seek_data_hole rule. (Unless you're testing some customized
kernel with seek_data/hole backported but not that ext4 sysfs entry.)
>
> We should only disable extent zeroing when extent_max_zeroout_kb is supported.
>
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
> ---
> tests/generic/448 | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tests/generic/448 b/tests/generic/448
> index 87b99d7..3e92742 100755
> --- a/tests/generic/448
> +++ b/tests/generic/448
> @@ -51,7 +51,8 @@ _require_test_program "seek_sanity_test"
> # Disable extent zeroing for ext4 as that change where holes are created
> if [ "$FSTYP" = "ext4" ]; then
> DEV=`_short_dev $TEST_DEV`
> - echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> + [ -f /sys/fs/ext4/$DEV/extent_max_zeroout_kb ] \
> + && echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
But I'm OK with adding this check, but not in this test only, this
pattern is repeated in several seek_data/hole tests, e.g.
generic/285, generic/436, generic/445 generic/448, and generic/009
(which is not a seek_data/hole test).
So I'm wondering if this hunk of code can be made into a helper and
embed it into _require_seek_data_hole. e.g. (completely untested)
# Disable extent zeroing for ext4 on the given device
_ext4_disable_extent_zeroout()
{
local dev=${1:-$TEST_DEV}
local sdev=`_short_dev $dev`
[ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ] \
&& echo 0 >/sys/fs/ext4/$sdev/extent_max_zeroout_kb
}
And _require_seek_data_hole
_require_seek_data_hole()
{
local dev=${1:-$TEST_DEV}
local testfile=$TEST_DIR/$$.seek
testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
rm -f $testfile &>/dev/null
echo $testseek | grep -q "Kernel does not support" && \
_notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
# Disable extent zeroing for ext4 as that change where holes are
# created
if [ "$FSTYP" == "ext4" ]; then
_ext4_disable_extent_zeroout $dev
fi
}
And update generic/009 accordingly to use this new helper.
What do you and/or other people think?
Thanks,
Eryu
> fi
>
> $here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE > $seqres.full 2>&1 ||
> --
> 1.8.3.1
>
>
>
> --
> 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] 12+ messages in thread
* Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
2017-07-18 13:18 ` Eryu Guan
@ 2017-07-19 2:35 ` Xiao Yang
2017-07-19 9:56 ` Eryu Guan
2017-07-19 3:06 ` [PATCH] common/rc: update _require_seek_data_hole() Xiao Yang
2017-07-24 7:13 ` [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported Xiao Yang
2 siblings, 1 reply; 12+ messages in thread
From: Xiao Yang @ 2017-07-19 2:35 UTC (permalink / raw)
To: Eryu Guan; +Cc: fstests
On 2017/07/18 21:18, Eryu Guan wrote:
> On Tue, Jul 18, 2017 at 04:27:50PM +0800, Xiao Yang wrote:
>> On some old kernel(e.g. v3.5), this case fails because it can not create
>> extent_max_zeroout_kb file, as below:
>> Silence is golden
>> +./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
>> seek sanity check failed!
>>
>> The extent_max_zeroout_kb file is introduced by:
>> 67a5da564f97('ext4: make the zero-out chunk size tunable')
> This is available since v3.7-rc1 kernel
> $ git describe --contains 67a5da564f97
> v3.7-rc1~91^2~63
>
> But ext4 SEEK_DATA/SEEK_HOLE support was added in v3.8-rc1
> $ git describe --contains c8c0df241cc2
> v3.8-rc1~89^2~40
>
> IMO, you shouldn't hit this error at all, because test won't pass
> _require_seek_data_hole rule. (Unless you're testing some customized
> kernel with seek_data/hole backported but not that ext4 sysfs entry.)
Hi Eryu
Thanks for your explanation.
I test it in v3.5 kernel without seek_data/hole backported, please see
the following message:
[root@localhost xfstests]# uname -r
3.5.0
[root@localhost xfstests]# src/seek_sanity_test -t
/mnt/xfstests/test/testfile 2>&1
File system magic#: 0xef53
Allocation size: 4096
File system supports the default behavior.
File system does not support unwritten extents.
_require_seek_data_hole could not catch "File system does not support"
if ext4 SEEK_DATA/SEEK_HOLE
support was not added.
I think we should update _require_seek_data_hole to catch both "Kernel
does not support" and
"File system does not support". This case could be skipped when
meetting either of them.
Thanks,
Xiao Yang
>> We should only disable extent zeroing when extent_max_zeroout_kb is supported.
>>
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> ---
>> tests/generic/448 | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/generic/448 b/tests/generic/448
>> index 87b99d7..3e92742 100755
>> --- a/tests/generic/448
>> +++ b/tests/generic/448
>> @@ -51,7 +51,8 @@ _require_test_program "seek_sanity_test"
>> # Disable extent zeroing for ext4 as that change where holes are created
>> if [ "$FSTYP" = "ext4" ]; then
>> DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> + [ -f /sys/fs/ext4/$DEV/extent_max_zeroout_kb ] \
>> + && echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> But I'm OK with adding this check, but not in this test only, this
> pattern is repeated in several seek_data/hole tests, e.g.
> generic/285, generic/436, generic/445 generic/448, and generic/009
> (which is not a seek_data/hole test).
>
> So I'm wondering if this hunk of code can be made into a helper and
> embed it into _require_seek_data_hole. e.g. (completely untested)
>
> # Disable extent zeroing for ext4 on the given device
> _ext4_disable_extent_zeroout()
> {
> local dev=${1:-$TEST_DEV}
> local sdev=`_short_dev $dev`
>
> [ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ] \
> && echo 0>/sys/fs/ext4/$sdev/extent_max_zeroout_kb
> }
>
> And _require_seek_data_hole
>
> _require_seek_data_hole()
> {
> local dev=${1:-$TEST_DEV}
> local testfile=$TEST_DIR/$$.seek
>
> testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
> rm -f $testfile&>/dev/null
> echo $testseek | grep -q "Kernel does not support"&& \
> _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
> # Disable extent zeroing for ext4 as that change where holes are
> # created
> if [ "$FSTYP" == "ext4" ]; then
> _ext4_disable_extent_zeroout $dev
> fi
> }
>
> And update generic/009 accordingly to use this new helper.
>
> What do you and/or other people think?
>
> Thanks,
> Eryu
>
>> fi
>>
>> $here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE> $seqres.full 2>&1 ||
>> --
>> 1.8.3.1
>>
>>
>>
>> --
>> 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] 12+ messages in thread
* [PATCH] common/rc: update _require_seek_data_hole()
2017-07-18 13:18 ` Eryu Guan
2017-07-19 2:35 ` Xiao Yang
@ 2017-07-19 3:06 ` Xiao Yang
2017-07-24 7:13 ` [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported Xiao Yang
2 siblings, 0 replies; 12+ messages in thread
From: Xiao Yang @ 2017-07-19 3:06 UTC (permalink / raw)
To: eguan; +Cc: fstests, Xiao Yang
_require_seek_data_hole() could not skip tests if filesystem does not support
fallocate or unwritten extent. We could update _require_seek_data_hole() to
catch both of them.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
common/rc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/rc b/common/rc
index fa1314c..b064f53 100644
--- a/common/rc
+++ b/common/rc
@@ -2297,7 +2297,7 @@ _require_seek_data_hole()
testfile=$TEST_DIR/$$.seek
testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
rm -f $testfile &>/dev/null
- echo $testseek | grep -q "Kernel does not support" && \
+ echo $testseek | grep -q "not support" && \
_notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
2017-07-19 2:35 ` Xiao Yang
@ 2017-07-19 9:56 ` Eryu Guan
2017-07-19 10:38 ` Xiao Yang
0 siblings, 1 reply; 12+ messages in thread
From: Eryu Guan @ 2017-07-19 9:56 UTC (permalink / raw)
To: Xiao Yang; +Cc: fstests
On Wed, Jul 19, 2017 at 10:35:01AM +0800, Xiao Yang wrote:
> On 2017/07/18 21:18, Eryu Guan wrote:
> > On Tue, Jul 18, 2017 at 04:27:50PM +0800, Xiao Yang wrote:
> > > On some old kernel(e.g. v3.5), this case fails because it can not create
> > > extent_max_zeroout_kb file, as below:
> > > Silence is golden
> > > +./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
> > > seek sanity check failed!
> > >
> > > The extent_max_zeroout_kb file is introduced by:
> > > 67a5da564f97('ext4: make the zero-out chunk size tunable')
> > This is available since v3.7-rc1 kernel
> > $ git describe --contains 67a5da564f97
> > v3.7-rc1~91^2~63
> >
> > But ext4 SEEK_DATA/SEEK_HOLE support was added in v3.8-rc1
> > $ git describe --contains c8c0df241cc2
> > v3.8-rc1~89^2~40
> >
> > IMO, you shouldn't hit this error at all, because test won't pass
> > _require_seek_data_hole rule. (Unless you're testing some customized
> > kernel with seek_data/hole backported but not that ext4 sysfs entry.)
> Hi Eryu
>
> Thanks for your explanation.
>
> I test it in v3.5 kernel without seek_data/hole backported, please see the
> following message:
> [root@localhost xfstests]# uname -r
> 3.5.0
> [root@localhost xfstests]# src/seek_sanity_test -t
> /mnt/xfstests/test/testfile 2>&1
> File system magic#: 0xef53
> Allocation size: 4096
> File system supports the default behavior.
OK, I see why the test was *not* _notrun on 3.5 kernel now (without
seek_data/hole support added to ext4, but with SEEK_DATA/SEEK_HOLE flags
recognized by vfs, which was introduced by 982d81658 in v3.1-rc1),
because ext4 had the "default behavior" support, and that means "just
return i_size for SEEK_HOLE and will return the same offset for
SEEK_DATA".
> File system does not support unwritten extents.
This means the file system doesn't treat unwritten extents as a hole,
but data, which has nothing to do with SEEK_DATA/HOLE support status.
>
> _require_seek_data_hole could not catch "File system does not support" if
> ext4 SEEK_DATA/SEEK_HOLE
> support was not added.
>
> I think we should update _require_seek_data_hole to catch both "Kernel does
> not support" and
> "File system does not support". This case could be skipped when meetting
> either of them.
So this is wrong, IMO.
Thanks,
Eryu
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
2017-07-19 9:56 ` Eryu Guan
@ 2017-07-19 10:38 ` Xiao Yang
2017-07-21 7:07 ` Eryu Guan
0 siblings, 1 reply; 12+ messages in thread
From: Xiao Yang @ 2017-07-19 10:38 UTC (permalink / raw)
To: Eryu Guan; +Cc: fstests
On 2017/07/19 17:56, Eryu Guan wrote:
> On Wed, Jul 19, 2017 at 10:35:01AM +0800, Xiao Yang wrote:
>> On 2017/07/18 21:18, Eryu Guan wrote:
>>> On Tue, Jul 18, 2017 at 04:27:50PM +0800, Xiao Yang wrote:
>>>> On some old kernel(e.g. v3.5), this case fails because it can not create
>>>> extent_max_zeroout_kb file, as below:
>>>> Silence is golden
>>>> +./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
>>>> seek sanity check failed!
>>>>
>>>> The extent_max_zeroout_kb file is introduced by:
>>>> 67a5da564f97('ext4: make the zero-out chunk size tunable')
>>> This is available since v3.7-rc1 kernel
>>> $ git describe --contains 67a5da564f97
>>> v3.7-rc1~91^2~63
>>>
>>> But ext4 SEEK_DATA/SEEK_HOLE support was added in v3.8-rc1
>>> $ git describe --contains c8c0df241cc2
>>> v3.8-rc1~89^2~40
>>>
>>> IMO, you shouldn't hit this error at all, because test won't pass
>>> _require_seek_data_hole rule. (Unless you're testing some customized
>>> kernel with seek_data/hole backported but not that ext4 sysfs entry.)
>> Hi Eryu
>>
>> Thanks for your explanation.
>>
>> I test it in v3.5 kernel without seek_data/hole backported, please see the
>> following message:
>> [root@localhost xfstests]# uname -r
>> 3.5.0
>> [root@localhost xfstests]# src/seek_sanity_test -t
>> /mnt/xfstests/test/testfile 2>&1
>> File system magic#: 0xef53
>> Allocation size: 4096
>> File system supports the default behavior.
> OK, I see why the test was *not* _notrun on 3.5 kernel now (without
> seek_data/hole support added to ext4, but with SEEK_DATA/SEEK_HOLE flags
> recognized by vfs, which was introduced by 982d81658 in v3.1-rc1),
> because ext4 had the "default behavior" support, and that means "just
> return i_size for SEEK_HOLE and will return the same offset for
> SEEK_DATA".
>
>> File system does not support unwritten extents.
> This means the file system doesn't treat unwritten extents as a hole,
> but data, which has nothing to do with SEEK_DATA/HOLE support status.
Hi Eryu,
Thanks for your detailed explanation, i got it.
Could you tell me whether generic/448 should be fixed or not?
Thanks,
Xiao Yang
>> _require_seek_data_hole could not catch "File system does not support" if
>> ext4 SEEK_DATA/SEEK_HOLE
>> support was not added.
>>
>> I think we should update _require_seek_data_hole to catch both "Kernel does
>> not support" and
>> "File system does not support". This case could be skipped when meetting
>> either of them.
> So this is wrong, IMO.
>
> Thanks,
> Eryu
>
>
> .
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
2017-07-19 10:38 ` Xiao Yang
@ 2017-07-21 7:07 ` Eryu Guan
2017-07-24 9:49 ` [PATCH] common/rc: factor out _ext4_disable_extent_zeroout() helper Xiao Yang
0 siblings, 1 reply; 12+ messages in thread
From: Eryu Guan @ 2017-07-21 7:07 UTC (permalink / raw)
To: Xiao Yang; +Cc: fstests
On Wed, Jul 19, 2017 at 06:38:01PM +0800, Xiao Yang wrote:
> On 2017/07/19 17:56, Eryu Guan wrote:
> > On Wed, Jul 19, 2017 at 10:35:01AM +0800, Xiao Yang wrote:
> > > On 2017/07/18 21:18, Eryu Guan wrote:
> > > > On Tue, Jul 18, 2017 at 04:27:50PM +0800, Xiao Yang wrote:
> > > > > On some old kernel(e.g. v3.5), this case fails because it can not create
> > > > > extent_max_zeroout_kb file, as below:
> > > > > Silence is golden
> > > > > +./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
> > > > > seek sanity check failed!
> > > > >
> > > > > The extent_max_zeroout_kb file is introduced by:
> > > > > 67a5da564f97('ext4: make the zero-out chunk size tunable')
> > > > This is available since v3.7-rc1 kernel
> > > > $ git describe --contains 67a5da564f97
> > > > v3.7-rc1~91^2~63
> > > >
> > > > But ext4 SEEK_DATA/SEEK_HOLE support was added in v3.8-rc1
> > > > $ git describe --contains c8c0df241cc2
> > > > v3.8-rc1~89^2~40
> > > >
> > > > IMO, you shouldn't hit this error at all, because test won't pass
> > > > _require_seek_data_hole rule. (Unless you're testing some customized
> > > > kernel with seek_data/hole backported but not that ext4 sysfs entry.)
> > > Hi Eryu
> > >
> > > Thanks for your explanation.
> > >
> > > I test it in v3.5 kernel without seek_data/hole backported, please see the
> > > following message:
> > > [root@localhost xfstests]# uname -r
> > > 3.5.0
> > > [root@localhost xfstests]# src/seek_sanity_test -t
> > > /mnt/xfstests/test/testfile 2>&1
> > > File system magic#: 0xef53
> > > Allocation size: 4096
> > > File system supports the default behavior.
> > OK, I see why the test was *not* _notrun on 3.5 kernel now (without
> > seek_data/hole support added to ext4, but with SEEK_DATA/SEEK_HOLE flags
> > recognized by vfs, which was introduced by 982d81658 in v3.1-rc1),
> > because ext4 had the "default behavior" support, and that means "just
> > return i_size for SEEK_HOLE and will return the same offset for
> > SEEK_DATA".
> >
> > > File system does not support unwritten extents.
> > This means the file system doesn't treat unwritten extents as a hole,
> > but data, which has nothing to do with SEEK_DATA/HOLE support status.
> Hi Eryu,
>
> Thanks for your detailed explanation, i got it.
>
> Could you tell me whether generic/448 should be fixed or not?
IMHO, as the pure "sysfs entry not found" issue, it's really a low
priority bug to fix, as the bug only exists when vfs recognizes
SEEK_DATA/HOLE flag && ext4 has no extent zeroout tunable in sysfs, so
only 3.1-3.6 kernels suffer from this issue, but they're really old
kernels.
OTOH, factoring out a helper like what I suggested in my first reply
seems reasonable to me, so we don't repeat the same pattern in multiple
tests and we also get the bug fixed. If you send a patch to do this I'm
happy to review it :)
Thanks,
Eryu
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
2017-07-18 13:18 ` Eryu Guan
2017-07-19 2:35 ` Xiao Yang
2017-07-19 3:06 ` [PATCH] common/rc: update _require_seek_data_hole() Xiao Yang
@ 2017-07-24 7:13 ` Xiao Yang
2 siblings, 0 replies; 12+ messages in thread
From: Xiao Yang @ 2017-07-24 7:13 UTC (permalink / raw)
To: Eryu Guan; +Cc: fstests
On 2017/07/18 21:18, Eryu Guan wrote:
> On Tue, Jul 18, 2017 at 04:27:50PM +0800, Xiao Yang wrote:
>> On some old kernel(e.g. v3.5), this case fails because it can not create
>> extent_max_zeroout_kb file, as below:
>> Silence is golden
>> +./tests/generic/448: line 54: /sys/fs/ext4/sda5/extent_max_zeroout_kb: No such file or directory
>> seek sanity check failed!
>>
>> The extent_max_zeroout_kb file is introduced by:
>> 67a5da564f97('ext4: make the zero-out chunk size tunable')
> This is available since v3.7-rc1 kernel
> $ git describe --contains 67a5da564f97
> v3.7-rc1~91^2~63
>
> But ext4 SEEK_DATA/SEEK_HOLE support was added in v3.8-rc1
> $ git describe --contains c8c0df241cc2
> v3.8-rc1~89^2~40
>
> IMO, you shouldn't hit this error at all, because test won't pass
> _require_seek_data_hole rule. (Unless you're testing some customized
> kernel with seek_data/hole backported but not that ext4 sysfs entry.)
>
>> We should only disable extent zeroing when extent_max_zeroout_kb is supported.
>>
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> ---
>> tests/generic/448 | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/generic/448 b/tests/generic/448
>> index 87b99d7..3e92742 100755
>> --- a/tests/generic/448
>> +++ b/tests/generic/448
>> @@ -51,7 +51,8 @@ _require_test_program "seek_sanity_test"
>> # Disable extent zeroing for ext4 as that change where holes are created
>> if [ "$FSTYP" = "ext4" ]; then
>> DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> + [ -f /sys/fs/ext4/$DEV/extent_max_zeroout_kb ] \
>> + && echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> But I'm OK with adding this check, but not in this test only, this
> pattern is repeated in several seek_data/hole tests, e.g.
> generic/285, generic/436, generic/445 generic/448, and generic/009
> (which is not a seek_data/hole test).
>
> So I'm wondering if this hunk of code can be made into a helper and
> embed it into _require_seek_data_hole. e.g. (completely untested)
>
> # Disable extent zeroing for ext4 on the given device
> _ext4_disable_extent_zeroout()
> {
> local dev=${1:-$TEST_DEV}
> local sdev=`_short_dev $dev`
>
> [ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ] \
> && echo 0>/sys/fs/ext4/$sdev/extent_max_zeroout_kb
> }
>
> And _require_seek_data_hole
>
> _require_seek_data_hole()
> {
> local dev=${1:-$TEST_DEV}
> local testfile=$TEST_DIR/$$.seek
>
> testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
> rm -f $testfile&>/dev/null
> echo $testseek | grep -q "Kernel does not support"&& \
> _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
> # Disable extent zeroing for ext4 as that change where holes are
> # created
> if [ "$FSTYP" == "ext4" ]; then
> _ext4_disable_extent_zeroout $dev
> fi
> }
>
> And update generic/009 accordingly to use this new helper.
>
> What do you and/or other people think?
Hi Eryu,
I am sorry for missing this suggestion, it sounds better to me. :-)
I will rewrite this patch as you said. Thanks a lot.
Thanks,
Xiao Yang.
> Thanks,
> Eryu
>
>> fi
>>
>> $here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE> $seqres.full 2>&1 ||
>> --
>> 1.8.3.1
>>
>>
>>
>> --
>> 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] 12+ messages in thread
* [PATCH] common/rc: factor out _ext4_disable_extent_zeroout() helper
2017-07-21 7:07 ` Eryu Guan
@ 2017-07-24 9:49 ` Xiao Yang
2017-07-24 10:04 ` Eryu Guan
0 siblings, 1 reply; 12+ messages in thread
From: Xiao Yang @ 2017-07-24 9:49 UTC (permalink / raw)
To: eguan; +Cc: fstests, Xiao Yang
1) This pattern is repeated in several seek_data/hole tests
(e.g. generic/285, generic/436, generic/445 generic/448)
and generic/009. A common _ext4_disable_extent_zeroout()
helper could be added and applied by generic/009 and
_require_seek_data_hole().
2) On some old kernels(e.g. v3.1-v3.6), when vfs recognizes
SEEK_DATA/HOLE flag && ext4 has no extent zeroout tunable
in sysfs, these cases may trigger "sysfs entry not found"
issue. We can add check if extent_max_zeroout_kb exists
on ext4 filesystem.
The extent_max_zeroout_kb is introduced by:
'67a5da564f97 ("ext4: make the zero-out chunk size tunable")'
3) Declare several vars as local in _require_seek_data_hole().
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
common/rc | 29 ++++++++++++++++++++++-------
tests/generic/009 | 7 +------
tests/generic/285 | 6 ------
tests/generic/436 | 6 ------
tests/generic/445 | 6 ------
tests/generic/448 | 6 ------
6 files changed, 23 insertions(+), 37 deletions(-)
diff --git a/common/rc b/common/rc
index bd989bb..b36a9bf 100644
--- a/common/rc
+++ b/common/rc
@@ -2304,16 +2304,31 @@ _require_fail_make_request()
not found. Seems that CONFIG_FAIL_MAKE_REQUEST kernel config option not enabled"
}
-#
+# Disable extent zeroing for ext4 on the given device
+_ext4_disable_extent_zeroout()
+{
+ local dev=${1:-$TEST_DEV}
+ local sdev=`_short_dev $dev`
+
+ if [ "$FSTYP" == "ext4" ]; then
+ [ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ] && \
+ echo 0 >/sys/fs/ext4/$sdev/extent_max_zeroout_kb
+ fi
+}
+
# Check if the file system supports seek_data/hole
-#
_require_seek_data_hole()
{
- testfile=$TEST_DIR/$$.seek
- testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
- rm -f $testfile &>/dev/null
- echo $testseek | grep -q "Kernel does not support" && \
- _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
+ local dev=${1:-$TEST_DEV}
+ local testfile=$TEST_DIR/$$.seek
+ local testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
+
+ rm -f $testfile &>/dev/null
+ echo $testseek | grep -q "Kernel does not support" && \
+ _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
+ # Disable extent zeroing for ext4 as that change where holes are
+ # created
+ _ext4_disable_extent_zeroout $dev
}
_require_runas()
diff --git a/tests/generic/009 b/tests/generic/009
index 5902afd..a7ca060 100755
--- a/tests/generic/009
+++ b/tests/generic/009
@@ -48,15 +48,10 @@ _require_xfs_io_command "fzero"
_require_xfs_io_command "fiemap"
_require_xfs_io_command "falloc"
_require_test
+_ext4_disable_extent_zeroout
testfile=$TEST_DIR/009.$$
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
# When PAGE_SIZE > 4096 xfs extent layout is different so it would not match
# the output.
if [ "$FSTYP" = "xfs" ]; then
diff --git a/tests/generic/285 b/tests/generic/285
index 16e70b1..3f7d298 100755
--- a/tests/generic/285
+++ b/tests/generic/285
@@ -47,12 +47,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
_cleanup()
{
eval "rm -f $BASE_TEST_FILE.*"
diff --git a/tests/generic/436 b/tests/generic/436
index bcd6ddc..6cda008 100755
--- a/tests/generic/436
+++ b/tests/generic/436
@@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
_cleanup()
{
rm -f $tmp.* $BASE_TEST_FILE.*
diff --git a/tests/generic/445 b/tests/generic/445
index 81dd916..323a0ca 100755
--- a/tests/generic/445
+++ b/tests/generic/445
@@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
_cleanup()
{
rm -f $tmp.* $BASE_TEST_FILE.*
diff --git a/tests/generic/448 b/tests/generic/448
index 87b99d7..22656f6 100755
--- a/tests/generic/448
+++ b/tests/generic/448
@@ -48,12 +48,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile_$seq
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
$here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE > $seqres.full 2>&1 ||
_fail "seek sanity check failed!"
--
1.8.3.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] common/rc: factor out _ext4_disable_extent_zeroout() helper
2017-07-24 9:49 ` [PATCH] common/rc: factor out _ext4_disable_extent_zeroout() helper Xiao Yang
@ 2017-07-24 10:04 ` Eryu Guan
2017-07-24 10:33 ` Xiao Yang
2017-07-24 10:44 ` [PATCH v2] " Xiao Yang
0 siblings, 2 replies; 12+ messages in thread
From: Eryu Guan @ 2017-07-24 10:04 UTC (permalink / raw)
To: Xiao Yang; +Cc: fstests
On Mon, Jul 24, 2017 at 05:49:07PM +0800, Xiao Yang wrote:
> 1) This pattern is repeated in several seek_data/hole tests
> (e.g. generic/285, generic/436, generic/445 generic/448)
> and generic/009. A common _ext4_disable_extent_zeroout()
> helper could be added and applied by generic/009 and
> _require_seek_data_hole().
>
> 2) On some old kernels(e.g. v3.1-v3.6), when vfs recognizes
> SEEK_DATA/HOLE flag && ext4 has no extent zeroout tunable
> in sysfs, these cases may trigger "sysfs entry not found"
> issue. We can add check if extent_max_zeroout_kb exists
> on ext4 filesystem.
> The extent_max_zeroout_kb is introduced by:
> '67a5da564f97 ("ext4: make the zero-out chunk size tunable")'
>
> 3) Declare several vars as local in _require_seek_data_hole().
>
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Thanks for doing this!
> ---
> common/rc | 29 ++++++++++++++++++++++-------
> tests/generic/009 | 7 +------
> tests/generic/285 | 6 ------
> tests/generic/436 | 6 ------
> tests/generic/445 | 6 ------
> tests/generic/448 | 6 ------
> 6 files changed, 23 insertions(+), 37 deletions(-)
>
> diff --git a/common/rc b/common/rc
> index bd989bb..b36a9bf 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -2304,16 +2304,31 @@ _require_fail_make_request()
> not found. Seems that CONFIG_FAIL_MAKE_REQUEST kernel config option not enabled"
> }
>
> -#
> +# Disable extent zeroing for ext4 on the given device
> +_ext4_disable_extent_zeroout()
> +{
> + local dev=${1:-$TEST_DEV}
> + local sdev=`_short_dev $dev`
> +
> + if [ "$FSTYP" == "ext4" ]; then
> + [ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ] && \
> + echo 0 >/sys/fs/ext4/$sdev/extent_max_zeroout_kb
> + fi
I'd like the caller to do this FSTYP check if we name the function with
a leading _ext4, it seems redundant to check FSTYP again when we know it
only works for ext4.
Or we can make it a function serves all FSTYP using a case switch, and
ext4 is the only filesystem that needs action. But I'm not sure if it's
necessary for other filesystems at all, even in the future, so I
suggested _ext4_disable_extent_zeroout in the first place.
Thanks,
Eryu
> +}
> +
> # Check if the file system supports seek_data/hole
> -#
> _require_seek_data_hole()
> {
> - testfile=$TEST_DIR/$$.seek
> - testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
> - rm -f $testfile &>/dev/null
> - echo $testseek | grep -q "Kernel does not support" && \
> - _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
> + local dev=${1:-$TEST_DEV}
> + local testfile=$TEST_DIR/$$.seek
> + local testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
> +
> + rm -f $testfile &>/dev/null
> + echo $testseek | grep -q "Kernel does not support" && \
> + _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
> + # Disable extent zeroing for ext4 as that change where holes are
> + # created
> + _ext4_disable_extent_zeroout $dev
> }
>
> _require_runas()
> diff --git a/tests/generic/009 b/tests/generic/009
> index 5902afd..a7ca060 100755
> --- a/tests/generic/009
> +++ b/tests/generic/009
> @@ -48,15 +48,10 @@ _require_xfs_io_command "fzero"
> _require_xfs_io_command "fiemap"
> _require_xfs_io_command "falloc"
> _require_test
> +_ext4_disable_extent_zeroout
>
> testfile=$TEST_DIR/009.$$
>
> -# Disable extent zeroing for ext4 as that change where holes are created
> -if [ "$FSTYP" = "ext4" ]; then
> - DEV=`_short_dev $TEST_DEV`
> - echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> -fi
> -
> # When PAGE_SIZE > 4096 xfs extent layout is different so it would not match
> # the output.
> if [ "$FSTYP" = "xfs" ]; then
> diff --git a/tests/generic/285 b/tests/generic/285
> index 16e70b1..3f7d298 100755
> --- a/tests/generic/285
> +++ b/tests/generic/285
> @@ -47,12 +47,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
>
> _require_test_program "seek_sanity_test"
>
> -# Disable extent zeroing for ext4 as that change where holes are created
> -if [ "$FSTYP" = "ext4" ]; then
> - DEV=`_short_dev $TEST_DEV`
> - echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> -fi
> -
> _cleanup()
> {
> eval "rm -f $BASE_TEST_FILE.*"
> diff --git a/tests/generic/436 b/tests/generic/436
> index bcd6ddc..6cda008 100755
> --- a/tests/generic/436
> +++ b/tests/generic/436
> @@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
>
> _require_test_program "seek_sanity_test"
>
> -# Disable extent zeroing for ext4 as that change where holes are created
> -if [ "$FSTYP" = "ext4" ]; then
> - DEV=`_short_dev $TEST_DEV`
> - echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> -fi
> -
> _cleanup()
> {
> rm -f $tmp.* $BASE_TEST_FILE.*
> diff --git a/tests/generic/445 b/tests/generic/445
> index 81dd916..323a0ca 100755
> --- a/tests/generic/445
> +++ b/tests/generic/445
> @@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
>
> _require_test_program "seek_sanity_test"
>
> -# Disable extent zeroing for ext4 as that change where holes are created
> -if [ "$FSTYP" = "ext4" ]; then
> - DEV=`_short_dev $TEST_DEV`
> - echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> -fi
> -
> _cleanup()
> {
> rm -f $tmp.* $BASE_TEST_FILE.*
> diff --git a/tests/generic/448 b/tests/generic/448
> index 87b99d7..22656f6 100755
> --- a/tests/generic/448
> +++ b/tests/generic/448
> @@ -48,12 +48,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile_$seq
>
> _require_test_program "seek_sanity_test"
>
> -# Disable extent zeroing for ext4 as that change where holes are created
> -if [ "$FSTYP" = "ext4" ]; then
> - DEV=`_short_dev $TEST_DEV`
> - echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
> -fi
> -
> $here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE > $seqres.full 2>&1 ||
> _fail "seek sanity check failed!"
>
> --
> 1.8.3.1
>
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] common/rc: factor out _ext4_disable_extent_zeroout() helper
2017-07-24 10:04 ` Eryu Guan
@ 2017-07-24 10:33 ` Xiao Yang
2017-07-24 10:44 ` [PATCH v2] " Xiao Yang
1 sibling, 0 replies; 12+ messages in thread
From: Xiao Yang @ 2017-07-24 10:33 UTC (permalink / raw)
To: Eryu Guan; +Cc: fstests
On 2017/07/24 18:04, Eryu Guan wrote:
> On Mon, Jul 24, 2017 at 05:49:07PM +0800, Xiao Yang wrote:
>> 1) This pattern is repeated in several seek_data/hole tests
>> (e.g. generic/285, generic/436, generic/445 generic/448)
>> and generic/009. A common _ext4_disable_extent_zeroout()
>> helper could be added and applied by generic/009 and
>> _require_seek_data_hole().
>>
>> 2) On some old kernels(e.g. v3.1-v3.6), when vfs recognizes
>> SEEK_DATA/HOLE flag&& ext4 has no extent zeroout tunable
>> in sysfs, these cases may trigger "sysfs entry not found"
>> issue. We can add check if extent_max_zeroout_kb exists
>> on ext4 filesystem.
>> The extent_max_zeroout_kb is introduced by:
>> '67a5da564f97 ("ext4: make the zero-out chunk size tunable")'
>>
>> 3) Declare several vars as local in _require_seek_data_hole().
>>
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
> Thanks for doing this!
>
>> ---
>> common/rc | 29 ++++++++++++++++++++++-------
>> tests/generic/009 | 7 +------
>> tests/generic/285 | 6 ------
>> tests/generic/436 | 6 ------
>> tests/generic/445 | 6 ------
>> tests/generic/448 | 6 ------
>> 6 files changed, 23 insertions(+), 37 deletions(-)
>>
>> diff --git a/common/rc b/common/rc
>> index bd989bb..b36a9bf 100644
>> --- a/common/rc
>> +++ b/common/rc
>> @@ -2304,16 +2304,31 @@ _require_fail_make_request()
>> not found. Seems that CONFIG_FAIL_MAKE_REQUEST kernel config option not enabled"
>> }
>>
>> -#
>> +# Disable extent zeroing for ext4 on the given device
>> +_ext4_disable_extent_zeroout()
>> +{
>> + local dev=${1:-$TEST_DEV}
>> + local sdev=`_short_dev $dev`
>> +
>> + if [ "$FSTYP" == "ext4" ]; then
>> + [ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ]&& \
>> + echo 0>/sys/fs/ext4/$sdev/extent_max_zeroout_kb
>> + fi
> I'd like the caller to do this FSTYP check if we name the function with
> a leading _ext4, it seems redundant to check FSTYP again when we know it
> only works for ext4.
Hi Eryu,
I prefer that only ext4 could call _ext4_disable_extent_zeroout.
I will send v2 patch as your above comment. Thanks a lot.
Thanks,
Xiao Yang
> Or we can make it a function serves all FSTYP using a case switch, and
> ext4 is the only filesystem that needs action. But I'm not sure if it's
> necessary for other filesystems at all, even in the future, so I
> suggested _ext4_disable_extent_zeroout in the first place.
>
> Thanks,
> Eryu
>
>> +}
>> +
>> # Check if the file system supports seek_data/hole
>> -#
>> _require_seek_data_hole()
>> {
>> - testfile=$TEST_DIR/$$.seek
>> - testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
>> - rm -f $testfile&>/dev/null
>> - echo $testseek | grep -q "Kernel does not support"&& \
>> - _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
>> + local dev=${1:-$TEST_DEV}
>> + local testfile=$TEST_DIR/$$.seek
>> + local testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
>> +
>> + rm -f $testfile&>/dev/null
>> + echo $testseek | grep -q "Kernel does not support"&& \
>> + _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
>> + # Disable extent zeroing for ext4 as that change where holes are
>> + # created
>> + _ext4_disable_extent_zeroout $dev
>> }
>>
>> _require_runas()
>> diff --git a/tests/generic/009 b/tests/generic/009
>> index 5902afd..a7ca060 100755
>> --- a/tests/generic/009
>> +++ b/tests/generic/009
>> @@ -48,15 +48,10 @@ _require_xfs_io_command "fzero"
>> _require_xfs_io_command "fiemap"
>> _require_xfs_io_command "falloc"
>> _require_test
>> +_ext4_disable_extent_zeroout
>>
>> testfile=$TEST_DIR/009.$$
>>
>> -# Disable extent zeroing for ext4 as that change where holes are created
>> -if [ "$FSTYP" = "ext4" ]; then
>> - DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> -fi
>> -
>> # When PAGE_SIZE> 4096 xfs extent layout is different so it would not match
>> # the output.
>> if [ "$FSTYP" = "xfs" ]; then
>> diff --git a/tests/generic/285 b/tests/generic/285
>> index 16e70b1..3f7d298 100755
>> --- a/tests/generic/285
>> +++ b/tests/generic/285
>> @@ -47,12 +47,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
>>
>> _require_test_program "seek_sanity_test"
>>
>> -# Disable extent zeroing for ext4 as that change where holes are created
>> -if [ "$FSTYP" = "ext4" ]; then
>> - DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> -fi
>> -
>> _cleanup()
>> {
>> eval "rm -f $BASE_TEST_FILE.*"
>> diff --git a/tests/generic/436 b/tests/generic/436
>> index bcd6ddc..6cda008 100755
>> --- a/tests/generic/436
>> +++ b/tests/generic/436
>> @@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
>>
>> _require_test_program "seek_sanity_test"
>>
>> -# Disable extent zeroing for ext4 as that change where holes are created
>> -if [ "$FSTYP" = "ext4" ]; then
>> - DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> -fi
>> -
>> _cleanup()
>> {
>> rm -f $tmp.* $BASE_TEST_FILE.*
>> diff --git a/tests/generic/445 b/tests/generic/445
>> index 81dd916..323a0ca 100755
>> --- a/tests/generic/445
>> +++ b/tests/generic/445
>> @@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
>>
>> _require_test_program "seek_sanity_test"
>>
>> -# Disable extent zeroing for ext4 as that change where holes are created
>> -if [ "$FSTYP" = "ext4" ]; then
>> - DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> -fi
>> -
>> _cleanup()
>> {
>> rm -f $tmp.* $BASE_TEST_FILE.*
>> diff --git a/tests/generic/448 b/tests/generic/448
>> index 87b99d7..22656f6 100755
>> --- a/tests/generic/448
>> +++ b/tests/generic/448
>> @@ -48,12 +48,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile_$seq
>>
>> _require_test_program "seek_sanity_test"
>>
>> -# Disable extent zeroing for ext4 as that change where holes are created
>> -if [ "$FSTYP" = "ext4" ]; then
>> - DEV=`_short_dev $TEST_DEV`
>> - echo 0>/sys/fs/ext4/$DEV/extent_max_zeroout_kb
>> -fi
>> -
>> $here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE> $seqres.full 2>&1 ||
>> _fail "seek sanity check failed!"
>>
>> --
>> 1.8.3.1
>>
>>
>>
>
> .
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2] common/rc: factor out _ext4_disable_extent_zeroout() helper
2017-07-24 10:04 ` Eryu Guan
2017-07-24 10:33 ` Xiao Yang
@ 2017-07-24 10:44 ` Xiao Yang
1 sibling, 0 replies; 12+ messages in thread
From: Xiao Yang @ 2017-07-24 10:44 UTC (permalink / raw)
To: eguan; +Cc: fstests, Xiao Yang
1) This pattern is repeated in several seek_data/hole tests
(e.g. generic/285, generic/436, generic/445 generic/448)
and generic/009. A common _ext4_disable_extent_zeroout()
helper could be added and applied by generic/009 and
_require_seek_data_hole().
2) On some old kernels(e.g. v3.1-v3.6), when vfs recognizes
SEEK_DATA/HOLE flag && ext4 has no extent zeroout tunable
in sysfs, these cases may trigger "sysfs entry not found"
issue. We can add check if extent_max_zeroout_kb exists
on ext4 filesystem.
The extent_max_zeroout_kb is introduced by:
'67a5da564f97 ("ext4: make the zero-out chunk size tunable")'
3) Declare several vars as local in _require_seek_data_hole().
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
common/rc | 29 ++++++++++++++++++++++-------
tests/generic/009 | 3 +--
tests/generic/285 | 6 ------
tests/generic/436 | 6 ------
tests/generic/445 | 6 ------
tests/generic/448 | 6 ------
6 files changed, 23 insertions(+), 33 deletions(-)
diff --git a/common/rc b/common/rc
index bd989bb..49887cf 100644
--- a/common/rc
+++ b/common/rc
@@ -2304,16 +2304,31 @@ _require_fail_make_request()
not found. Seems that CONFIG_FAIL_MAKE_REQUEST kernel config option not enabled"
}
-#
+# Disable extent zeroing for ext4 on the given device
+_ext4_disable_extent_zeroout()
+{
+ local dev=${1:-$TEST_DEV}
+ local sdev=`_short_dev $dev`
+
+ [ -f /sys/fs/ext4/$sdev/extent_max_zeroout_kb ] && \
+ echo 0 >/sys/fs/ext4/$sdev/extent_max_zeroout_kb
+}
+
# Check if the file system supports seek_data/hole
-#
_require_seek_data_hole()
{
- testfile=$TEST_DIR/$$.seek
- testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
- rm -f $testfile &>/dev/null
- echo $testseek | grep -q "Kernel does not support" && \
- _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
+ local dev=${1:-$TEST_DEV}
+ local testfile=$TEST_DIR/$$.seek
+ local testseek=`$here/src/seek_sanity_test -t $testfile 2>&1`
+
+ rm -f $testfile &>/dev/null
+ echo $testseek | grep -q "Kernel does not support" && \
+ _notrun "File system does not support llseek(2) SEEK_DATA/HOLE"
+ # Disable extent zeroing for ext4 as that change where holes are
+ # created
+ if [ "$FSTYP" = "ext4" ]; then
+ _ext4_disable_extent_zeroout $dev
+ fi
}
_require_runas()
diff --git a/tests/generic/009 b/tests/generic/009
index 5902afd..797def5 100755
--- a/tests/generic/009
+++ b/tests/generic/009
@@ -53,8 +53,7 @@ testfile=$TEST_DIR/009.$$
# Disable extent zeroing for ext4 as that change where holes are created
if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
+ _ext4_disable_extent_zeroout
fi
# When PAGE_SIZE > 4096 xfs extent layout is different so it would not match
diff --git a/tests/generic/285 b/tests/generic/285
index 16e70b1..3f7d298 100755
--- a/tests/generic/285
+++ b/tests/generic/285
@@ -47,12 +47,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
_cleanup()
{
eval "rm -f $BASE_TEST_FILE.*"
diff --git a/tests/generic/436 b/tests/generic/436
index bcd6ddc..6cda008 100755
--- a/tests/generic/436
+++ b/tests/generic/436
@@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
_cleanup()
{
rm -f $tmp.* $BASE_TEST_FILE.*
diff --git a/tests/generic/445 b/tests/generic/445
index 81dd916..323a0ca 100755
--- a/tests/generic/445
+++ b/tests/generic/445
@@ -44,12 +44,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
_cleanup()
{
rm -f $tmp.* $BASE_TEST_FILE.*
diff --git a/tests/generic/448 b/tests/generic/448
index 87b99d7..22656f6 100755
--- a/tests/generic/448
+++ b/tests/generic/448
@@ -48,12 +48,6 @@ BASE_TEST_FILE=$TEST_DIR/seek_sanity_testfile_$seq
_require_test_program "seek_sanity_test"
-# Disable extent zeroing for ext4 as that change where holes are created
-if [ "$FSTYP" = "ext4" ]; then
- DEV=`_short_dev $TEST_DEV`
- echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb
-fi
-
$here/src/seek_sanity_test -s 18 -e 18 $BASE_TEST_FILE > $seqres.full 2>&1 ||
_fail "seek sanity check failed!"
--
1.8.3.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-07-24 10:44 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-18 8:27 [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported Xiao Yang
2017-07-18 13:18 ` Eryu Guan
2017-07-19 2:35 ` Xiao Yang
2017-07-19 9:56 ` Eryu Guan
2017-07-19 10:38 ` Xiao Yang
2017-07-21 7:07 ` Eryu Guan
2017-07-24 9:49 ` [PATCH] common/rc: factor out _ext4_disable_extent_zeroout() helper Xiao Yang
2017-07-24 10:04 ` Eryu Guan
2017-07-24 10:33 ` Xiao Yang
2017-07-24 10:44 ` [PATCH v2] " Xiao Yang
2017-07-19 3:06 ` [PATCH] common/rc: update _require_seek_data_hole() Xiao Yang
2017-07-24 7:13 ` [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported Xiao Yang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox