Eric Dumazet
989a297920
fasync: RCU and fine grained locking
...
kill_fasync() uses a central rwlock, candidate for RCU conversion, to
avoid cache line ping pongs on SMP.
fasync_remove_entry() and fasync_add_entry() can disable IRQS on a short
section instead during whole list scan.
Use a spinlock per fasync_struct to synchronize kill_fasync_rcu() and
fasync_{remove|add}_entry(). This spinlock is IRQ safe, so sock_fasync()
doesnt need its own implementation and can use fasync_helper(), to
reduce code size and complexity.
We can remove __kill_fasync() direct use in net/socket.c, and rename it
to kill_fasync_rcu().
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-04-21 16:19:29 -07:00
..
2010-04-05 13:42:54 -07:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-05 13:25:52 -05:00
2010-04-12 18:37:04 -07:00
2010-03-30 22:02:32 +09:00
2010-04-14 18:45:31 -07:00
2010-04-08 11:58:14 -07:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-04-19 14:20:32 -07:00
2010-03-30 22:02:32 +09:00
2009-10-27 19:34:04 -04:00
2010-04-12 21:11:25 +02:00
2010-04-12 21:11:39 +02:00
2010-03-30 22:02:32 +09:00
2010-04-05 11:37:28 +09:00
2010-03-30 22:02:32 +09:00
2010-04-07 08:38:05 -07:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-03 14:08:00 -05:00
2009-12-16 12:16:47 -05:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-04-05 11:37:28 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-04-12 07:55:15 -04:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-04-12 18:34:25 -07:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-04-07 08:38:04 -07:00
2010-02-04 11:55:46 +01:00
2010-04-20 18:25:25 +02:00
2010-03-30 22:02:32 +09:00
2010-04-05 11:37:28 +09:00
2010-01-26 22:22:26 -05:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-05 13:25:52 -05:00
2010-03-30 22:02:32 +09:00
2010-04-08 15:35:20 +02:00
2010-03-12 15:52:35 -08:00
2010-04-16 13:51:44 -05:00
2009-12-16 07:20:13 -08:00
2010-03-30 22:02:32 +09:00
2010-03-06 11:26:29 -08:00
2010-03-30 22:02:32 +09:00
2010-03-24 16:43:29 -07:00
2010-03-06 11:26:46 -08:00
2010-03-30 22:02:32 +09:00
2010-03-06 11:26:29 -08:00
2010-03-30 22:02:32 +09:00
2010-01-29 08:22:01 -08:00
2010-03-30 22:02:32 +09:00
2010-03-19 08:05:10 +01:00
2010-04-07 08:38:04 -07:00
2010-03-12 16:04:50 -08:00
2010-03-06 11:26:45 -08:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-03 14:13:08 -05:00
2009-12-17 04:52:13 -05:00
2010-03-30 22:02:32 +09:00
2009-12-22 12:27:34 -05:00
2010-03-06 11:26:46 -08:00
2010-04-21 16:19:29 -07:00
2010-03-30 22:02:32 +09:00
2010-03-06 11:26:25 -08:00
2010-03-06 11:26:29 -08:00
2010-03-30 22:02:32 +09:00
2010-04-09 11:50:29 -07:00
2010-03-30 22:02:32 +09:00
2010-03-05 00:20:30 +01:00
2010-03-03 14:07:59 -05:00
2009-11-12 07:26:01 -08:00
2010-03-30 22:02:32 +09:00
2010-03-19 09:43:06 -07:00
2010-03-30 22:02:32 +09:00
2010-03-08 16:55:37 +01:00
2010-03-19 09:43:06 -07:00
2010-03-30 22:02:32 +09:00
2010-03-26 12:41:05 -04:00
2010-03-03 14:08:00 -05:00
2010-03-03 13:00:21 -05:00
2010-03-30 22:02:32 +09:00
2009-12-17 10:51:40 -05:00
2010-03-03 13:00:22 -05:00
2010-03-03 14:07:55 -05:00
2010-03-24 16:43:29 -07:00
2010-03-12 15:52:32 -08:00
2010-03-07 15:48:26 -08:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2009-12-17 10:58:17 -05:00
2009-12-23 13:33:54 +01:00
2010-03-03 14:08:00 -05:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2009-12-16 12:16:49 -05:00