From: "Darrick J. Wong" <djwong@kernel.org>
To: "Pankaj Raghav (Samsung)" <kernel@pankajraghav.com>
Cc: Pankaj Raghav <p.raghav@samsung.com>,
fstests@vger.kernel.org, zlang@redhat.com,
Dave Chinner <david@fromorbit.com>,
mcgrof@kernel.org, gost.dev@samsung.com,
linux-xfs@vger.kernel.org,
"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>
Subject: Re: fstest failure due to filesystem size for 16k, 32k and 64k FSB
Date: Wed, 31 Jan 2024 10:28:58 -0800 [thread overview]
Message-ID: <20240131182858.GG6188@frogsfrogsfrogs> (raw)
In-Reply-To: <yhuvl7u466fc6zznulfirtg35m7fteutzhar2dhunrxleterym@3qxydiupxnsx>
On Wed, Jan 31, 2024 at 03:05:48PM +0100, Pankaj Raghav (Samsung) wrote:
> > >
> > > Thanks for the reply. So we can have a small `if` conditional block for xfs
> > > to have fs size = 500M in generic test cases.
> >
> > I'd suggest creating a helper where you pass in the fs size you want and
> > it rounds that up to the minimum value. That would then get passed to
> > _scratch_mkfs_sized or _scsi_debug_get_dev.
> >
> > (testing this as we speak...)
>
> I would be more than happy if you send a patch for
> this but I also know you are pretty busy, so let me know if you want me
> to send a patch for this issue.
>
> You had something like this in mind?
Close, but something more like below. It's not exhaustive; it merely
makes the xfs 64k bs tests pass:
From: Darrick J. Wong <djwong@kernel.org>
Subject: [PATCH] misc: fix test that fail formatting with 64k blocksize
There's a bunch of tests that fail the formatting step when the test run
is configured to use XFS with a 64k blocksize. This happens because XFS
doesn't really support that combination due to minimum log size
constraints. Fix the test to format larger devices in that case.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
common/rc | 29 +++++++++++++++++++++++++++++
tests/generic/042 | 9 +--------
tests/generic/081 | 7 +++++--
tests/generic/108 | 6 ++++--
tests/generic/704 | 3 ++-
tests/generic/730 | 3 ++-
tests/generic/731 | 3 ++-
tests/xfs/279 | 7 ++++---
8 files changed, 49 insertions(+), 18 deletions(-)
diff --git a/common/rc b/common/rc
index 29bb90ca4d..953aad85ae 100644
--- a/common/rc
+++ b/common/rc
@@ -940,6 +940,35 @@ _check_minimal_fs_size()
fi
}
+# Round a proposed filesystem size up to the minimium supported size. The
+# input is in MB and so is the output.
+_small_fs_size_mb()
+{
+ local size="$1"
+ local runner_min_size=0
+ local fs_min_size=0
+
+ case "$FSTYP" in
+ xfs)
+ # xfs no longer supports filesystems smaller than 512m
+ fs_min_size=512
+ ;;
+ f2fs)
+ # f2fs-utils 1.9.0 needs at least 38 MB space for f2fs image.
+ # However, f2fs-utils 1.14.0 needs at least 52 MB. Not sure if
+ # it will change again. So just set it 128M.
+ fs_min_size=128
+ ;;
+ esac
+ (( size < fs_min_size )) && size="$fs_min_size"
+
+ # If the test runner wanted a minimum size, enforce that here.
+ test -n "$MIN_FSSIZE" && runner_min_size=$((MIN_FSSIZE / 1048576))
+ (( size < runner_min_size)) && size="$runner_min_size"
+
+ echo "$size"
+}
+
# Create fs of certain size on scratch device
# _scratch_mkfs_sized <size in bytes> [optional blocksize]
_scratch_mkfs_sized()
diff --git a/tests/generic/042 b/tests/generic/042
index 5116183f79..63a46d6b2b 100755
--- a/tests/generic/042
+++ b/tests/generic/042
@@ -27,14 +27,7 @@ _crashtest()
img=$SCRATCH_MNT/$seq.img
mnt=$SCRATCH_MNT/$seq.mnt
file=$mnt/file
- size=25M
-
- # f2fs-utils 1.9.0 needs at least 38 MB space for f2fs image. However,
- # f2fs-utils 1.14.0 needs at least 52 MB. Not sure if it will change
- # again. So just set it 128M.
- if [ $FSTYP == "f2fs" ]; then
- size=128M
- fi
+ size=$(_small_fs_size_mb 25)M
# Create an fs on a small, initialized image. The pattern is written to
# the image to detect stale data exposure.
diff --git a/tests/generic/081 b/tests/generic/081
index 22ac94de53..0996f221d3 100755
--- a/tests/generic/081
+++ b/tests/generic/081
@@ -62,13 +62,16 @@ snapname=snap_$seq
mnt=$TEST_DIR/mnt_$seq
mkdir -p $mnt
+size=$(_small_fs_size_mb 300)
+lvsize=$((size * 85 / 100)) # ~256M
+
# make sure there's enough disk space for 256M lv, test for 300M here in case
# lvm uses some space for metadata
-_scratch_mkfs_sized $((300 * 1024 * 1024)) >>$seqres.full 2>&1
+_scratch_mkfs_sized $((size * 1024 * 1024)) >>$seqres.full 2>&1
$LVM_PROG vgcreate -f $vgname $SCRATCH_DEV >>$seqres.full 2>&1
# We use yes pipe instead of 'lvcreate --yes' because old version of lvm
# (like 2.02.95 in RHEL6) don't support --yes option
-yes | $LVM_PROG lvcreate -L 256M -n $lvname $vgname >>$seqres.full 2>&1
+yes | $LVM_PROG lvcreate -L ${lvsize}M -n $lvname $vgname >>$seqres.full 2>&1
# wait for lvcreation to fully complete
$UDEV_SETTLE_PROG >>$seqres.full 2>&1
diff --git a/tests/generic/108 b/tests/generic/108
index efe66ba57f..07703fc8f1 100755
--- a/tests/generic/108
+++ b/tests/generic/108
@@ -44,9 +44,11 @@ vgname=vg_$seq
physical=`blockdev --getpbsz $SCRATCH_DEV`
logical=`blockdev --getss $SCRATCH_DEV`
+size=$(_small_fs_size_mb 300)
+lvsize=$((size * 91 / 100))
# _get_scsi_debug_dev returns a scsi debug device with 128M in size by default
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev ${physical:-512} ${logical:-512} 0 300`
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev ${physical:-512} ${logical:-512} 0 $size`
test -b "$SCSI_DEBUG_DEV" || _notrun "Failed to initialize scsi debug device"
echo "SCSI debug device $SCSI_DEBUG_DEV" >>$seqres.full
@@ -55,7 +57,7 @@ $LVM_PROG pvcreate -f $SCSI_DEBUG_DEV $SCRATCH_DEV >>$seqres.full 2>&1
$LVM_PROG vgcreate -f $vgname $SCSI_DEBUG_DEV $SCRATCH_DEV >>$seqres.full 2>&1
# We use yes pipe instead of 'lvcreate --yes' because old version of lvm
# (like 2.02.95 in RHEL6) don't support --yes option
-yes | $LVM_PROG lvcreate -i 2 -I 4m -L 275m -n $lvname $vgname \
+yes | $LVM_PROG lvcreate -i 2 -I 4m -L ${lvsize}m -n $lvname $vgname \
>>$seqres.full 2>&1
# wait for lv creation to fully complete
$UDEV_SETTLE_PROG >>$seqres.full 2>&1
diff --git a/tests/generic/704 b/tests/generic/704
index c0142a6051..6cc4bb4af0 100755
--- a/tests/generic/704
+++ b/tests/generic/704
@@ -30,8 +30,9 @@ _require_scsi_debug
_require_test
_require_block_device $TEST_DEV
+size=$(_small_fs_size_mb 256)
echo "Get a device with 4096 physical sector size and 512 logical sector size"
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 0 256`
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 0 $size`
blockdev --getpbsz --getss $SCSI_DEBUG_DEV
echo "mkfs and mount"
diff --git a/tests/generic/730 b/tests/generic/730
index 11308cdaa1..988c47e18e 100755
--- a/tests/generic/730
+++ b/tests/generic/730
@@ -27,7 +27,8 @@ _require_test
_require_block_device $TEST_DEV
_require_scsi_debug
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev 512 512 0 256`
+size=$(_small_fs_size_mb 256)
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev 512 512 0 $size`
test -b "$SCSI_DEBUG_DEV" || _notrun "Failed to initialize scsi debug device"
echo "SCSI debug device $SCSI_DEBUG_DEV" >>$seqres.full
diff --git a/tests/generic/731 b/tests/generic/731
index e1400d062c..b279e3f7b4 100755
--- a/tests/generic/731
+++ b/tests/generic/731
@@ -27,7 +27,8 @@ _require_block_device $TEST_DEV
_supported_fs generic
_require_scsi_debug
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev 512 512 0 256`
+size=$(_small_fs_size_mb 256)
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev 512 512 0 $size`
test -b "$SCSI_DEBUG_DEV" || _notrun "Failed to initialize scsi debug device"
echo "SCSI debug device $SCSI_DEBUG_DEV" >>$seqres.full
diff --git a/tests/xfs/279 b/tests/xfs/279
index 835d187f51..9f366d1e75 100755
--- a/tests/xfs/279
+++ b/tests/xfs/279
@@ -26,6 +26,7 @@ _cleanup()
_supported_fs xfs
_require_scsi_debug
+size=$(_small_fs_size_mb 128)
# Remove xfs signature so -f isn't needed to re-mkfs
_wipe_device()
@@ -55,7 +56,7 @@ _check_mkfs()
(
echo "==================="
echo "4k physical 512b logical aligned"
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 0 128`
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 0 $size`
test -b "$SCSI_DEBUG_DEV" || _notrun "Could not get scsi_debug device"
# sector size should default to 4k
_check_mkfs $SCSI_DEBUG_DEV
@@ -68,7 +69,7 @@ _put_scsi_debug_dev
(
echo "==================="
echo "4k physical 512b logical unaligned"
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 1 128`
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 1 $size`
test -b "$SCSI_DEBUG_DEV" || _notrun "Could not get scsi_debug device"
# should fail on misalignment
_check_mkfs $SCSI_DEBUG_DEV
@@ -85,7 +86,7 @@ _put_scsi_debug_dev
(
echo "==================="
echo "hard 4k physical / 4k logical"
-SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 4096 0 128`
+SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 4096 0 $size`
test -b "$SCSI_DEBUG_DEV" || _notrun "Could not get scsi_debug device"
# block size smaller than sector size should fail
_check_mkfs -b size=2048 $SCSI_DEBUG_DEV
next prev parent reply other threads:[~2024-01-31 18:28 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20240130131803eucas1p280d9355ca3f8dc94073aff54555e3820@eucas1p2.samsung.com>
2024-01-30 13:18 ` fstest failure due to filesystem size for 16k, 32k and 64k FSB Pankaj Raghav
2024-01-30 19:56 ` Darrick J. Wong
2024-01-30 20:34 ` Pankaj Raghav
2024-01-31 3:48 ` Darrick J. Wong
2024-01-31 14:05 ` Pankaj Raghav (Samsung)
2024-01-31 18:28 ` Darrick J. Wong [this message]
2024-02-01 15:44 ` Pankaj Raghav (Samsung)
2024-02-02 16:46 ` Darrick J. Wong
2024-02-02 17:18 ` Pankaj Raghav
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=20240131182858.GG6188@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=david@fromorbit.com \
--cc=fstests@vger.kernel.org \
--cc=gost.dev@samsung.com \
--cc=kernel@pankajraghav.com \
--cc=linux-xfs@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=p.raghav@samsung.com \
--cc=ritesh.list@gmail.com \
--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.