Re: [PATCH v2 00/16] fanotify: add pre-content hooks

Josef Bacik
2024-08-09T14:18:34Z

On Fri, Aug 09, 2024 at 08:15:55AM +1000, Dave Chinner wrote:
> On Thu, Aug 08, 2024 at 03:27:02PM -0400, Josef Bacik wrote:
> > v1: https://lore.kernel.org/linux-fsdevel/cover.1721931241.git.josef@toxicpanda.com/
> >
> > v1->v2:
> > - reworked the page fault logic based on Jan's suggestion and turned it into a
> > helper.
> > - Added 3 patches per-fs where we need to call the fsnotify helper from their
> > ->fault handlers.
> > - Disabled readahead in the case that there's a pre-content watch in place.
> > - Disabled huge faults when there's a pre-content watch in place (entirely
> > because it's untested, theoretically it should be straightforward to do).
> > - Updated the command numbers.
> > - Addressed the random spelling/grammer mistakes that Jan pointed out.
> > - Addressed the other random nits from Jan.
> >
> > --- Original email ---
> >
> > Hello,
> >
> > These are the patches for the bare bones pre-content fanotify support. The
> > majority of this work is Amir's, my contribution to this has solely been around
> > adding the page fault hooks, testing and validating everything. I'm sending it
> > because Amir is traveling a bunch, and I touched it last so I'm going to take
> > all the hate and he can take all the credit.
>
> Brave man. :)
>
> > There is a PoC that I've been using to validate this work, you can find the git
> > repo here
> >
> > https://github.com/josefbacik/remote-fetch
> >
> > This consists of 3 different tools.
> >
> > 1. populate. This just creates all the stub files in the directory from the
> > source directory. Just run ./populate ~/linux ~/hsm-linux and it'll
> > recursively create all of the stub files and directories.
> > 2. remote-fetch. This is the actual PoC, you just point it at the source and
> > destination directory and then you can do whatever. ./remote-fetch ~/linux
> > ~/hsm-linux.
> > 3. mmap-validate. This was to validate the pagefault thing, this is likely what
> > will be turned into the selftest with remote-fetch. It creates a file and
> > then you can validate the file matches the right pattern with both normal
> > reads and mmap. Normally I do something like
> >
> > ./mmap-validate create ~/src/foo
> > ./populate ~/src ~/dst
> > ./rmeote-fetch ~/src ~/dst
> > ./mmap-validate validate ~/dst/foo
>
> This smells like something that should be added to fstests.
>
> FWIW, fstests used to have a whole "fake-hsm" infrastructure
> subsystem in it for testing DMAPI events used by HSMs. They were
> removed in this commit:
>
> commit 6497ede7ad4e9fc8e5a5a121bd600df896b7d9c6
> Author: Darrick J. Wong <djwong@kernel.org>
> Date: Thu Feb 11 13:33:38 2021 -0800
>
> fstests: remove DMAPI tests
>
> Upstream XFS has never supported DMAPI, so remove the tests for this
> feature.
>
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> Acked-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
>
> See ./dmapi/src/sample_hsm/ for the HSM test code that was removed
> in that patchset - it might provide some infrastructure that can be
> used to test the fanotify HSM event infrastructure without
> reinventing the entire wheel...

Yup as soon as this is merged into a tree my first stop is LTP, which is where
all the fanotify tests currently exist. It won't cost me anything to add it to
fstests as well, so I'll follow up with that.

Generally I'd post the tests at the same time, but since it's dependent on what
we settle on for the implementation behavior I'm holding that stuff back.
Thanks,

Josef