diff options
author | Jeff Layton <jlayton@redhat.com> | 2013-06-21 08:58:22 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-07-08 13:36:42 +0400 |
commit | 7012b02a2b2c42bb1e1d95040a6e3bb59c7284f7 (patch) | |
tree | 6a1c54cdca608ad75db6282cc4c0c7a6bb5f7673 /fs/reiserfs | |
parent | 0bc77381c1b1600e659eb7322c39d1753615722d (diff) | |
download | blackbird-op-linux-7012b02a2b2c42bb1e1d95040a6e3bb59c7284f7.tar.gz blackbird-op-linux-7012b02a2b2c42bb1e1d95040a6e3bb59c7284f7.zip |
locks: move file_lock_list to a set of percpu hlist_heads and convert file_lock_lock to an lglock
The file_lock_list is only used for /proc/locks. The vastly common case
is for locks to be put onto the list and come off again, without ever
being traversed.
Help optimize for this use-case by moving to percpu hlist_head-s. At the
same time, we can make the locking less contentious by moving to an
lglock. When iterating over the lists for /proc/locks, we must take the
global lock and then iterate over each CPU's list in turn.
This change necessitates a new fl_link_cpu field to keep track of which
CPU the entry is on. On x86_64 at least, this field is placed within an
existing hole in the struct to avoid growing the size.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/reiserfs')
0 files changed, 0 insertions, 0 deletions