All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiao Yang <yangx.jy@cn.fujitsu.com>
To: Eryu Guan <eguan@redhat.com>
Cc: fstests@vger.kernel.org
Subject: Re: [PATCH] generic/448: don't disable extent zeroing if extent_max_zeroout_kb isn't supported
Date: Wed, 19 Jul 2017 10:35:01 +0800	[thread overview]
Message-ID: <596EC555.7020404@cn.fujitsu.com> (raw)
In-Reply-To: <20170718131852.GX2478@eguan.usersys.redhat.com>

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
>
> .
>




  reply	other threads:[~2017-07-19  2:35 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=596EC555.7020404@cn.fujitsu.com \
    --to=yangx.jy@cn.fujitsu.com \
    --cc=eguan@redhat.com \
    --cc=fstests@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.