On Tue, Aug 02, 2022 at 09:21:57PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > 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 <djwong@xxxxxxxxxx> > --- > 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 "$@" > ;; > + ext2|ext3|ext4|ext4dev) > + _scratch_ext4_options "$@" > + ;; > esac > } > >