2022-08-03 04:22:49

by Darrick J. Wong

[permalink] [raw]
Subject: [PATCHSET 0/3] fstests: refactor ext4-specific code

Hi all,

This series aims to make it so that fstests can install device mapper
filters for external log devices. Before we can do that, however, we
need to change fstests to pass the device path of the jbd2 device to
mount and mkfs. Before we can do /that/, refactor all the ext4-specific
code out of common/rc into a separate common/ext4 file.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything. Enjoy!
Comments and questions are, as always, welcome.

--D

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=refactor-ext4-helpers
---
common/config | 4 +
common/ext4 | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
common/rc | 177 ++-------------------------------------------------------
common/xfs | 23 +++++++
4 files changed, 208 insertions(+), 172 deletions(-)
create mode 100644 common/ext4



2022-08-03 04:23:06

by Darrick J. Wong

[permalink] [raw]
Subject: [PATCH 3/3] common/ext4: provide custom ext4 scratch fs options

From: Darrick J. Wong <[email protected]>

Create a _scratch_options backend for ext* so that we can inject
pathnames to external log devices into the scratch fs mount options.
This enables common/dm* to install block device filters, e.g. dm-error
for stress testing.

Signed-off-by: Darrick J. Wong <[email protected]>
---
common/ext4 | 20 ++++++++++++++++++++
common/rc | 3 +++
2 files changed, 23 insertions(+)


diff --git a/common/ext4 b/common/ext4
index 287705af..819f9786 100644
--- a/common/ext4
+++ b/common/ext4
@@ -154,3 +154,23 @@ _require_scratch_richacl_ext4()
|| _notrun "kernel doesn't support richacl feature on $FSTYP"
_scratch_unmount
}
+
+_scratch_ext4_options()
+{
+ local type=$1
+ local log_opt=""
+
+ case $type in
+ mkfs)
+ log_opt="-J device=$SCRATCH_LOGDEV"
+ ;;
+ mount)
+ # As of kernel 5.19, the kernel mount option path parser only accepts
+ # direct paths to block devices--the final path component cannot be a
+ # symlink.
+ log_opt="-o journal_path=$(realpath $SCRATCH_LOGDEV)"
+ ;;
+ esac
+ [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
+ SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"
+}
diff --git a/common/rc b/common/rc
index dc1d65c3..b82bb36b 100644
--- a/common/rc
+++ b/common/rc
@@ -178,6 +178,9 @@ _scratch_options()
"xfs")
_scratch_xfs_options "[email protected]"
;;
+ ext2|ext3|ext4|ext4dev)
+ _scratch_ext4_options "[email protected]"
+ ;;
esac
}



2022-08-03 18:50:56

by Zorro Lang

[permalink] [raw]
Subject: Re: [PATCH 3/3] common/ext4: provide custom ext4 scratch fs options

On Tue, Aug 02, 2022 at 09:21:57PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <[email protected]>
>
> Create a _scratch_options backend for ext* so that we can inject
> pathnames to external log devices into the scratch fs mount options.
> This enables common/dm* to install block device filters, e.g. dm-error
> for stress testing.
>
> Signed-off-by: Darrick J. Wong <[email protected]>
> ---
> common/ext4 | 20 ++++++++++++++++++++
> common/rc | 3 +++
> 2 files changed, 23 insertions(+)
>
>
> diff --git a/common/ext4 b/common/ext4
> index 287705af..819f9786 100644
> --- a/common/ext4
> +++ b/common/ext4
> @@ -154,3 +154,23 @@ _require_scratch_richacl_ext4()
> || _notrun "kernel doesn't support richacl feature on $FSTYP"
> _scratch_unmount
> }
> +
> +_scratch_ext4_options()
> +{
> + local type=$1
> + local log_opt=""
> +
> + case $type in
> + mkfs)
> + log_opt="-J device=$SCRATCH_LOGDEV"

In _scratch_mkfs_ext4, it deals with mkfs with SCRATCH_LOGDEV:

[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
$mkfs_cmd -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV && \
mkfs_cmd="$mkfs_cmd -J device=$SCRATCH_LOGDEV"

So is there a conflict or duplication?

> + ;;
> + mount)
> + # As of kernel 5.19, the kernel mount option path parser only accepts
> + # direct paths to block devices--the final path component cannot be a
> + # symlink.
> + log_opt="-o journal_path=$(realpath $SCRATCH_LOGDEV)"
> + ;;
> + esac
> + [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> + SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"
> +}
> diff --git a/common/rc b/common/rc
> index dc1d65c3..b82bb36b 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -178,6 +178,9 @@ _scratch_options()
> "xfs")
> _scratch_xfs_options "[email protected]"
> ;;
> + ext2|ext3|ext4|ext4dev)
> + _scratch_ext4_options "[email protected]"
> + ;;
> esac
> }
>
>


