All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Theodore Ts'o" <tytso@mit.edu>
To: fstests@vger.kernel.org
Cc: "Theodore Ts'o" <tytso@mit.edu>
Subject: [PATCH 1/2] common: check if the scratch device can support 1024 block sizes
Date: Sun, 22 Oct 2023 17:55:28 -0400	[thread overview]
Message-ID: <20231022215529.2202150-2-tytso@mit.edu> (raw)
In-Reply-To: <20231022215529.2202150-1-tytso@mit.edu>

If the scratch device has as logical blocksize larger than 512 --- for
example, some SSD or HDD's may have a 4k logical blocksize, and so
will not support a file system with a 1k block size.

Add a new function, _require_scratch_support_blocksize so we can skip
tests that use _scratch_mkfs_blocksized with a size less than the
scratch device's logical block size.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 common/rc      | 12 ++++++++++++
 tests/ext4/055 |  1 +
 tests/xfs/205  |  1 +
 tests/xfs/432  |  1 +
 tests/xfs/516  |  1 +
 5 files changed, 16 insertions(+)

diff --git a/common/rc b/common/rc
index 7f5a9527c..8d7179567 100644
--- a/common/rc
+++ b/common/rc
@@ -1124,6 +1124,9 @@ _scratch_mkfs_blocksized()
 	if [ $blocksize -lt $(_get_page_size) ]; then
 		_exclude_scratch_mount_option dax
 	fi
+	if [ $blocksize -lt $(blockdev --getss $SCRATCH_DEV) ]; then
+		_require_scratch_support_blocksize "$blocksize"
+	fi
 
 	case $FSTYP in
 	btrfs)
@@ -4452,6 +4455,15 @@ _get_device_size()
 	echo $(($(blockdev --getsz $1) >> 1))
 }
 
+_require_scratch_support_blocksize()
+{
+	local blocksize=$1
+
+	if [ $blocksize -lt $(blockdev --getss $SCRATCH_DEV) ]; then
+		_notrun "$SCRATCH_DEV does not support a block size of $blocksize."
+	fi
+}
+
 # Make sure we actually have dmesg checking set up.
 _require_check_dmesg()
 {
diff --git a/tests/ext4/055 b/tests/ext4/055
index aa15cfe98..7025f6283 100755
--- a/tests/ext4/055
+++ b/tests/ext4/055
@@ -27,6 +27,7 @@ echo "Silence is golden"
 
 # The 1K blocksize is designed for debugfs.
 _exclude_scratch_mount_option dax
+_require_scratch_support_blocksize 1024
 _scratch_mkfs "-F -O quota -b 1024" > $seqres.full 2>&1
 
 # Start from 0, fill block 1 with 6,replace the original 2.
diff --git a/tests/xfs/205 b/tests/xfs/205
index 104f1f45a..84c099208 100755
--- a/tests/xfs/205
+++ b/tests/xfs/205
@@ -23,6 +23,7 @@ _require_scratch_nocheck
 unset SCRATCH_RTDEV
 
 fsblksz=1024
+_require_scratch_support_blocksize $fsblksz
 _scratch_mkfs_xfs -d size=$((32768*fsblksz)) -b size=$fsblksz >> $seqres.full 2>&1
 _scratch_mount
 
diff --git a/tests/xfs/432 b/tests/xfs/432
index 66315b039..2efa6230b 100755
--- a/tests/xfs/432
+++ b/tests/xfs/432
@@ -50,6 +50,7 @@ echo "Format and mount"
 # block.  8187 hashes/dablk / 248 dirents/dirblock = ~33 dirblocks per
 # dablock.  33 dirblocks * 64k mean that we can expand a directory by
 # 2112k before we have to allocate another da btree block.
+_require_scratch_support_blocksize 1024
 _scratch_mkfs -b size=1k -n size=64k > "$seqres.full" 2>&1
 _scratch_mount >> "$seqres.full" 2>&1
 
diff --git a/tests/xfs/516 b/tests/xfs/516
index 9e1b99317..65fc635dd 100755
--- a/tests/xfs/516
+++ b/tests/xfs/516
@@ -23,6 +23,7 @@ _cleanup()
 # real QA test starts here
 _supported_fs xfs
 _require_scratch_nocheck
+_require_scratch_support_blocksize 1024
 
 # Assume that if we can run scrub on the test dev we can run it on the scratch
 # fs too.
-- 
2.31.0


  reply	other threads:[~2023-10-22 21:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-22 21:55 [PATCH 0/2] Fix test failures caused by storage devcies with 4k sectors Theodore Ts'o
2023-10-22 21:55 ` Theodore Ts'o [this message]
2023-10-23 15:45   ` [PATCH 1/2] common: check if the scratch device can support 1024 block sizes Darrick J. Wong
2023-10-23 19:48     ` Theodore Ts'o
2023-10-22 21:55 ` [PATCH 2/2] generic/563: create the loop dev with the same block size as the scratch dev Theodore Ts'o
2023-10-23 15:54   ` 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=20231022215529.2202150-2-tytso@mit.edu \
    --to=tytso@mit.edu \
    --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.