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> > --- > 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 Thanks, I think this's good to me now, Reviewed-by: Zorro Lang <zlang@xxxxxxxxxx> > +} > + > _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 >