2022-08-03 19:01:15

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH 3/3] common/ext4: provide custom ext4 scratch fs options

On Thu, Aug 04, 2022 at 02:28:43AM +0800, Zorro Lang wrote:
> On Tue, Aug 02, 2022 at 09:21:57PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <[email protected]>
> >
> > Create a _scratch_options backend for ext* so that we can inject
> > pathnames to external log devices into the scratch fs mount options.
> > This enables common/dm* to install block device filters, e.g. dm-error
> > for stress testing.
> >
> > Signed-off-by: Darrick J. Wong <[email protected]>
> > ---
> > common/ext4 | 20 ++++++++++++++++++++
> > common/rc | 3 +++
> > 2 files changed, 23 insertions(+)
> >
> >
> > diff --git a/common/ext4 b/common/ext4
> > index 287705af..819f9786 100644
> > --- a/common/ext4
> > +++ b/common/ext4
> > @@ -154,3 +154,23 @@ _require_scratch_richacl_ext4()
> > || _notrun "kernel doesn't support richacl feature on $FSTYP"
> > _scratch_unmount
> > }
> > +
> > +_scratch_ext4_options()
> > +{
> > + local type=$1
> > + local log_opt=""
> > +
> > + case $type in
> > + mkfs)
> > + log_opt="-J device=$SCRATCH_LOGDEV"
>
> In _scratch_mkfs_ext4, it deals with mkfs with SCRATCH_LOGDEV:
>
> [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> $mkfs_cmd -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV && \
> mkfs_cmd="$mkfs_cmd -J device=$SCRATCH_LOGDEV"
>
> So is there a conflict or duplication?

Nope, I simply missed that. I'll respin the patch.

--D

> > + ;;
> > + mount)
> > + # As of kernel 5.19, the kernel mount option path parser only accepts
> > + # direct paths to block devices--the final path component cannot be a
> > + # symlink.
> > + log_opt="-o journal_path=$(realpath $SCRATCH_LOGDEV)"
> > + ;;
> > + esac
> > + [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> > + SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"
> > +}
> > diff --git a/common/rc b/common/rc
> > index dc1d65c3..b82bb36b 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -178,6 +178,9 @@ _scratch_options()
> > "xfs")
> > _scratch_xfs_options "[email protected]"
> > ;;
> > + ext2|ext3|ext4|ext4dev)
> > + _scratch_ext4_options "[email protected]"
> > + ;;
> > esac
> > }
> >
> >
>

2022-08-04 00:41:09

by Darrick J. Wong

[permalink] [raw]
Subject: [PATCH v1.2 3/3] common/ext4: provide custom ext4 scratch fs options

From: Darrick J. Wong <[email protected]>

Create a _scratch_options backend for ext* so that we can inject
pathnames to external log devices into the scratch fs mount options.
This enables common/dm* to install block device filters, e.g. dm-error
for stress testing.

Signed-off-by: Darrick J. Wong <[email protected]>
v1.2: refactor _scratch_mkfs_ext4 to use _scratch_options too
---
common/ext4 | 34 +++++++++++++++++++++++++++++++---
common/rc | 3 +++
2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/common/ext4 b/common/ext4
index 287705af..8a3385af 100644
--- a/common/ext4
+++ b/common/ext4
@@ -63,16 +63,24 @@ _setup_large_ext4_fs()
return 0
}

+_scratch_mkfs_ext4_opts()
+{
+ mkfs_opts=$*
+
+ _scratch_options mkfs
+
+ echo "$MKFS_EXT4_PROG -F $SCRATCH_OPTIONS $mkfs_opts"
+}
+
_scratch_mkfs_ext4()
{
- local mkfs_cmd="$MKFS_EXT4_PROG -F"
+ local mkfs_cmd="`_scratch_mkfs_ext4_opts`"
local mkfs_filter="grep -v -e ^Warning: -e \"^mke2fs \" | grep -v \"^$\""
local tmp=`mktemp -u`
local mkfs_status

[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
- $mkfs_cmd -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV && \
- mkfs_cmd="$mkfs_cmd -J device=$SCRATCH_LOGDEV"
+ $MKFS_EXT4_PROG -F -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV

_scratch_do_mkfs "$mkfs_cmd" "$mkfs_filter" $* 2>$tmp.mkfserr 1>$tmp.mkfsstd
mkfs_status=$?
@@ -154,3 +162,23 @@ _require_scratch_richacl_ext4()
|| _notrun "kernel doesn't support richacl feature on $FSTYP"
_scratch_unmount
}
+
+_scratch_ext4_options()
+{
+ local type=$1
+ local log_opt=""
+
+ case $type in
+ mkfs)
+ log_opt="-J device=$SCRATCH_LOGDEV"
+ ;;
+ mount)
+ # As of kernel 5.19, the kernel mount option path parser only accepts
+ # direct paths to block devices--the final path component cannot be a
+ # symlink.
+ log_opt="-o journal_path=$(realpath $SCRATCH_LOGDEV)"
+ ;;
+ esac
+ [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
+ SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"
+}
diff --git a/common/rc b/common/rc
index dc1d65c3..b82bb36b 100644
--- a/common/rc
+++ b/common/rc
@@ -178,6 +178,9 @@ _scratch_options()
"xfs")
_scratch_xfs_options "[email protected]"
;;
+ ext2|ext3|ext4|ext4dev)
+ _scratch_ext4_options "[email protected]"
+ ;;
esac
}


2022-08-04 05:16:58

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH v1.2 3/3] common/ext4: provide custom ext4 scratch fs options

On Wed, Aug 03, 2022 at 05:25:11PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <[email protected]>
>
> Create a _scratch_options backend for ext* so that we can inject
> pathnames to external log devices into the scratch fs mount options.
> This enables common/dm* to install block device filters, e.g. dm-error
> for stress testing.
>
> Signed-off-by: Darrick J. Wong <[email protected]>
> v1.2: refactor _scratch_mkfs_ext4 to use _scratch_options too

Self NAK, this still has broken bits...

> ---
> common/ext4 | 34 +++++++++++++++++++++++++++++++---
> common/rc | 3 +++
> 2 files changed, 34 insertions(+), 3 deletions(-)
>
> diff --git a/common/ext4 b/common/ext4
> index 287705af..8a3385af 100644
> --- a/common/ext4
> +++ b/common/ext4
> @@ -63,16 +63,24 @@ _setup_large_ext4_fs()
> return 0
> }
>
> +_scratch_mkfs_ext4_opts()
> +{
> + mkfs_opts=$*
> +
> + _scratch_options mkfs
> +
> + echo "$MKFS_EXT4_PROG -F $SCRATCH_OPTIONS $mkfs_opts"

...the -F should go in _scratch_ext4_options...

> +}
> +
> _scratch_mkfs_ext4()
> {
> - local mkfs_cmd="$MKFS_EXT4_PROG -F"
> + local mkfs_cmd="`_scratch_mkfs_ext4_opts`"
> local mkfs_filter="grep -v -e ^Warning: -e \"^mke2fs \" | grep -v \"^$\""
> local tmp=`mktemp -u`
> local mkfs_status
>
> [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> - $mkfs_cmd -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV && \
> - mkfs_cmd="$mkfs_cmd -J device=$SCRATCH_LOGDEV"
> + $MKFS_EXT4_PROG -F -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV
>
> _scratch_do_mkfs "$mkfs_cmd" "$mkfs_filter" $* 2>$tmp.mkfserr 1>$tmp.mkfsstd
> mkfs_status=$?
> @@ -154,3 +162,23 @@ _require_scratch_richacl_ext4()
> || _notrun "kernel doesn't support richacl feature on $FSTYP"
> _scratch_unmount
> }
> +
> +_scratch_ext4_options()
> +{
> + local type=$1
> + local log_opt=""
> +
> + case $type in
> + mkfs)
> + log_opt="-J device=$SCRATCH_LOGDEV"
> + ;;
> + mount)
> + # As of kernel 5.19, the kernel mount option path parser only accepts
> + # direct paths to block devices--the final path component cannot be a
> + # symlink.
> + log_opt="-o journal_path=$(realpath $SCRATCH_LOGDEV)"

...and this ought to be `realpath -q "$SCRATCH_LOGDEV"' to avoid
breaking the non-external-journal case.

> + ;;
> + esac
> + [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> + SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"

Tab/space insanity here.

--D

> +}
> diff --git a/common/rc b/common/rc
> index dc1d65c3..b82bb36b 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -178,6 +178,9 @@ _scratch_options()
> "xfs")
> _scratch_xfs_options "[email protected]"
> ;;
> + ext2|ext3|ext4|ext4dev)
> + _scratch_ext4_options "[email protected]"
> + ;;
> esac
> }
>

2022-08-04 16:32:16

by Darrick J. Wong

[permalink] [raw]
Subject: [PATCH v1.3 3/3] common/ext4: provide custom ext4 scratch fs options

From: Darrick J. Wong <[email protected]>

Create a _scratch_options backend for ext* so that we can inject
pathnames to external log devices into the scratch fs mount options.
This enables common/dm* to install block device filters, e.g. dm-error
for stress testing.

Signed-off-by: Darrick J. Wong <[email protected]>
v1.1: bad at counting
v1.2: refactor _scratch_mkfs_ext4 to use _scratch_options too
v1.3: quiet down realpath usage when SCRATCH_LOGDEV is unset
---
common/ext4 | 35 ++++++++++++++++++++++++++++++++---
common/rc | 3 +++
2 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/common/ext4 b/common/ext4
index 287705af..f2df888c 100644
--- a/common/ext4
+++ b/common/ext4
@@ -63,16 +63,24 @@ _setup_large_ext4_fs()
return 0
}

+_scratch_mkfs_ext4_opts()
+{
+ mkfs_opts=$*
+
+ _scratch_options mkfs
+
+ echo "$MKFS_EXT4_PROG $SCRATCH_OPTIONS $mkfs_opts"
+}
+
_scratch_mkfs_ext4()
{
- local mkfs_cmd="$MKFS_EXT4_PROG -F"
+ local mkfs_cmd="`_scratch_mkfs_ext4_opts`"
local mkfs_filter="grep -v -e ^Warning: -e \"^mke2fs \" | grep -v \"^$\""
local tmp=`mktemp -u`
local mkfs_status

[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
- $mkfs_cmd -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV && \
- mkfs_cmd="$mkfs_cmd -J device=$SCRATCH_LOGDEV"
+ $MKFS_EXT4_PROG -F -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV

_scratch_do_mkfs "$mkfs_cmd" "$mkfs_filter" $* 2>$tmp.mkfserr 1>$tmp.mkfsstd
mkfs_status=$?
@@ -154,3 +162,24 @@ _require_scratch_richacl_ext4()
|| _notrun "kernel doesn't support richacl feature on $FSTYP"
_scratch_unmount
}
+
+_scratch_ext4_options()
+{
+ local type=$1
+ local log_opt=""
+
+ case $type in
+ mkfs)
+ SCRATCH_OPTIONS="$SCRATCH_OPTIONS -F"
+ log_opt="-J device=$SCRATCH_LOGDEV"
+ ;;
+ mount)
+ # As of kernel 5.19, the kernel mount option path parser only
+ # accepts direct paths to block devices--the final path
+ # component cannot be a symlink.
+ log_opt="-o journal_path=$(realpath -q "$SCRATCH_LOGDEV")"
+ ;;
+ esac
+ [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
+ SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"
+}
diff --git a/common/rc b/common/rc
index dc1d65c3..b82bb36b 100644
--- a/common/rc
+++ b/common/rc
@@ -178,6 +178,9 @@ _scratch_options()
"xfs")
_scratch_xfs_options "[email protected]"
;;
+ ext2|ext3|ext4|ext4dev)
+ _scratch_ext4_options "[email protected]"
+ ;;
esac
}


2022-08-05 17:15:55

by Zorro Lang

[permalink] [raw]
Subject: Re: [PATCH v1.3 3/3] common/ext4: provide custom ext4 scratch fs options

On Thu, Aug 04, 2022 at 09:29:01AM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <[email protected]>
>
> Create a _scratch_options backend for ext* so that we can inject
> pathnames to external log devices into the scratch fs mount options.
> This enables common/dm* to install block device filters, e.g. dm-error
> for stress testing.
>
> Signed-off-by: Darrick J. Wong <[email protected]>
> v1.1: bad at counting
> v1.2: refactor _scratch_mkfs_ext4 to use _scratch_options too
> v1.3: quiet down realpath usage when SCRATCH_LOGDEV is unset

I think you'd like move these 3 change log lines after the "---" ?

As usual, I'm going to give this patchset enough testing before merging
it, due to it affect ext4 testing too much. And hope to get review from
ext4 list, or "no objection" means all good by default :)

Thanks,
Zorro

> ---
> common/ext4 | 35 ++++++++++++++++++++++++++++++++---
> common/rc | 3 +++
> 2 files changed, 35 insertions(+), 3 deletions(-)
>
> diff --git a/common/ext4 b/common/ext4
> index 287705af..f2df888c 100644
> --- a/common/ext4
> +++ b/common/ext4
> @@ -63,16 +63,24 @@ _setup_large_ext4_fs()
> return 0
> }
>
> +_scratch_mkfs_ext4_opts()
> +{
> + mkfs_opts=$*
> +
> + _scratch_options mkfs
> +
> + echo "$MKFS_EXT4_PROG $SCRATCH_OPTIONS $mkfs_opts"
> +}
> +
> _scratch_mkfs_ext4()
> {
> - local mkfs_cmd="$MKFS_EXT4_PROG -F"
> + local mkfs_cmd="`_scratch_mkfs_ext4_opts`"
> local mkfs_filter="grep -v -e ^Warning: -e \"^mke2fs \" | grep -v \"^$\""
> local tmp=`mktemp -u`
> local mkfs_status
>
> [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> - $mkfs_cmd -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV && \
> - mkfs_cmd="$mkfs_cmd -J device=$SCRATCH_LOGDEV"
> + $MKFS_EXT4_PROG -F -O journal_dev $MKFS_OPTIONS $SCRATCH_LOGDEV
>
> _scratch_do_mkfs "$mkfs_cmd" "$mkfs_filter" $* 2>$tmp.mkfserr 1>$tmp.mkfsstd
> mkfs_status=$?
> @@ -154,3 +162,24 @@ _require_scratch_richacl_ext4()
> || _notrun "kernel doesn't support richacl feature on $FSTYP"
> _scratch_unmount
> }
> +
> +_scratch_ext4_options()
> +{
> + local type=$1
> + local log_opt=""
> +
> + case $type in
> + mkfs)
> + SCRATCH_OPTIONS="$SCRATCH_OPTIONS -F"
> + log_opt="-J device=$SCRATCH_LOGDEV"
> + ;;
> + mount)
> + # As of kernel 5.19, the kernel mount option path parser only
> + # accepts direct paths to block devices--the final path
> + # component cannot be a symlink.
> + log_opt="-o journal_path=$(realpath -q "$SCRATCH_LOGDEV")"
> + ;;
> + esac
> + [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
> + SCRATCH_OPTIONS="$SCRATCH_OPTIONS ${log_opt}"
> +}
> diff --git a/common/rc b/common/rc
> index dc1d65c3..b82bb36b 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -178,6 +178,9 @@ _scratch_options()
> "xfs")
> _scratch_xfs_options "[email protected]"
> ;;
> + ext2|ext3|ext4|ext4dev)
> + _scratch_ext4_options "[email protected]"
> + ;;
> esac
> }
>
>

2022-08-06 14:38:04

by Zorro Lang

[permalink] [raw]
Subject: Re: [PATCHSET 0/3] fstests: refactor ext4-specific code

On Tue, Aug 02, 2022 at 09:21:40PM -0700, Darrick J. Wong wrote:
> Hi all,
>
> This series aims to make it so that fstests can install device mapper
> filters for external log devices. Before we can do that, however, we
> need to change fstests to pass the device path of the jbd2 device to
> mount and mkfs. Before we can do /that/, refactor all the ext4-specific
> code out of common/rc into a separate common/ext4 file.
>
> If you're going to start using this mess, you probably ought to just
> pull from my git trees, which are linked below.
>
> This is an extraordinary way to destroy everything. Enjoy!
> Comments and questions are, as always, welcome.
>
> --D
>
> fstests git tree:
> https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=refactor-ext4-helpers
> ---

Hi Darrick,

There're 3 failures[1] if test ext4 with external logdev, after merging this
patchset.
The g/629 is always failed with or without this patchset, it fails if test
with external logdev.
The g/250 and g/252 fail due to _scratch_mkfs_sized doesn't use common ext4
mkfs helper, so can't deal with SCRATCH_LOGDEV well.

Thanks,
Zorro

[1]
SECTION -- logdev
FSTYP -- ext4
PLATFORM -- Linux/x86_64 hp-dl380pg8-01 5.19.0-0.rc2.21.fc37.x86_64+debug #1 SMP PREEMPT_DYNAMIC Mon Jun 13 14:55:18 UTC 2022
MKFS_OPTIONS -- -F -J device=/dev/loop0 /dev/sda3
MOUNT_OPTIONS -- -o acl,user_xattr -o context=system_u:object_r:root_t:s0 -o journal_path=/dev/loop0 /dev/sda3 /mnt/scratch

generic/250 2s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/250.out.bad)
--- tests/generic/250.out 2022-04-29 23:07:23.262498285 +0800
+++ /root/git/xfstests/results//logdev/generic/250.out.bad 2022-08-06 22:26:45.179294149 +0800
@@ -1,9 +1,19 @@
QA output created by 250
Format and mount
+umount: /mnt/scratch: not mounted.
+mount: /mnt/scratch: wrong fs type, bad option, bad superblock on /dev/mapper/error-test, missing codepage or helper program, or other error.
+ dmesg(1) may have more information after failed mount system call.
Create the original files
+umount: /mnt/scratch: not mounted.
...
(Run 'diff -u /root/git/xfstests/tests/generic/250.out /root/git/xfstests/results//logdev/generic/250.out.bad' to see the entire diff)
generic/252 2s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/252.out.bad)
--- tests/generic/252.out 2022-04-29 23:07:23.264498308 +0800
+++ /root/git/xfstests/results//logdev/generic/252.out.bad 2022-08-06 22:26:48.495330525 +0800
@@ -1,10 +1,19 @@
QA output created by 252
Format and mount
+umount: /mnt/scratch: not mounted.
+mount: /mnt/scratch: wrong fs type, bad option, bad superblock on /dev/mapper/error-test, missing codepage or helper program, or other error.
+ dmesg(1) may have more information after failed mount system call.
Create the original files
+umount: /mnt/scratch: not mounted.
...
(Run 'diff -u /root/git/xfstests/tests/generic/252.out /root/git/xfstests/results//logdev/generic/252.out.bad' to see the entire diff)
generic/629 3s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/629.out.bad)
--- tests/generic/629.out 2022-04-29 23:07:23.545501491 +0800
+++ /root/git/xfstests/results//logdev/generic/629.out.bad 2022-08-06 22:26:50.810355920 +0800
@@ -1,4 +1,5 @@
QA output created by 629
+mke2fs 1.46.5 (30-Dec-2021)
test o_sync write
310f146ce52077fcd3308dcbe7632bb2 SCRATCH_MNT/0
test unaligned copy range o_sync
...
(Run 'diff -u /root/git/xfstests/tests/generic/629.out /root/git/xfstests/results//logdev/generic/629.out.bad' to see the entire diff)
Ran: generic/250 generic/252 generic/629
Failures: generic/250 generic/252 generic/629
Failed 3 of 3 tests


> common/config | 4 +
> common/ext4 | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> common/rc | 177 ++-------------------------------------------------------
> common/xfs | 23 +++++++
> 4 files changed, 208 insertions(+), 172 deletions(-)
> create mode 100644 common/ext4
>

2022-08-07 16:46:28

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCHSET 0/3] fstests: refactor ext4-specific code

On Sat, Aug 06, 2022 at 10:36:06PM +0800, Zorro Lang wrote:
> On Tue, Aug 02, 2022 at 09:21:40PM -0700, Darrick J. Wong wrote:
> > Hi all,
> >
> > This series aims to make it so that fstests can install device mapper
> > filters for external log devices. Before we can do that, however, we
> > need to change fstests to pass the device path of the jbd2 device to
> > mount and mkfs. Before we can do /that/, refactor all the ext4-specific
> > code out of common/rc into a separate common/ext4 file.
> >
> > If you're going to start using this mess, you probably ought to just
> > pull from my git trees, which are linked below.
> >
> > This is an extraordinary way to destroy everything. Enjoy!
> > Comments and questions are, as always, welcome.
> >
> > --D
> >
> > fstests git tree:
> > https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=refactor-ext4-helpers
> > ---
>
> Hi Darrick,
>
> There're 3 failures[1] if test ext4 with external logdev, after merging this
> patchset.
> The g/629 is always failed with or without this patchset, it fails if test
> with external logdev.
> The g/250 and g/252 fail due to _scratch_mkfs_sized doesn't use common ext4
> mkfs helper, so can't deal with SCRATCH_LOGDEV well.

Totally different helper, but yes, I'll add that to my list if nothing
else than to get this patchset moving.

--D

> Thanks,
> Zorro
>
> [1]
> SECTION -- logdev
> FSTYP -- ext4
> PLATFORM -- Linux/x86_64 hp-dl380pg8-01 5.19.0-0.rc2.21.fc37.x86_64+debug #1 SMP PREEMPT_DYNAMIC Mon Jun 13 14:55:18 UTC 2022
> MKFS_OPTIONS -- -F -J device=/dev/loop0 /dev/sda3
> MOUNT_OPTIONS -- -o acl,user_xattr -o context=system_u:object_r:root_t:s0 -o journal_path=/dev/loop0 /dev/sda3 /mnt/scratch
>
> generic/250 2s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/250.out.bad)
> --- tests/generic/250.out 2022-04-29 23:07:23.262498285 +0800
> +++ /root/git/xfstests/results//logdev/generic/250.out.bad 2022-08-06 22:26:45.179294149 +0800
> @@ -1,9 +1,19 @@
> QA output created by 250
> Format and mount
> +umount: /mnt/scratch: not mounted.
> +mount: /mnt/scratch: wrong fs type, bad option, bad superblock on /dev/mapper/error-test, missing codepage or helper program, or other error.
> + dmesg(1) may have more information after failed mount system call.
> Create the original files
> +umount: /mnt/scratch: not mounted.
> ...
> (Run 'diff -u /root/git/xfstests/tests/generic/250.out /root/git/xfstests/results//logdev/generic/250.out.bad' to see the entire diff)
> generic/252 2s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/252.out.bad)
> --- tests/generic/252.out 2022-04-29 23:07:23.264498308 +0800
> +++ /root/git/xfstests/results//logdev/generic/252.out.bad 2022-08-06 22:26:48.495330525 +0800
> @@ -1,10 +1,19 @@
> QA output created by 252
> Format and mount
> +umount: /mnt/scratch: not mounted.
> +mount: /mnt/scratch: wrong fs type, bad option, bad superblock on /dev/mapper/error-test, missing codepage or helper program, or other error.
> + dmesg(1) may have more information after failed mount system call.
> Create the original files
> +umount: /mnt/scratch: not mounted.
> ...
> (Run 'diff -u /root/git/xfstests/tests/generic/252.out /root/git/xfstests/results//logdev/generic/252.out.bad' to see the entire diff)
> generic/629 3s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/629.out.bad)
> --- tests/generic/629.out 2022-04-29 23:07:23.545501491 +0800
> +++ /root/git/xfstests/results//logdev/generic/629.out.bad 2022-08-06 22:26:50.810355920 +0800
> @@ -1,4 +1,5 @@
> QA output created by 629
> +mke2fs 1.46.5 (30-Dec-2021)
> test o_sync write
> 310f146ce52077fcd3308dcbe7632bb2 SCRATCH_MNT/0
> test unaligned copy range o_sync
> ...
> (Run 'diff -u /root/git/xfstests/tests/generic/629.out /root/git/xfstests/results//logdev/generic/629.out.bad' to see the entire diff)
> Ran: generic/250 generic/252 generic/629
> Failures: generic/250 generic/252 generic/629
> Failed 3 of 3 tests
>
>
> > common/config | 4 +
> > common/ext4 | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > common/rc | 177 ++-------------------------------------------------------
> > common/xfs | 23 +++++++
> > 4 files changed, 208 insertions(+), 172 deletions(-)
> > create mode 100644 common/ext4
> >
>

2022-08-08 15:20:09

by Zorro Lang

[permalink] [raw]
Subject: Re: [PATCHSET 0/3] fstests: refactor ext4-specific code

On Sun, Aug 07, 2022 at 09:30:28AM -0700, Darrick J. Wong wrote:
> On Sat, Aug 06, 2022 at 10:36:06PM +0800, Zorro Lang wrote:
> > On Tue, Aug 02, 2022 at 09:21:40PM -0700, Darrick J. Wong wrote:
> > > Hi all,
> > >
> > > This series aims to make it so that fstests can install device mapper
> > > filters for external log devices. Before we can do that, however, we
> > > need to change fstests to pass the device path of the jbd2 device to
> > > mount and mkfs. Before we can do /that/, refactor all the ext4-specific
> > > code out of common/rc into a separate common/ext4 file.
> > >
> > > If you're going to start using this mess, you probably ought to just
> > > pull from my git trees, which are linked below.
> > >
> > > This is an extraordinary way to destroy everything. Enjoy!
> > > Comments and questions are, as always, welcome.
> > >
> > > --D
> > >
> > > fstests git tree:
> > > https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=refactor-ext4-helpers
> > > ---
> >
> > Hi Darrick,
> >
> > There're 3 failures[1] if test ext4 with external logdev, after merging this
> > patchset.
> > The g/629 is always failed with or without this patchset, it fails if test
> > with external logdev.
> > The g/250 and g/252 fail due to _scratch_mkfs_sized doesn't use common ext4
> > mkfs helper, so can't deal with SCRATCH_LOGDEV well.
>
> Totally different helper, but yes, I'll add that to my list if nothing
> else than to get this patchset moving.

Yes, just due to you try to help common/dmerror to support external logdev,
and these two eio test cases use _scratch_mkfs_sized, it's not compatible
with your new change on dmerror, but it's not regression :)

I think we can fix visible errors at first, then improve ext4 external logdev
supporting bit by bit.

Thanks,
Zorro

>
> --D
>
> > Thanks,
> > Zorro
> >
> > [1]
> > SECTION -- logdev
> > FSTYP -- ext4
> > PLATFORM -- Linux/x86_64 hp-dl380pg8-01 5.19.0-0.rc2.21.fc37.x86_64+debug #1 SMP PREEMPT_DYNAMIC Mon Jun 13 14:55:18 UTC 2022
> > MKFS_OPTIONS -- -F -J device=/dev/loop0 /dev/sda3
> > MOUNT_OPTIONS -- -o acl,user_xattr -o context=system_u:object_r:root_t:s0 -o journal_path=/dev/loop0 /dev/sda3 /mnt/scratch
> >
> > generic/250 2s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/250.out.bad)
> > --- tests/generic/250.out 2022-04-29 23:07:23.262498285 +0800
> > +++ /root/git/xfstests/results//logdev/generic/250.out.bad 2022-08-06 22:26:45.179294149 +0800
> > @@ -1,9 +1,19 @@
> > QA output created by 250
> > Format and mount
> > +umount: /mnt/scratch: not mounted.
> > +mount: /mnt/scratch: wrong fs type, bad option, bad superblock on /dev/mapper/error-test, missing codepage or helper program, or other error.
> > + dmesg(1) may have more information after failed mount system call.
> > Create the original files
> > +umount: /mnt/scratch: not mounted.
> > ...
> > (Run 'diff -u /root/git/xfstests/tests/generic/250.out /root/git/xfstests/results//logdev/generic/250.out.bad' to see the entire diff)
> > generic/252 2s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/252.out.bad)
> > --- tests/generic/252.out 2022-04-29 23:07:23.264498308 +0800
> > +++ /root/git/xfstests/results//logdev/generic/252.out.bad 2022-08-06 22:26:48.495330525 +0800
> > @@ -1,10 +1,19 @@
> > QA output created by 252
> > Format and mount
> > +umount: /mnt/scratch: not mounted.
> > +mount: /mnt/scratch: wrong fs type, bad option, bad superblock on /dev/mapper/error-test, missing codepage or helper program, or other error.
> > + dmesg(1) may have more information after failed mount system call.
> > Create the original files
> > +umount: /mnt/scratch: not mounted.
> > ...
> > (Run 'diff -u /root/git/xfstests/tests/generic/252.out /root/git/xfstests/results//logdev/generic/252.out.bad' to see the entire diff)
> > generic/629 3s ... - output mismatch (see /root/git/xfstests/results//logdev/generic/629.out.bad)
> > --- tests/generic/629.out 2022-04-29 23:07:23.545501491 +0800
> > +++ /root/git/xfstests/results//logdev/generic/629.out.bad 2022-08-06 22:26:50.810355920 +0800
> > @@ -1,4 +1,5 @@
> > QA output created by 629
> > +mke2fs 1.46.5 (30-Dec-2021)
> > test o_sync write
> > 310f146ce52077fcd3308dcbe7632bb2 SCRATCH_MNT/0
> > test unaligned copy range o_sync
> > ...
> > (Run 'diff -u /root/git/xfstests/tests/generic/629.out /root/git/xfstests/results//logdev/generic/629.out.bad' to see the entire diff)
> > Ran: generic/250 generic/252 generic/629
> > Failures: generic/250 generic/252 generic/629
> > Failed 3 of 3 tests
> >
> >
> > > common/config | 4 +
> > > common/ext4 | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > common/rc | 177 ++-------------------------------------------------------
> > > common/xfs | 23 +++++++
> > > 4 files changed, 208 insertions(+), 172 deletions(-)
> > > create mode 100644 common/ext4
> > >
> >
>