<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/inotify.c, branch linux-2.6.19.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2006-06-20T09:25:19Z</updated>
<entry>
<title>[PATCH] inotify (4/5): allow watch removal from event handler</title>
<updated>2006-06-20T09:25:19Z</updated>
<author>
<name>Amy Griffis</name>
</author>
<published>2006-06-01T20:11:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3ca10067f7f4bfa62a1b0edc84f590261fa02d75'/>
<id>urn:sha1:3ca10067f7f4bfa62a1b0edc84f590261fa02d75</id>
<content type='text'>
Allow callers to remove watches from their event handler via
inotify_remove_watch_locked().  This functionality can be used to
achieve IN_ONESHOT-like functionality for a subset of events in the
mask.

Signed-off-by: Amy Griffis &lt;amy.griffis@hp.com&gt;
Acked-by: Robert Love &lt;rml@novell.com&gt;
Acked-by: John McCutchan &lt;john@johnmccutchan.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>[PATCH] inotify (3/5): add interfaces to kernel API</title>
<updated>2006-06-20T09:25:18Z</updated>
<author>
<name>Amy Griffis</name>
</author>
<published>2006-06-01T20:11:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a9dc971d3fdb857a2bcd6d53238125a2cd31d5f4'/>
<id>urn:sha1:a9dc971d3fdb857a2bcd6d53238125a2cd31d5f4</id>
<content type='text'>
Add inotify_init_watch() so caller can use inotify_watch refcounts
before calling inotify_add_watch().

Add inotify_find_watch() to find an existing watch for an (ih,inode)
pair.  This is similar to inotify_find_update_watch(), but does not
update the watch's mask if one is found.

Add inotify_rm_watch() to remove a watch via the watch pointer instead
of the watch descriptor.

Signed-off-by: Amy Griffis &lt;amy.griffis@hp.com&gt;
Acked-by: Robert Love &lt;rml@novell.com&gt;
Acked-by: John McCutchan &lt;john@johnmccutchan.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>[PATCH] inotify (2/5): add name's inode to event handler</title>
<updated>2006-06-20T09:25:18Z</updated>
<author>
<name>Amy Griffis</name>
</author>
<published>2006-06-01T20:11:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7c29772288b7026504cfe75bfd90d40fbd1574bf'/>
<id>urn:sha1:7c29772288b7026504cfe75bfd90d40fbd1574bf</id>
<content type='text'>
When an inotify event includes a dentry name, also include the inode
associated with that name.

Signed-off-by: Amy Griffis &lt;amy.griffis@hp.com&gt;
Acked-by: Robert Love &lt;rml@novell.com&gt;
Acked-by: John McCutchan &lt;john@johnmccutchan.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>[PATCH] inotify (1/5): split kernel API from userspace support</title>
<updated>2006-06-20T09:25:17Z</updated>
<author>
<name>Amy Griffis</name>
</author>
<published>2006-06-01T20:10:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2d9048e201bfb67ba21f05e647b1286b8a4a5667'/>
<id>urn:sha1:2d9048e201bfb67ba21f05e647b1286b8a4a5667</id>
<content type='text'>
The following series of patches introduces a kernel API for inotify,
making it possible for kernel modules to benefit from inotify's
mechanism for watching inodes.  With these patches, inotify will
maintain for each caller a list of watches (via an embedded struct
inotify_watch), where each inotify_watch is associated with a
corresponding struct inode.  The caller registers an event handler and
specifies for which filesystem events their event handler should be
called per inotify_watch.

Signed-off-by: Amy Griffis &lt;amy.griffis@hp.com&gt;
Acked-by: Robert Love &lt;rml@novell.com&gt;
Acked-by: John McCutchan &lt;john@johnmccutchan.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>[PATCH] fix NULL dereference in inotify_ignore</title>
<updated>2006-05-21T19:59:18Z</updated>
<author>
<name>Amy Griffis</name>
</author>
<published>2006-05-20T22:00:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d66fd908acc8ba88541ecc570d89b0243f947c5e'/>
<id>urn:sha1:d66fd908acc8ba88541ecc570d89b0243f947c5e</id>
<content type='text'>
Don't reassign to watch.  If idr_find() returns NULL, then
put_inotify_watch() will choke.

