public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
From: JeffleXu <jefflexu@linux.alibaba.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: fstests@vger.kernel.org, linux-ext4@vger.kernel.org,
	linux-xfs@vger.kernel.org
Subject: Re: [RFC,2/2] xfstests: common/rc: add cluster size support for ext4
Date: Mon, 5 Jul 2021 14:58:51 +0800	[thread overview]
Message-ID: <0939cdf0-895c-7287-569a-2a9b4269b1ca@linux.alibaba.com> (raw)


Sorry for digging this really old post [1]. The overall background is
that, @offset and @len need to be aligned with cluster size when doing
fallocate(), or several xfstests cases calling fsx will fail if the
tested filesystem enabling 'bigalloc' feature.

On April 27, 2020, 5:33 p.m. UTC Darrick J. Wong wrote:

> On Fri, Apr 24, 2020 at 05:33:50PM +0800, Jeffle Xu wrote:
>> Inserting and collapsing range on ext4 with 'bigalloc' feature will
>> fail due to the offset and size should be alligned with the cluster
>> size.
>> 
>> The previous patch has add support for cluster size in fsx. Detect and
>> pass the cluster size parameter to fsx if the underlying filesystem
>> is ext4 with bigalloc.
>> 
>> Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com>
>> ---
>>  common/rc | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>> 
>> diff --git a/common/rc b/common/rc
>> index 2000bd9..71dde5f 100644
>> --- a/common/rc
>> +++ b/common/rc
>> @@ -3908,6 +3908,15 @@ run_fsx()
>>  {
>>  	echo fsx $@
>>  	local args=`echo $@ | sed -e "s/ BSIZE / $bsize /g" -e "s/ PSIZE / $psize /g"`
>> +
>> +	if [ "$FSTYP" == "ext4" ]; then
>> +		local cluster_size=$(tune2fs -l $TEST_DEV | grep 'Cluster size' | awk '{print $3}')
>> +		if [ -n $cluster_size ]; then
>> +			echo "cluster size: $cluster_size"
>> +			args="$args -u $cluster_size"
>> +		fi
>> +	fi
> 
> Computing the file allocation block size ought to be a separate helper.
> 
> I wonder if there's a standard way to report cluster sizes, seeing as
> fat, ext4, ocfs2, and xfs can all have minimum space allocation units
> that are larger than the base fs block size.

In fact only for insert_range and collapse range of ext4 and xfs (in
realtime mode), @offset and @len need to be aligned with cluster size.

Though fat and ocfs2 also support cluster size, ocfs2 only supports
preallocate and punch_hole, and fat only supports preallocate, in which
case @offset and @len needn't be aligned with cluster size.


So we need to align @offset and @len with cluster size only for ext4 and
xfs (in realtime mode) at a minimum cost, to fix this issue. But the
question is, there's no standard programming interface exporting cluster
size. For both ext4 and xfs, it's stored as a binary data in disk
version superblock, e.g., tune2fs could detect the cluster size of ext4.


Any idea on how to query the cluster size?


[1]
https://patchwork.kernel.org/project/fstests/cover/1587720830-11955-1-git-send-email-jefflexu@linux.alibaba.com/

-- 
Thanks,
Jeffle

             reply	other threads:[~2021-07-05  6:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-05  6:58 JeffleXu [this message]
2021-07-06 18:14 ` [RFC,2/2] xfstests: common/rc: add cluster size support for ext4 Darrick J. Wong
2021-07-07 10:47   ` [RFC PATCH] misc: skip fsx tests when op length not congruent with file allocation unit Jeffle Xu
2021-07-18 13:51     ` Eryu Guan

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=0939cdf0-895c-7287-569a-2a9b4269b1ca@linux.alibaba.com \
    --to=jefflexu@linux.alibaba.com \
    --cc=20200427173354.GM6740@magnolia \
    --cc=darrick.wong@oracle.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-xfs@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox