All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Zorro Lang <zlang@redhat.com>
Cc: fstests@vger.kernel.org
Subject: Re: [PATCH v2] xfs: new helper grows the mounted scratch XFS filesystem
Date: Thu, 10 May 2018 10:54:06 -0700	[thread overview]
Message-ID: <20180510175406.GH4116@magnolia> (raw)
In-Reply-To: <20180510163832.7858-1-zlang@redhat.com>

On Fri, May 11, 2018 at 12:38:32AM +0800, Zorro Lang wrote:
> When test on large SCRATCH_DEV, grow a small XFS to huge size is a
> horrible thing (e.g grow 128m to 500T). So add a helper named
> _scratch_xfs_growfs() to do below things:
> 
> 1) If a 'size' argument is specified, the filesystem will not be
>    grown larger than that size (depend on the device size).
> 2) else if LARGE_SCRATCH_DEV = yes (--large-fs option), the
>    filesystem will not be grown larger than 10x the current fs size.
> 3) else the scratch filesystem will be expanded to fit the scratch
>    device.
> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>
> ---
> 
> Hi,
> 
> Thanks Eryu and Darrick help to review this patch.
> 
> V2 has below changes:
> 1) Change function name _scratch_xfs_growfs_limited to _scratch_xfs_growfs
> 2) Change the comment about _scratch_xfs_growfs
> 3) Change local variable limit_size to max_size
> 
> Thanks,
> Zorro
> 
>  common/xfs    | 36 ++++++++++++++++++++++++++++++++++++
>  tests/xfs/002 |  2 +-
>  tests/xfs/127 |  2 +-
>  tests/xfs/233 |  2 +-
>  4 files changed, 39 insertions(+), 3 deletions(-)
> 
> diff --git a/common/xfs b/common/xfs
> index e0bc3f43..a6fe5bf9 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -721,3 +721,39 @@ _require_xfs_db_write_array()
>  	rm -f $TEST_DIR/$seq.img
>  	[ $supported -eq 0 ] && _notrun "xfs_db write can't support array"
>  }
> +
> +# Usage: _scratch_xfs_growfs [max_size_in_bytes]
> +#
> +# If max_size_in_bytes is specified, the filesystem will *not* be grown larger
> +# than that size (depend on the device size).
> +# Else if LARGE_SCRATCH_DEV = yes (--large-fs option), the filesystem will
> +# not be grown larger than 10x the current fs size.
> +# Else the scratch filesystem will be expanded to fit the scratch device.
> +_scratch_xfs_growfs()
> +{
> +	local max_size="$1"
> +	local option=""
> +
> +	if [ "$LARGE_SCRATCH_DEV" = "yes" -o -n "$max_size" ]; then
> +		local tmp=`mktemp -u`
> +		xfs_info $SCRATCH_MNT | _filter_mkfs > /dev/null 2>$tmp.info

$XFS_INFO_PROG, not xfs_info (?)

Otherwise mostly looks fine to me.

--D

> +		. $tmp.info
> +		rm -f $tmp.info
> +
> +		local fs_size=$((dbsize * dblocks))
> +		local dev_size_kb=`_get_device_size $SCRATCH_DEV`
> +
> +		# default max_size is 10 times current fs size.
> +		if [ -z "$max_size" ]; then
> +			max_size=$((fs_size * 10))
> +		fi
> +		# don't limit growfs size if device size is smaller
> +		if [ $((dev_size_kb * 1024)) -gt $max_size ]; then
> +			option="-D $((max_size / dbsize))"
> +		else
> +			option=""
> +		fi
> +	fi
> +
> +	$XFS_GROWFS_PROG $option $SCRATCH_MNT
> +}
> diff --git a/tests/xfs/002 b/tests/xfs/002
> index 741117be..a77a8719 100755
> --- a/tests/xfs/002
> +++ b/tests/xfs/002
> @@ -68,7 +68,7 @@ _scratch_xfs_db -x -c "sb 2" -c "type data" -c "write fill 0xff 224 4"
>  _scratch_mount
>  
>  # This should pass
> -$XFS_GROWFS_PROG $SCRATCH_MNT >> $seqres.full 2>&1 || _fail "growfs failed"
> +_scratch_xfs_growfs >> $seqres.full 2>&1 || _fail "growfs failed"
>  
>  # success, all done
>  status=0
> diff --git a/tests/xfs/127 b/tests/xfs/127
> index 9df99904..272ea959 100755
> --- a/tests/xfs/127
> +++ b/tests/xfs/127
> @@ -61,7 +61,7 @@ _cp_reflink $testdir/original $testdir/copy1
>  _cp_reflink $testdir/copy1 $testdir/copy2
>  
>  echo "Grow fs"
> -$XFS_GROWFS_PROG $SCRATCH_MNT 2>&1 |  _filter_growfs >> $seqres.full
> +_scratch_xfs_growfs 2>&1 | _filter_growfs >> $seqres.full
>  _scratch_cycle_mount
>  
>  echo "Create more reflink copies"
> diff --git a/tests/xfs/233 b/tests/xfs/233
> index e61c444d..f3689bc9 100755
> --- a/tests/xfs/233
> +++ b/tests/xfs/233
> @@ -59,7 +59,7 @@ cp -p $testdir/original $testdir/copy1
>  cp -p $testdir/copy1 $testdir/copy2
>  
>  echo "Grow fs"
> -$XFS_GROWFS_PROG $SCRATCH_MNT 2>&1 |  _filter_growfs >> $seqres.full
> +_scratch_xfs_growfs 2>&1 |  _filter_growfs >> $seqres.full
>  _scratch_cycle_mount
>  
>  echo "Create more copies"
> -- 
> 2.14.3
> 
> --
> 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:[~2018-05-10 17:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-10 16:38 [PATCH v2] xfs: new helper grows the mounted scratch XFS filesystem Zorro Lang
2018-05-10 17:54 ` Darrick J. Wong [this message]
2018-05-11  3:31   ` Zorro Lang
2018-05-11  3:33     ` Darrick J. Wong

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=20180510175406.GH4116@magnolia \
    --to=darrick.wong@oracle.com \
    --cc=fstests@vger.kernel.org \
    --cc=zlang@redhat.com \
    /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.