All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH -v4 0/7] Miscellaneous ext4 test fix ups
@ 2022-06-30 14:46 Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 1/7] ext4/050: support indirect as well as extent mapped journals Theodore Ts'o
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o

Previous versions of this patch series can be found at:

 - v1: https://lore.kernel.org/r/20220625030718.1215980-1-tytso@mit.edu
 - v2: https://lore.kernel.org/r/20220628182545.1834145-1-tytso@mit.edu
 - v3: https://lore.kernel.org/r/20220629124540.175775-1-tytso@mit.edu

This branch is also available at:

	https://github.com/tytso/xfstests for-upstream

Theodore Ts'o (7):
  ext4/050: support indirect as well as extent mapped journals
  ext4/044: skip test if the file system does not have a journal
  ext4/045: _require_dumpe2fs doesn't take any arguments so remove them
  ext4/054: skip test if the dax mount option is enabled
  ext4/055: skip test if dax mount option is used
  ext4/035: skip this test if the scratch device does not support 1k
    block sizes
  ext4: create file systems with the encrypt feature as necessary

 common/rc         |  3 +++
 tests/ext4/003    |  6 ++++-
 tests/ext4/035    |  9 +++++++-
 tests/ext4/044    |  1 +
 tests/ext4/045    |  2 +-
 tests/ext4/050    | 58 ++++-------------------------------------------
 tests/ext4/054    |  5 ++--
 tests/ext4/055    |  1 +
 tests/ext4/306    |  5 +++-
 tests/generic/260 |  3 +++
 10 files changed, 33 insertions(+), 60 deletions(-)

-- 
2.31.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH -v4 1/7] ext4/050: support indirect as well as extent mapped journals
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 2/7] ext4/044: skip test if the file system does not have a journal Theodore Ts'o
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

Simplify the test and fix ext4/050 failures when running ext4 without
extents enabled (e.g., in ext3 emulation mode).

Instead of relying on parsing debugfs output's (which varies depending
on whether the journal inode is extent mapped or indirect block
mapped), use debugfs's "cat" command to get the contents of the
journal.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 tests/ext4/050 | 58 +++++---------------------------------------------
 1 file changed, 5 insertions(+), 53 deletions(-)

diff --git a/tests/ext4/050 b/tests/ext4/050
index 79961957..6f93b86d 100755
--- a/tests/ext4/050
+++ b/tests/ext4/050
@@ -22,55 +22,6 @@ _require_command "$DEBUGFS_PROG" debugfs
 checkpoint_journal=$here/src/checkpoint_journal
 _require_test_program "checkpoint_journal"
 
-# convert output from stat<journal_inode> to list of block numbers
-get_journal_extents() {
-	inode_info=$($DEBUGFS_PROG $SCRATCH_DEV -R "stat <8>" 2>> $seqres.full)
-	echo -e "\nJournal info:" >> $seqres.full
-	echo "$inode_info" >> $seqres.full
-
-	extents_line=$(echo "$inode_info" | awk '/EXTENTS:/{ print NR; exit }')
-	get_extents=$(echo "$inode_info" | sed -n "$(($extents_line + 1))"p)
-
-	# get just the physical block numbers
-	get_extents=$(echo "$get_extents" |  perl -pe 's|\(.*?\):||g' | sed -e 's/, /\n/g' | perl -pe 's|(\d+)-(\d+)|\1 \2|g')
-
-	echo "$get_extents"
-}
-
-# checks all extents are zero'd out except for the superblock
-# arg 1: extents (output of get_journal_extents())
-check_extents() {
-	echo -e "\nChecking extents:" >> $seqres.full
-	echo "$1" >> $seqres.full
-
-	super_block="true"
-	echo "$1" | while IFS= read line; do
-		start_block=$(echo $line | cut -f1 -d' ')
-		end_block=$(echo $line | cut -f2 -d' ' -s)
-
-		# if first block of journal, shouldn't be wiped
-		if [ "$super_block" == "true" ]; then
-			super_block="false"
-
-			#if super block only block in this extent, skip extent
-			if [ -z "$end_block" ]; then
-				continue;
-			fi
-			start_block=$(($start_block + 1))
-		fi
-
-		if [ ! -z "$end_block" ]; then
-			blocks=$(($end_block - $start_block + 1))
-		else
-			blocks=1
-		fi
-
-		check=$(od $SCRATCH_DEV --skip-bytes=$(($start_block * $blocksize)) --read-bytes=$(($blocks * $blocksize)) -An -v | sed -e 's/[0 \t\n\r]//g')
-
-		[ ! -z "$check" ] && echo "error" && break
-	done
-}
-
 testdir="${SCRATCH_MNT}/testdir"
 
 _scratch_mkfs_sized $((64 * 1024 * 1024)) >> $seqres.full 2>&1
