Nick Piggin
c32ccd87bf
[PATCH] inotify: lock avoidance with parent watch status in dentry
...
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 <npiggin@suse.de >
Cc: Robert Love <rml@novell.com >
Cc: John McCutchan <ttb@tentacle.dhs.org >
Signed-off-by: Andrew Morton <akpm@osdl.org >
Signed-off-by: Linus Torvalds <torvalds@osdl.org >
2006-03-25 08:22:53 -08:00
..
2006-03-16 14:10:19 +00:00
2006-03-21 08:52:18 -08:00
2006-02-22 09:32:46 +00:00
2006-03-22 13:56:56 -08:00
2006-03-22 13:56:56 -08:00
2006-02-27 13:04:17 -08:00
2006-03-22 13:56:56 -08:00
2006-03-22 13:56:56 -08:00
2006-03-23 07:38:03 -08:00
2006-03-20 22:35:41 -08:00
2006-02-20 20:00:10 -08:00
2006-03-21 21:21:31 -05:00
2006-03-24 07:33:20 -08:00
2006-03-23 20:00:26 +01:00
2006-03-23 20:00:26 +01:00
2006-03-23 07:38:10 -08:00
2006-03-23 07:38:09 -08:00
2006-03-23 20:00:26 +01:00
2006-03-20 13:42:59 -08:00
2006-03-24 07:33:22 -08:00
2006-03-21 20:14:08 +11:00
2006-03-25 08:22:53 -08:00
2006-03-20 22:50:58 -08:00
2006-03-20 13:42:59 -08:00
2006-03-22 10:58:05 -08:00
2006-03-22 10:53:19 +01:00
2006-03-20 22:42:39 -08:00
2006-03-18 22:27:18 -05:00
2006-03-23 07:38:17 -08:00
2006-03-23 07:38:14 -08:00
2006-03-23 07:38:09 -08:00
2006-03-24 07:33:25 -08:00
2006-03-23 07:38:09 -08:00
2006-03-25 08:22:51 -08:00
2006-03-20 14:49:55 -08:00
2006-03-25 08:22:53 -08:00
2006-03-23 07:38:14 -08:00
2006-03-23 07:38:17 -08:00
2006-03-09 19:47:38 -08:00
2006-03-06 18:40:44 -08:00
2006-03-22 07:54:04 -08:00
2006-03-23 14:21:50 -08:00
2006-03-23 14:21:54 -08:00
2006-03-23 14:21:51 -08:00
2006-03-20 17:04:53 -08:00
2006-03-24 07:33:28 -08:00
2006-03-03 20:58:00 -05:00
2006-03-20 17:09:11 -08:00
2006-03-20 22:41:23 -08:00
2006-03-20 22:39:47 -08:00
2006-03-23 07:38:09 -08:00
2006-03-25 08:22:53 -08:00
2006-03-20 17:06:24 -08:00
2006-03-20 17:07:03 -08:00
2006-03-20 22:21:10 -08:00
2006-03-25 08:22:50 -08:00
2006-03-23 07:38:16 -08:00
2006-03-06 18:40:44 -08:00
2006-03-20 13:42:58 -08:00
2006-03-20 13:42:59 -08:00
2006-03-23 07:38:12 -08:00
2006-03-24 10:18:43 -05:00
2006-03-24 07:33:25 -08:00
2006-03-20 17:19:17 -08:00
2006-03-23 07:38:12 -08:00
2006-03-06 18:40:44 -08:00
2006-03-24 07:33:23 -08:00
2006-03-22 07:54:06 -08:00
2006-03-22 07:53:57 -08:00
2006-03-22 07:54:02 -08:00
2006-03-25 08:22:52 -08:00
2006-03-25 08:22:52 -08:00
2006-03-23 07:38:15 -08:00
2006-03-23 07:38:13 -08:00
2006-03-23 07:38:14 -08:00
2006-03-23 07:38:14 -08:00
2006-03-21 23:58:08 -08:00
2006-03-20 22:32:28 -08:00
2006-03-20 22:58:21 -08:00
2006-03-20 22:45:21 -08:00
2006-03-20 18:52:01 -08:00
2006-02-20 20:00:11 -08:00
2006-03-22 07:53:58 -08:00
2006-03-24 07:33:22 -08:00
2006-03-24 07:33:27 -08:00
2006-03-23 14:35:16 -08:00
2006-03-08 14:14:01 -08:00
2006-03-23 07:38:07 -08:00
2006-03-23 07:38:16 -08:00
2006-03-25 08:22:51 -08:00
2006-03-23 07:38:17 -08:00
2006-03-25 08:22:51 -08:00
2006-03-23 19:56:55 +01:00
2006-03-22 07:53:55 -08:00
2006-03-23 01:16:06 -08:00
2006-03-24 07:33:30 -08:00
2006-03-20 22:41:23 -08:00
2006-03-23 07:38:12 -08:00
2006-03-22 17:33:12 -08:00
2006-02-23 09:49:35 +00:00
2006-03-20 22:43:56 -08:00
2006-03-25 08:22:49 -08:00
2006-03-22 07:53:59 -08:00
2006-03-20 22:41:23 -08:00
2006-03-24 07:33:31 -08:00
2006-03-23 07:38:07 -08:00
2006-03-24 07:33:15 -08:00
2006-03-20 22:40:29 -08:00
2006-03-20 21:32:58 -08:00
2006-03-25 08:22:48 -08:00
2006-03-25 08:22:52 -08:00
2006-03-23 07:38:11 -08:00
2006-03-23 07:38:14 -08:00
2006-03-20 14:49:58 -08:00
2006-03-20 14:49:54 -08:00
2006-03-21 08:52:18 -08:00
2006-03-23 07:38:08 -08:00
2006-03-23 07:12:57 -05:00
2006-02-27 23:34:40 -06:00
2006-03-24 07:33:26 -08:00
2006-03-22 00:01:31 -08:00
2006-03-20 21:25:50 -08:00