On Mon, Jun 09, 2025 at 05:19:14PM +0200, Amir Goldstein wrote: > Requirements for tests that shutdown fs using "xfs_io -c shutdown". > The requirements are stricter than the requirement for tests that > shutdown fs using _scratch_shutdown helper. > > Generally, with overlay fs, tests can do _scratch_shutdown, but not > xfs_io -c shutdown. > > Encode this stricter requirement in helper _require_xfs_io_shutdown > and use it in test generic/623, to express that it cannot run on > overalyfs. > > Reported-by: André Almeida <andrealmeid@xxxxxxxxxx> > Link: https://lore.kernel.org/linux-fsdevel/20250521-ovl_ro-v1-1-2350b1493d94@xxxxxxxxxx/ > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> Makes sense to me, assuming you don't want to try to integrate the 'open shutdown handle' dance into this test. ioargs=(-x -c "mmap 0 4k" -c "mwrite 0 4k") case "$FSTYP" in overlayfs) ioargs+=(-c "open $(_scratch_shutdown_handle)" -c 'shutdown -f ' -c close) ;; *) ioargs+=(-c shutdown) ;; esac ioargs+=(-c fsync -c "mwrite 0 4k" $file) $XFS_IO_PROG "${ioargs[@]}" | _filter_xfs_io (Though I don't know if you actually tried that and it didn't work, or maybe overlayfs mmap is weird, etc...) --D > --- > common/rc | 21 +++++++++++++++++++++ > tests/generic/623 | 2 +- > 2 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/common/rc b/common/rc > index d9a8b52e..21899a4a 100644 > --- a/common/rc > +++ b/common/rc > @@ -616,6 +616,27 @@ _scratch_shutdown_and_syncfs() > fi > } > > +# Requirements for tests that shutdown fs using "xfs_io -c shutdown". > +# The requirements are stricter than the requirement for tests that > +# shutdown fs using _scratch_shutdown helper. > +# Generally, with overlay fs, test can do _scratch_shutdown, but not > +# xfs_io -c shutdown. > +# It is possible, but not trivial, to execute "xfs_io -c shutdown" as part > +# of a command sequence when shutdown ioctl is to be performed on the base fs > +# (i.e. on an alternative _scratch_shutdown_handle path) as the example code > +# in _scratch_shutdown_and_syncfs() does. > +# A test that open codes this pattern can relax the _require_xfs_io_shutdown > +# requirement down to _require_scratch_shutdown. > +_require_xfs_io_shutdown() > +{ > + if [ _scratch_shutdown_handle != $SCRATCH_MNT ]; then > + # Most likely overlayfs > + _notrun "xfs_io -c shutdown not supported on $FSTYP" > + fi > + _require_xfs_io_command "shutdown" > + _require_scratch_shutdown > +} > + > _move_mount() > { > local mnt=$1 > diff --git a/tests/generic/623 b/tests/generic/623 > index b97e2adb..f546d529 100755 > --- a/tests/generic/623 > +++ b/tests/generic/623 > @@ -15,7 +15,7 @@ _begin_fstest auto quick shutdown mmap > "xfs: restore shutdown check in mapped write fault path" > > _require_scratch_nocheck > -_require_scratch_shutdown > +_require_xfs_io_shutdown > > _scratch_mkfs &>> $seqres.full > _scratch_mount > -- > 2.34.1 > >