@@ -93,11 +44,12 @@ sync --file-system $testdir/1
 # call ioctl to checkpoint and zero-fill journal blocks
 $checkpoint_journal $SCRATCH_MNT --erase=zeroout || _fail "ioctl returned error"
 
-extents=$(get_journal_extents)
-
 # check journal blocks zeroed out
-ret=$(check_extents "$extents")
-[ "$ret" = "error" ] && _fail "Journal was not zero-filled"
+$DEBUGFS_PROG $SCRATCH_DEV -R "cat <8>" 2> /dev/null | od >> $seqres.full
+check=$($DEBUGFS_PROG $SCRATCH_DEV -R "cat <8>" 2> /dev/null | \
+	    od --skip-bytes="$blocksize" -An -v | sed -e '/^[0 \t]*$/d')
+
+[ ! -z "$check" ] && _fail "Journal was not zeroed"
 
 _scratch_unmount >> $seqres.full 2>&1
 
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH -v4 2/7] ext4/044: skip test if the file system does not have a journal
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 1/7] ext4/050: support indirect as well as extent mapped journals Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 3/7] ext4/045: _require_dumpe2fs doesn't take any arguments so remove them Theodore Ts'o
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

This test mounts the file system using "mount -t ext3"; if the file
system config creates the file system without the jbd2 journal, the
"mount -t ext3" will fail.  So skip this test in that case.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 tests/ext4/044 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/ext4/044 b/tests/ext4/044
index 46e44053..158e2ac5 100755
--- a/tests/ext4/044
+++ b/tests/ext4/044
@@ -16,6 +16,7 @@ _begin_fstest auto quick
 _supported_fs ext4
 _require_scratch
 _require_test_program "t_get_file_time"
+_require_metadata_journaling
 
 echo "Silence is golden"
 
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH -v4 3/7] ext4/045: _require_dumpe2fs doesn't take any arguments so remove them
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 1/7] ext4/050: support indirect as well as extent mapped journals Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 2/7] ext4/044: skip test if the file system does not have a journal Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 4/7] ext4/054: skip test if the dax mount option is enabled Theodore Ts'o
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 tests/ext4/045 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/ext4/045 b/tests/ext4/045
index ee7c0de3..4f0ad4aa 100755
--- a/tests/ext4/045
+++ b/tests/ext4/045
@@ -22,7 +22,7 @@ _supported_fs ext4
 _require_scratch
 _require_test_program "t_create_short_dirs"
 _require_test_program "t_create_long_dirs"
-_require_dumpe2fs "$DUMPE2FS_PROG" dumpe2fs
+_require_dumpe2fs
 
 echo "Silence is golden"
 
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH -v4 4/7] ext4/054: skip test if the dax mount option is enabled
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
                   ` (2 preceding siblings ...)
  2022-06-30 14:46 ` [PATCH -v4 3/7] ext4/045: _require_dumpe2fs doesn't take any arguments so remove them Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 5/7] ext4/055: skip test if dax mount option is used Theodore Ts'o
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

The ext4/054 test explicitly creates a file system with a 1k
blocksize.  This can't possibly work on if the dax mount option is
enabled, so change ext4/054 to use _scratch_mkfs_blocksized, and and a
check to _scratch_mkfs_blocksized to _notrun the test if the block
size is less than the page size.

Also remove an unnecessary _require_test declaration since this test
does not use the test device.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 common/rc      | 3 +++
 tests/ext4/054 | 5 ++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/common/rc b/common/rc
index 3c072c16..b608d2f6 100644
--- a/common/rc
+++ b/common/rc
@@ -1199,6 +1199,9 @@ _scratch_mkfs_blocksized()
 	if ! [[ $blocksize =~ $re ]] ; then
 		_notrun "error: _scratch_mkfs_sized: block size \"$blocksize\" not an integer."
 	fi
