[LTP] [PATCH] fanotify22: Make tests not depend on behavior of shutdown filesystem
Jan Kara
jack@suse.cz
Mon Aug 28 12:02:47 CEST 2023
On Fri 25-08-23 17:12:17, Amir Goldstein wrote:
> On Fri, Aug 25, 2023 at 3:28 PM Jan Kara <jack@suse.cz> wrote:
> >
> > The tests in fanotify22 implicitely depended on the fact that filesystem
> > shutdown with 'abort' mount option keeps reporting further errors and
> > further mounts with 'abort' option. This is however too strict (mostly a
> > bug in ext4 implementation) and in principle reporting errors after the
> > filesystem is shutdown is just a pointless noise. Ext4 recently modified
> > the behavior of 'abort' mount option to behave the same as filesystem
> > shutdown and thus also stop reporting further filesystem errors. Modify
> > the tests to unmount and mount the filesystem after each test to get it
> > out of the shutdown state for the following tests and also replace a
> > test testing behavior after mounting with 'abort' mount option with a
> > test testing two different filesystem corruption errors.
> >
> > Signed-off-by: Jan Kara <jack@suse.cz>
> > ---
> > .../kernel/syscalls/fanotify/fanotify22.c | 19 ++++++++++++++++---
> > 1 file changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/testcases/kernel/syscalls/fanotify/fanotify22.c b/testcases/kernel/syscalls/fanotify/fanotify22.c
> > index 1105172bb269..475155b9f58a 100644
> > --- a/testcases/kernel/syscalls/fanotify/fanotify22.c
> > +++ b/testcases/kernel/syscalls/fanotify/fanotify22.c
> > @@ -42,6 +42,7 @@
> > #define MOUNT_PATH "test_mnt"
> > #define BASE_DIR "internal_dir"
> > #define BAD_DIR BASE_DIR"/bad_dir"
> > +#define BAD_LINK BASE_DIR"/bad_link"
> >
> > #ifdef HAVE_NAME_TO_HANDLE_AT
> >
> > @@ -51,6 +52,7 @@ static int fd_notify;
> > /* These expected FIDs are common to multiple tests */
> > static struct fanotify_fid_t null_fid;
> > static struct fanotify_fid_t bad_file_fid;
> > +static struct fanotify_fid_t bad_link_fid;
> >
> > static void trigger_fs_abort(void)
> > {
> > @@ -78,7 +80,13 @@ static void tcase2_trigger_lookup(void)
> >
> > static void tcase3_trigger(void)
> > {
> > - trigger_fs_abort();
> > + int ret;
> > +
> > + /* SAFE_OPEN cannot be used here because we expect it to fail. */
> > + ret = open(MOUNT_PATH"/"BAD_LINK, O_RDONLY, 0);
> > + if (ret != -1 && errno != EUCLEAN)
> > + tst_res(TFAIL, "Unexpected open result(%d) of %s (%d!=%d)",
> > + ret, BAD_LINK, errno, EUCLEAN);
> > tcase2_trigger_lookup();
> > }
>
> To make it more clear that this is a multiple error trigger, I would consider
>
> 1. use helper trigger_bad_link_lookup()
> 2. s/tcase2_trigger_lookup/trigger_bad_file_lookup
>
> AND
>
> static void tcase3_trigger(void)
> {
> trigger_bad_link_lookup();
> trigger_bad_file_lookup();
> }
>
> With that nit fix, you may add:
>
> Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Thanks for review! I did all the changes, submitting v2 shortly.
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
More information about the ltp
mailing list