mbox series

[v3,0/9] Test the new fanotify FAN_FS_ERROR event

Message ID 20211029211732.386127-1-krisman@collabora.com
Headers show
Series Test the new fanotify FAN_FS_ERROR event | expand

Message

Gabriel Krisman Bertazi Oct. 29, 2021, 9:17 p.m. UTC
Hi,

Now that FAN_FS_ERROR is close to being merged, I'm sending a new
version of the LTP tests.  This is the v3 of this patchset, and it
applies the feedback of the previous version, in particular, it solves
the issue Amir pointed out, that ltp won't gracefully handle a test with
tcnt==0.  To solve that, I merged the patch that set up the environment
with a simple test, that only triggers a fs abort and watches the
event.

I'm also renaming the testcase from fanotify20 to fanotify21, to leave
room for the pidfs test that is also in the baking by Matthew Bobrowski.

One important detail is that, for the tests to succeed, there is a
dependency on an ext4 fix I sent a few days ago:

https://lore.kernel.org/linux-ext4/20211026173302.84000-1-krisman@collabora.com/T/#u

---

Original cover letter:

FAN_FS_ERROR is a new (still unmerged) fanotify event to monitor
fileystem errors.  This patchset introduces a new LTP test for this
feature.

Testing file system errors is slightly tricky, in particular because
they are mostly file system dependent.  Since there are only patches for
ext4, I choose to make the test around it, since there wouldn't be much
to do with other file systems.  The second challenge is how we cause the
file system errors, since there is no error injection for ext4 in Linux.
In this series, this is done by corrupting specific data in the
test device with the help of debugfs.

The FAN_FS_ERROR feature is flying around linux-ext4 and fsdevel, and
the latest version is available on the branch below:

    https://gitlab.collabora.com/krisman/linux -b fanotify-notifications-v9

A proper manpage description is also available on the respective mailing
list, or in the branch below:

    https://gitlab.collabora.com/krisman/man-pages.git -b fan-fs-error

Please, let me know your thoughts.

Gabriel Krisman Bertazi (9):
  syscalls: fanotify: Add macro to require specific mark types
  syscalls: fanotify: Add macro to require specific events
  syscalls/fanotify21: Introduce FAN_FS_ERROR test
  syscalls/fanotify21: Validate the generic error info
  syscalls/fanotify21: Validate incoming FID in FAN_FS_ERROR
  syscalls/fanotify21: Support submission of debugfs commands
  syscalls/fanotify21: Create a corrupted file
  syscalls/fanotify21: Test file event with broken inode
  syscalls/fanotify21: Test capture of multiple errors

 configure.ac                                  |   3 +-
 testcases/kernel/syscalls/fanotify/.gitignore |   1 +
 testcases/kernel/syscalls/fanotify/fanotify.h |  66 +++-
 .../kernel/syscalls/fanotify/fanotify03.c     |   4 +-
 .../kernel/syscalls/fanotify/fanotify10.c     |   3 +-
 .../kernel/syscalls/fanotify/fanotify12.c     |   3 +-
 .../kernel/syscalls/fanotify/fanotify21.c     | 312 ++++++++++++++++++
 7 files changed, 384 insertions(+), 8 deletions(-)
 create mode 100644 testcases/kernel/syscalls/fanotify/fanotify21.c

Comments

Amir Goldstein Oct. 30, 2021, 6:21 a.m. UTC | #1
On Sat, Oct 30, 2021 at 12:17 AM Gabriel Krisman Bertazi
<krisman@collabora.com> wrote:
>
> Hi,
>
> Now that FAN_FS_ERROR is close to being merged, I'm sending a new
> version of the LTP tests.  This is the v3 of this patchset, and it
> applies the feedback of the previous version, in particular, it solves
> the issue Amir pointed out, that ltp won't gracefully handle a test with
> tcnt==0.  To solve that, I merged the patch that set up the environment
> with a simple test, that only triggers a fs abort and watches the
> event.
>
> I'm also renaming the testcase from fanotify20 to fanotify21, to leave
> room for the pidfs test that is also in the baking by Matthew Bobrowski.

Only Matthew posted two tests... anyway I don't think merge is going to be
a big problem. I am hoping that PIDFD tests could be merged soonish and
I recommended Matthew to base his tests over your first two macro prep
patches.

Thanks,
Amir.
Petr Vorel Nov. 5, 2021, 10:10 a.m. UTC | #2
Hi Gabriel, all,

> Hi,

> Now that FAN_FS_ERROR is close to being merged, I'm sending a new
> version of the LTP tests.  This is the v3 of this patchset, and it
> applies the feedback of the previous version, in particular, it solves
> the issue Amir pointed out, that ltp won't gracefully handle a test with
> tcnt==0.  To solve that, I merged the patch that set up the environment
> with a simple test, that only triggers a fs abort and watches the
> event.

> I'm also renaming the testcase from fanotify20 to fanotify21, to leave
> room for the pidfs test that is also in the baking by Matthew Bobrowski.

> One important detail is that, for the tests to succeed, there is a
> dependency on an ext4 fix I sent a few days ago:

> https://lore.kernel.org/linux-ext4/20211026173302.84000-1-krisman@collabora.com/T/#u
It has been merged into Theodore Ts'o ext4 tree into dev branch as c1e2e0350ce3
("ext4: Fix error code saved on super block during file system abort")

