From: jamal <hadi@cyberus.ca>
To: Jamie Lokier <jamie@shareable.org>
Cc: Eric Paris <eparis@redhat.com>,
David Miller <davem@davemloft.net>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
netdev@vger.kernel.org, viro@zeniv.linux.org.uk,
alan@linux.intel.com, hch@infradead.org, balbir@in.ibm.com
Subject: Re: [PATCH 1/8] networking/fanotify: declare fanotify socket numbers
Date: Fri, 11 Sep 2009 18:52:47 -0400 [thread overview]
Message-ID: <1252709567.25158.61.camel@dogo.mojatatu.com> (raw)
In-Reply-To: <20090911214254.GB19901@shareable.org>
On Fri, 2009-09-11 at 22:42 +0100, Jamie Lokier wrote:
> One of the uses of fanotify is as a security or auditing mechanism.
> That can't tolerate gaps.
>
> It's fundemantally different from inotify in one important respect:
> inotify apps can recover from losing events by checking what they are
> watching.
>
> The fanotify application will know that it missed events, but what
> happens to the other application which _caused_ those events? Does it
> get to do things it shouldn't, or hide them from the fanotify app, by
> simply overloading the system? Or the opposite, does it get access
> denied - spurious file errors when the system is overloaded?
>
> There's no way to handle that by dropping events. A transport
> mechanism can be dropped (say skbs), but the event itself has to be
> kept, and then retried.
>
>
> Since you have to keep an event object around until it's handled,
> there's no point tying it to an unreliable delivery mechanism which
> you'd have to wrap a retry mechanism around.
>
> In other words, that part of netlink is a poor match. It would match
> inotify much better.
>
Reliability is something that you should build in. Netlink provides you
all the necessary tools. What you are asking for here is essentially
reliable multicasting. You dont have infinite memory, therefore there
will be times when you will overload one of the users, and they wont
have sufficient buffer space and then you have to retransmit. You have
to factor in processing speed mismatch between the different listeners.
As an example, you could ensure that all users receive the message and
if user #49 didnt, then you wait until they do before multicasting the
next message to all 50 listeners.
Is the current proposed mechanism capable of reliably multicasting
without need for retransmit?
> Speaking of skbs, how fast and compact are they for this?
They are largish relative to say if you trimmed down to basic necessity.
But then you get a lot of the buffer management aspects for free.
In this case, the concept of multicasting is built in so for one event
to be sent to X users - you only need one skb.
> Eric's explained that it would be normal for _every_ file operation on
> some systems to trigger a fanotify event and possibly wait on the
> response, or at least in major directory trees on the filesystem.
> Even if it's just for the fanotify app to say "oh I don't care about
> that file, carry on".
>
That doesnt sound very scalable. Should it not be you get nothing unless
you register for interest in something?
> File performance is one of those things which really needs to be fast
> for a good user experience - and it's not unusual to grep the odd
> 10,000 files here or there (just think of what a kernel developer
> does), or to replace a few thousand quickly (rpm/dpkg) and things like
> that.
>
So grepping 10000 files would cause 10000 events? I am not sure how the
scheme works; filtering of what events get delivered sounds more
reasonable if it happens in the kernel.
> While skbs and netlink aren't that slow, I suspect they're an order of
> magnitude or two slower than, say, epoll or inotify at passing events
> around.
>
not familiar with inotify. Theres a difference between events which are
abbreviated in the form "hey some read happened on fd you are listening
on" vs "hey a read of file X for 16 bytes at offset 200 by process Y
just occured while at the same time process Z was writting at offset
2000". The later (which netlink will give you) includes a lot more
attribute details which could be filtered or can be extended to include
a lot more. The former(what epoll will give you) is merely a signal.
cheers,
jamal
next prev parent reply other threads:[~2009-09-11 22:55 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-11 5:25 Eric Paris
2009-09-11 5:26 ` [PATCH 2/8] vfs: introduce FMODE_NONOTIFY Eric Paris
2009-09-11 5:26 ` [PATCH 3/8] fanotify: fscking all notification system Eric Paris
2009-09-11 5:26 ` [PATCH 4/8] fanotify:drop notification if they exist in the outgoing queue Eric Paris
2009-09-11 5:26 ` [PATCH 5/8] fanotify: merge notification events with different masks Eric Paris
2009-09-11 5:26 ` [PATCH 6/8] fanotify: userspace socket Eric Paris
2009-09-11 5:26 ` [PATCH 7/8] fanotify: userspace can add and remove fsnotify inode marks Eric Paris
2009-09-11 5:26 ` [PATCH 8/8] fanotify: send events to userspace over socket reads Eric Paris
2009-09-11 14:08 ` Daniel Walker
2009-09-11 14:15 ` Eric Paris
2009-09-11 14:22 ` Daniel Walker
2009-09-11 14:32 ` Daniel Walker
2009-09-11 14:32 ` [PATCH 1/8] networking/fanotify: declare fanotify socket numbers Andreas Gruenbacher
2009-09-11 16:04 ` Eric Paris
2009-09-11 18:46 ` David Miller
2009-09-11 19:33 ` Eric Paris
2009-09-11 20:46 ` Jamie Lokier
2009-09-11 21:13 ` Eric Paris
2009-09-11 21:27 ` Jamie Lokier
2009-09-11 21:51 ` Eric Paris
2009-09-12 9:41 ` Evgeniy Polyakov
2009-09-14 0:17 ` Jamie Lokier
2009-09-14 14:07 ` Evgeniy Polyakov
2009-09-14 19:08 ` fanotify as syscalls Eric Paris
2009-09-15 20:16 ` Evgeniy Polyakov
2009-09-15 21:54 ` Eric Paris
2009-09-15 23:49 ` Linus Torvalds
2009-09-16 1:26 ` Eric Paris
2009-09-16 7:52 ` Jamie Lokier
2009-09-16 9:48 ` Eric Paris
2009-09-16 12:17 ` Jamie Lokier
2009-09-17 20:07 ` Andreas Gruenbacher
2009-09-18 20:52 ` Eric Paris
2009-09-18 22:00 ` Andreas Gruenbacher
2009-09-19 3:04 ` Eric Paris
2009-09-21 20:04 ` Andreas Gruenbacher
2009-09-21 20:28 ` Jamie Lokier
2009-09-21 21:27 ` Andreas Gruenbacher
2009-09-21 22:00 ` Jamie Lokier
2009-09-21 23:09 ` Andreas Gruenbacher
2009-09-21 23:56 ` Jamie Lokier
2009-09-21 22:18 ` Davide Libenzi
2009-09-21 23:12 ` Jamie Lokier
2009-09-22 14:51 ` Davide Libenzi
2009-09-22 15:31 ` Andreas Gruenbacher
2009-09-22 16:04 ` Davide Libenzi
2009-09-23 8:39 ` Tvrtko Ursulin
2009-09-23 11:20 ` hch
2009-09-23 15:35 ` Davide Libenzi
2009-09-23 21:58 ` hch
2009-09-23 11:32 ` Arjan van de Ven
2009-09-23 15:42 ` Tvrtko Ursulin
2009-09-23 15:51 ` Eric Paris
2009-09-23 21:56 ` hch
2009-09-23 15:26 ` Davide Libenzi
2009-09-23 15:45 ` Tvrtko Ursulin
2009-09-23 17:31 ` Davide Libenzi
2009-09-22 16:11 ` Eric Paris
2009-09-22 16:27 ` Jamie Lokier
2009-09-22 23:43 ` Davide Libenzi
2009-09-22 21:06 ` Eric Paris
2009-09-22 21:38 ` Andreas Gruenbacher
2009-09-16 10:41 ` Alan Cox
2009-09-16 11:41 ` Jamie Lokier
2009-09-16 12:01 ` Alan Cox
2009-09-16 12:56 ` Jamie Lokier
2009-09-16 15:53 ` Eric Paris
2009-09-16 21:49 ` Jamie Lokier
2009-09-16 22:33 ` Eric Paris
2009-09-16 11:30 ` Arnd Bergmann
2009-09-16 12:05 ` Evgeniy Polyakov
2009-09-16 12:27 ` Jamie Lokier
2009-09-17 16:40 ` Linus Torvalds
2009-09-17 17:35 ` Arjan van de Ven
2009-09-17 18:53 ` Eric Paris
2009-09-22 0:15 ` Eric W. Biederman
2009-09-22 0:22 ` Randy Dunlap
2009-09-11 21:21 ` [PATCH 1/8] networking/fanotify: declare fanotify socket numbers jamal
2009-09-11 21:42 ` Jamie Lokier
2009-09-11 22:52 ` jamal [this message]
2009-09-14 0:03 ` Jamie Lokier
2009-09-14 1:26 ` Eric Paris
2009-09-14 13:15 ` jamal
2009-09-12 9:47 ` Evgeniy Polyakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1252709567.25158.61.camel@dogo.mojatatu.com \
--to=hadi@cyberus.ca \
--cc=alan@linux.intel.com \
--cc=balbir@in.ibm.com \
--cc=davem@davemloft.net \
--cc=eparis@redhat.com \
--cc=hch@infradead.org \
--cc=jamie@shareable.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®