Re: Upcoming: Notifications, FS notifications and fsinfo()

From: Ian Kent
Date: Wed Apr 01 2020 - 22:52:43 EST


On Wed, 2020-04-01 at 18:40 +0200, Miklos Szeredi wrote:
> On Wed, Apr 1, 2020 at 6:07 PM David Howells <dhowells@xxxxxxxxxx>
> wrote:
> > Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
> >
> > > I've still not heard a convincing argument in favor of a syscall.
> >
> > From your own results, scanning 10000 mounts through mountfs and
> > reading just
> > two values from each is an order of magnitude slower without the
> > effect of the
> > dentry/inode caches. It gets faster on the second run because the
> > mountfs
> > dentries and inodes are cached - but at a cost of >205MiB of
> > RAM. And it's
> > *still* slower than fsinfo().
>
> Already told you that we can just delete the dentry on dput_final, so
> the memory argument is immaterial.
>
> And the speed argument also, because there's no use case where that
> would make a difference. You keep bringing up the notification queue
> overrun when watching a subtree, but that's going to be painful with
> fsinfo(2) as well. If that's a relevant use case (not saying it's
> true), might as well add a /mnt/MNT_ID/subtree_info (trivial again)
> that contains all information for the subtree. Have fun implementing
> that with fsinfo(2).

Forgive me for not trawling through your patch to work this out
but how does a poll on a path get what's needed to get mount info.

Or, more specifically, how does one get what's needed to go directly
to the place to get mount info. when something in the tree under the
polled path changes (mount/umount). IIUC poll alone won't do subtree
change monitoring?

Don't get me wrong, neither the proc nor the fsinfo implementations
deal with the notification storms that cause much of the problem we
see now.

IMHO that's a separate and very difficult problem in itself that
can't even be considered until getting the information efficiently
is resolved.

Ian