[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