+	if [ $blocksize -lt $(get_page_size) ]; then
+		_exclude_scratch_mount_option dax
+	fi
 
 	case $FSTYP in
 	btrfs)
diff --git a/tests/ext4/054 b/tests/ext4/054
index 9a11719f..e23acbb1 100755
--- a/tests/ext4/054
+++ b/tests/ext4/054
@@ -19,7 +19,6 @@ _begin_fstest auto quick dangerous_fuzzers
 
 # real QA test starts here
 _supported_fs ext4
-_require_test
 _require_scratch_nocheck
 _require_xfs_io_command "falloc"
 _require_xfs_io_command "pwrite"
@@ -28,8 +27,8 @@ _require_xfs_io_command "fpunch"
 _require_command "$DEBUGFS_PROG" debugfs
 
 # In order to accurately construct the damaged extent in the following
-# test steps, the blocksize is set to 1024 here
-_scratch_mkfs "-b 1024" > $seqres.full 2>&1
+# test steps, the block size is set to 1024 here
+_scratch_mkfs_blocksized 1024 >> $seqres.full 2>&1
 _scratch_mount
 
 TEST_FILE="${SCRATCH_MNT}/testfile"
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH -v4 5/7] ext4/055: skip test if dax mount option is used
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
                   ` (3 preceding siblings ...)
  2022-06-30 14:46 ` [PATCH -v4 4/7] ext4/054: skip test if the dax mount option is enabled Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 6/7] ext4/035: skip this test if the scratch device does not support 1k block sizes Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 7/7] ext4: create file systems with the encrypt feature as necessary Theodore Ts'o
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

This test creates a 1k block file system with the quota feature
enabled.   As such, it is incompatible with DAX.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 tests/ext4/055 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/ext4/055 b/tests/ext4/055
index 8f466f1b..aa15cfe9 100755
--- a/tests/ext4/055
+++ b/tests/ext4/055
@@ -26,6 +26,7 @@ _require_command "$DEBUGFS_PROG" debugfs
 echo "Silence is golden"
 
 # The 1K blocksize is designed for debugfs.
+_exclude_scratch_mount_option dax
 _scratch_mkfs "-F -O quota -b 1024" > $seqres.full 2>&1
 
 # Start from 0, fill block 1 with 6,replace the original 2.
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH -v4 6/7] ext4/035: skip this test if the scratch device does not support 1k block sizes
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
                   ` (4 preceding siblings ...)
  2022-06-30 14:46 ` [PATCH -v4 5/7] ext4/055: skip test if dax mount option is used Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  2022-06-30 14:46 ` [PATCH -v4 7/7] ext4: create file systems with the encrypt feature as necessary Theodore Ts'o
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 tests/ext4/035 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/ext4/035 b/tests/ext4/035
index cad3595b..1f26e766 100755
--- a/tests/ext4/035
+++ b/tests/ext4/035
@@ -26,6 +26,9 @@ _exclude_scratch_mount_option dax
 _require_command "$RESIZE2FS_PROG" resize2fs
 
 $MKFS_EXT4_PROG -F -b 1024 -E "resize=262144" $SCRATCH_DEV 32768 >> $seqres.full 2>&1
+if [ $? -ne 0 ]; then
+    _notrun "Can't make file system with a block size of 1024"
+fi
 _scratch_mount
 
 echo "Resizing to 262145 blocks"
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH -v4 7/7] ext4: create file systems with the encrypt feature as necessary
  2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
                   ` (5 preceding siblings ...)
  2022-06-30 14:46 ` [PATCH -v4 6/7] ext4/035: skip this test if the scratch device does not support 1k block sizes Theodore Ts'o
@ 2022-06-30 14:46 ` Theodore Ts'o
  6 siblings, 0 replies; 8+ messages in thread
From: Theodore Ts'o @ 2022-06-30 14:46 UTC (permalink / raw)
  To: fstests; +Cc: Theodore Ts'o, Zorro Lang

