diff mbox series

[RFC,2/2] xfstests: common/rc: add cluster size support for ext4

Message ID 1587720830-11955-3-git-send-email-jefflexu@linux.alibaba.com (mailing list archive)
State New, archived
Headers show
Series fsx: make fsx perceptive to cluster size | expand

Commit Message

Jingbo Xu April 24, 2020, 9:33 a.m. UTC
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(+)

Comments

Darrick J. Wong April 27, 2020, 5:33 p.m. UTC | #1
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.

--D

> +
>  	set -- $here/ltp/fsx $args $FSX_AVOID $TEST_DIR/junk
>  	echo "$@" >>$seqres.full
>  	rm -f $TEST_DIR/junk
> -- 
> 1.8.3.1
>
diff mbox series

Patch

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
+
 	set -- $here/ltp/fsx $args $FSX_AVOID $TEST_DIR/junk
 	echo "$@" >>$seqres.full
 	rm -f $TEST_DIR/junk