Messages in this thread |  | | Date | Fri, 5 Jun 2015 02:45:58 +0100 | From | Al Viro <> | Subject | Re: [RFC][PATCH 0/5] Optimize percpu-rwsem |
| |
On Tue, May 26, 2015 at 02:57:53PM -0700, Linus Torvalds wrote:
> Because that is another example of a complete failure of a locking > primitive that was just too specialized to be worth it.
<notices stale include in fs/file_table.c and removes it>
FWIW, I hadn't really looked into stop_machine uses, but fs/locks.c one is really not all that great - there we have a large trashcan of a list (every file_lock on the system) and the only use of that list is /proc/locks output generation. Sure, additions take this CPU's spinlock. And removals take pretty much a random one - losing the timeslice and regaining it on a different CPU is quite likely with the uses there.
Why do we need a global lock there, anyway? Why not hold only one for the chain currently being traversed? Sure, we'll need to get and drop them in ->next() that way; so what?
|  |