Signed-off-by: Amy Griffis &lt;amy.griffis@hp.com&gt;
Cc: John McCutchan &lt;john@johnmccutchan.com&gt;
Cc: Robert Love &lt;rlove@rlove.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fix race in inotify_release</title>
<updated>2006-05-21T19:59:18Z</updated>
<author>
<name>Amy Griffis</name>
</author>
<published>2006-05-20T22:00:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=66055a4e7334b05354c835123ff621c5f700e56a'/>
<id>urn:sha1:66055a4e7334b05354c835123ff621c5f700e56a</id>
<content type='text'>
While doing some inotify stress testing, I hit the following race.  In
inotify_release(), it's possible for a watch to be removed from the lists
in between dropping dev-&gt;mutex and taking inode-&gt;inotify_mutex.  The
reference we hold prevents the watch from being freed, but not from being
removed.

Checking the dev's idr mapping will prevent a double list_del of the
same watch.

Signed-off-by: Amy Griffis &lt;amy.griffis@hp.com&gt;
Acked-by: John McCutchan &lt;john@johnmccutchan.com&gt;
Cc: Robert Love &lt;rml@novell.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] inotify: check for NULL inode in inotify_d_instantiate</title>
<updated>2006-04-11T13:18:45Z</updated>
<author>
<name>Arnd Bergmann</name>
</author>
<published>2006-04-11T05:54:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=091e881d0e55496d8887b61446ae1c598b0995b6'/>
<id>urn:sha1:091e881d0e55496d8887b61446ae1c598b0995b6</id>
<content type='text'>
The spufs file system creates files in a directory before instantiating the
directory itself, which causes a NULL pointer access in
inotify_d_instantiate since c32ccd87bfd1414b0aabfcd8dbc7539ad23bcbaa.

I'd like to keep this behavior since it means that the user will not have
access to files in the directory before I know that I succeed in creating
everything in it.  This patch adds a simple check for the inode to keep
that working.

Signed-off-by: Arnd Bergmann &lt;arnd.bergmann@de.ibm.com&gt;
Acked-by: Nick Piggin &lt;npiggin@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] Make most file operations structs in fs/ const</title>
<updated>2006-03-28T17:16:06Z</updated>
<author>
<name>Arjan van de Ven</name>
</author>
<published>2006-03-28T09:56:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4b6f5d20b04dcbc3d888555522b90ba6d36c4106'/>
<id>urn:sha1:4b6f5d20b04dcbc3d888555522b90ba6d36c4106</id>
<content type='text'>
This is a conversion to make the various file_operations structs in fs/
const.  Basically a regexp job, with a few manual fixups

The goal is both to increase correctness (harder to accidentally write to
shared datastructures) and reducing the false sharing of cachelines with
things that get dirty in .data (while .rodata is nicely read only and thus
cache clean)

Signed-off-by: Arjan van de Ven &lt;arjan@infradead.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] Use __read_mostly on some hot fs variables</title>
<updated>2006-03-26T16:56:56Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2006-03-26T09:37:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fa3536cc144c1298f2ed9416c33f3b77fa2cd37a'/>
<id>urn:sha1:fa3536cc144c1298f2ed9416c33f3b77fa2cd37a</id>
<content type='text'>
I discovered on oprofile hunting on a SMP platform that dentry lookups were
slowed down because d_hash_mask, d_hash_shift and dentry_hashtable were in
a cache line that contained inodes_stat.  So each time inodes_stats is
changed by a cpu, other cpus have to refill their cache line.

This patch moves some variables to the __read_mostly section, in order to
avoid false sharing.  RCU dentry lookups can go full speed.

Signed-off-by: Eric Dumazet &lt;dada1@cosmosbay.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] inotify: lock avoidance with parent watch status in dentry</title>
<updated>2006-03-25T16:22:53Z</updated>
<author>
<name>Nick Piggin</name>
</author>
<published>2006-03-25T11:07:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c32ccd87bfd1414b0aabfcd8dbc7539ad23bcbaa'/>
<id>urn:sha1:c32ccd87bfd1414b0aabfcd8dbc7539ad23bcbaa</id>
<content type='text'>
Previous inotify work avoidance is good when inotify is completely unused,
but it breaks down if even a single watch is in place anywhere in the
system.  Robin Holt notices that udev is one such culprit - it slows down a
512-thread application on a 512 CPU system from 6 seconds to 22 minutes.

Solve this by adding a flag in the dentry that tells inotify whether or not
its parent inode has a watch on it.  Event queueing to parent will skip
taking locks if this flag is cleared.  Setting and clearing of this flag on
all child dentries versus event delivery: this is no in terms of race
cases, and that was shown to be equivalent to always performing the check.

The essential behaviour is that activity occuring _after_ a watch has been
added and _before_ it has been removed, will generate events.

Signed-off-by: Nick Piggin &lt;npiggin@suse.de&gt;
Cc: Robert Love &lt;rml@novell.com&gt;
Cc: John McCutchan &lt;ttb@tentacle.dhs.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