The linux kernel commit 5f41fdaea63d ("ext4: only allow
test_dummy_encryption when supported") the kernel will reject mounts
with the test_dummy_encryption option if the ext4 file system does not
have the encrypt feature enabled.

There are a handful of tests (ext4/003, ext4/035, ext4/306, and
generic/260) which will format the scratch file system using a
hard-coded set of mkfs.ext4 parameters ignoring the MKFS_OPTION that
is set by the file system test config.

For file system configs which includes test_dummy_encryption in
MOUNT_OPTIONS and "-O encrypt" in MKFS_OPTIONS, we need to test for
test_dummy_encryption and force the hard-coded mkfs options to enable
the encrypt feature.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Zorro Lang <zlang@redhat.com>
---
 tests/ext4/003    | 6 +++++-
 tests/ext4/035    | 6 +++++-
 tests/ext4/306    | 5 ++++-
 tests/generic/260 | 3 +++
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/tests/ext4/003 b/tests/ext4/003
index 773bcb03..8ac467b8 100755
--- a/tests/ext4/003
+++ b/tests/ext4/003
@@ -27,7 +27,11 @@ _require_scratch
 _require_scratch_ext4_feature "bigalloc"
 
 BLOCK_SIZE=$(get_page_size)
-$MKFS_EXT4_PROG -F -b $BLOCK_SIZE -O bigalloc -C $(($BLOCK_SIZE * 16)) -g 256 $SCRATCH_DEV 512m \
+features=bigalloc
+if echo "${MOUNT_OPTIONS}" | grep -q 'test_dummy_encryption' ; then
+    features+=",encrypt"
+fi
+$MKFS_EXT4_PROG -F -b $BLOCK_SIZE -O $features -C $(($BLOCK_SIZE * 16)) -g 256 $SCRATCH_DEV 512m \
 	>> $seqres.full 2>&1
 _scratch_mount
 
diff --git a/tests/ext4/035 b/tests/ext4/035
index 1f26e766..a8278b0e 100755
--- a/tests/ext4/035
+++ b/tests/ext4/035
@@ -25,7 +25,11 @@ _require_scratch
 _exclude_scratch_mount_option dax
 _require_command "$RESIZE2FS_PROG" resize2fs
 
-$MKFS_EXT4_PROG -F -b 1024 -E "resize=262144" $SCRATCH_DEV 32768 >> $seqres.full 2>&1
+encrypt=
+if echo "${MOUNT_OPTIONS}" | grep -q 'test_dummy_encryption' ; then
+    encrypt="-O encrypt"
+fi
+$MKFS_EXT4_PROG -F -b 1024 -E "resize=262144" $encrypt $SCRATCH_DEV 32768 >> $seqres.full 2>&1
 if [ $? -ne 0 ]; then
     _notrun "Can't make file system with a block size of 1024"
 fi
diff --git a/tests/ext4/306 b/tests/ext4/306
index 2ff88537..db256284 100755
--- a/tests/ext4/306
+++ b/tests/ext4/306
@@ -31,7 +31,10 @@ _require_command "$RESIZE2FS_PROG" resize2fs
 # Make a small ext4 fs with extents disabled & mount it
 features="^extents"
 if grep -q 64bit /etc/mke2fs.conf ; then
-    features="^extents,^64bit"
+    features+=",^64bit"
+fi
+if echo "${MOUNT_OPTIONS}" | grep -q 'test_dummy_encryption' ; then
+    features+=",encrypt"
 fi
 
 blksz=$(get_page_size)
diff --git a/tests/generic/260 b/tests/generic/260
index b4d72e0f..2f653b4a 100755
--- a/tests/generic/260
+++ b/tests/generic/260
@@ -121,6 +121,9 @@ case $FSTYP in
 		start=$(_math "$base*$agsize*$bsize")
 		len=$start
 		export MKFS_OPTIONS="-F -b $bsize -g $agsize"
+		if echo "${MOUNT_OPTIONS}" | grep -q 'test_dummy_encryption' ; then
+		    MKFS_OPTIONS+=" -O encrypt"
+		fi
 		;;
 	xfs)
 		agsize=65538
-- 
2.31.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-06-30 14:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-30 14:46 [PATCH -v4 0/7] Miscellaneous ext4 test fix ups Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 1/7] ext4/050: support indirect as well as extent mapped journals Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 2/7] ext4/044: skip test if the file system does not have a journal Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 3/7] ext4/045: _require_dumpe2fs doesn't take any arguments so remove them Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 4/7] ext4/054: skip test if the dax mount option is enabled Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 5/7] ext4/055: skip test if dax mount option is used Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 6/7] ext4/035: skip this test if the scratch device does not support 1k block sizes Theodore Ts'o
2022-06-30 14:46 ` [PATCH -v4 7/7] ext4: create file systems with the encrypt feature as necessary Theodore Ts'o

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.