Re: [RFC,PATCH] use rcu for fasync_lock
From: Manfred Spraul
Date: Sun Dec 21 2003 - 16:10:24 EST
Linus Torvalds wrote:
On Sun, 21 Dec 2003, Manfred Spraul wrote:
Initially I tried to keep the patch as tiny as possible, thus I avoided
adding an inline function. But Stephen Hemminger convinced me to update
the network code, and thus it didn't matter and I've switched to an
inline function.
What do you think about the attached patch?
Please, NO!
Stuff like this
- write_lock_irq(&fasync_lock);
+ if (s)
+ lock_sock(s);
+ else
+ spin_lock(&fasync_lock);
+
should not be allowed. That's especially true since the choice really is a
static one depending on the caller.
Just make the caller do the locking.
It's not that simple: the function does
kmalloc();
spin_lock();
use_allocation.
If the caller does the locking, then the kmalloc would have to use
GFP_ATOMIC, or the caller would have to do the alloc.
But: as far as I can see, these lines usually run under lock_kernel().
If this is true, then the spin_lock(&fasync_lock) won't cause any
scalability regression, and I'll use that lock instead of lock_sock,
even for network sockets.
--
Manfred
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/