We should probably add it as .tags (see fanotify06.c).

Also it'd be nice just to mention relevant commits which added FAN_FS_ERROR in
fanotify21.c (probably "fanotify: Allow users to request FAN_FS_ERROR events" ?)
+ kernel version it added it -suppose 5.16 (although it can be backported; and
these commits should not go to .tags, as we track there only
fixes not new features). I can add it myself (no need to repost).

Kind regards,
Petr
Amir Goldstein Nov. 5, 2021, 1:02 p.m. UTC | #3
On Fri, Nov 5, 2021 at 12:10 PM Petr Vorel <pvorel@suse.cz> wrote:
>
> Hi Gabriel, all,
>
> > Hi,
>
> > Now that FAN_FS_ERROR is close to being merged, I'm sending a new
> > version of the LTP tests.  This is the v3 of this patchset, and it
> > applies the feedback of the previous version, in particular, it solves
> > the issue Amir pointed out, that ltp won't gracefully handle a test with
> > tcnt==0.  To solve that, I merged the patch that set up the environment
> > with a simple test, that only triggers a fs abort and watches the
> > event.
>
> > I'm also renaming the testcase from fanotify20 to fanotify21, to leave
> > room for the pidfs test that is also in the baking by Matthew Bobrowski.
>
> > One important detail is that, for the tests to succeed, there is a
> > dependency on an ext4 fix I sent a few days ago:
>
> > https://lore.kernel.org/linux-ext4/20211026173302.84000-1-krisman@collabora.com/T/#u
> It has been merged into Theodore Ts'o ext4 tree into dev branch as c1e2e0350ce3
> ("ext4: Fix error code saved on super block during file system abort")
>
> We should probably add it as .tags (see fanotify06.c).

No point in doing that.
There will be no kernel release which meets the test requirements
and has this bug.

Thanks,
Amir.
Petr Vorel Nov. 5, 2021, 1:10 p.m. UTC | #4
> On Fri, Nov 5, 2021 at 12:10 PM Petr Vorel <pvorel@suse.cz> wrote:

> > Hi Gabriel, all,

> > > Hi,

> > > Now that FAN_FS_ERROR is close to being merged, I'm sending a new
> > > version of the LTP tests.  This is the v3 of this patchset, and it
> > > applies the feedback of the previous version, in particular, it solves
> > > the issue Amir pointed out, that ltp won't gracefully handle a test with
> > > tcnt==0.  To solve that, I merged the patch that set up the environment
> > > with a simple test, that only triggers a fs abort and watches the
> > > event.

> > > I'm also renaming the testcase from fanotify20 to fanotify21, to leave
> > > room for the pidfs test that is also in the baking by Matthew Bobrowski.

> > > One important detail is that, for the tests to succeed, there is a
> > > dependency on an ext4 fix I sent a few days ago:

> > > https://lore.kernel.org/linux-ext4/20211026173302.84000-1-krisman@collabora.com/T/#u
> > It has been merged into Theodore Ts'o ext4 tree into dev branch as c1e2e0350ce3
> > ("ext4: Fix error code saved on super block during file system abort")

> > We should probably add it as .tags (see fanotify06.c).

> No point in doing that.
> There will be no kernel release which meets the test requirements
> and has this bug.
Yes, that's correct for stable kernels, enterprise kernels can backport
FAN_FS_ERROR feature, while miss this fix (it does not mention Fixes).

Kind regards,
Petr


> Thanks,
> Amir.
Petr Vorel Nov. 15, 2021, 9:26 p.m. UTC | #5
Hi Gabriel, all,

I merged Matthew's v3 FAN_REPORT_PIDFD, which is for 5.15 kernel.

Could you please rebase your changes on the top of current master?
Unfortunately that means to rename fanotify21.c in all commits.

Also please: s/REQUIRE_MARK_TYPE_SUPPORTED_ON_KERNEL/REQUIRE_MARK_TYPE_SUPPORTED_BY_KERNEL/

and other changes:

diff --git testcases/kernel/syscalls/fanotify/fanotify21.c testcases/kernel/syscalls/fanotify/fanotify21.c
index 7f0154da5..44882097b 100644
--- testcases/kernel/syscalls/fanotify/fanotify21.c
+++ testcases/kernel/syscalls/fanotify/fanotify21.c
@@ -131,7 +131,7 @@ int check_error_event_info_fid(struct fanotify_event_info_fid *fid,
 	if (memcmp(&fid->fsid, &ex->fid->fsid, sizeof(fid->fsid))) {
 		tst_res(TFAIL, "%s: Received bad FSID type (%x...!=%x...)",
 			ex->name, FSID_VAL_MEMBER(fid->fsid, 0),
-			FSID_VAL_MEMBER(ex->fid->fsid, 0));
+			ex->fid->fsid.val[0]);
 
 		return 1;
 	}
@@ -298,7 +298,6 @@ static struct tst_test test = {
 	.cleanup = cleanup,
 	.mount_device = 1,
 	.mntpoint = MOUNT_PATH,
-	.all_filesystems = 0,
 	.needs_root = 1,
 	.dev_fs_type = "ext4",
 	.needs_cmds = (const char *[]) {

Thanks!

Petr