aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems/Locking
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2013-06-21 08:58:20 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2013-06-29 04:57:46 -0400
commit7b2296afb392bc21a50f42e7c7f4b19d3fea8c6d (patch)
tree360a8f35cf75f0bbcd1b984a6348f4c9e715e159 /Documentation/filesystems/Locking
parent3999e49364193f7dbbba66e2be655fe91ba1fced (diff)
locks: give the blocked_hash its own spinlock
There's no reason we have to protect the blocked_hash and file_lock_list with the same spinlock. With the tests I have, breaking it in two gives a barely measurable performance benefit, but it seems reasonable to make this locking as granular as possible. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'Documentation/filesystems/Locking')
-rw-r--r--Documentation/filesystems/Locking16
1 files changed, 8 insertions, 8 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 2db7c9e492e9..7d9ca7a83fcc 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -357,20 +357,20 @@ prototypes:
357 357
358locking rules: 358locking rules:
359 359
360 inode->i_lock file_lock_lock may block 360 inode->i_lock blocked_lock_lock may block
361lm_compare_owner: yes[1] maybe no 361lm_compare_owner: yes[1] maybe no
362lm_owner_key yes[1] yes no 362lm_owner_key yes[1] yes no
363lm_notify: yes yes no 363lm_notify: yes yes no
364lm_grant: no no no 364lm_grant: no no no
365lm_break: yes no no 365lm_break: yes no no
366lm_change yes no no 366lm_change yes no no
367 367
368[1]: ->lm_compare_owner and ->lm_owner_key are generally called with 368[1]: ->lm_compare_owner and ->lm_owner_key are generally called with
369*an* inode->i_lock held. It may not be the i_lock of the inode 369*an* inode->i_lock held. It may not be the i_lock of the inode
370associated with either file_lock argument! This is the case with deadlock 370associated with either file_lock argument! This is the case with deadlock
371detection, since the code has to chase down the owners of locks that may 371detection, since the code has to chase down the owners of locks that may
372be entirely unrelated to the one on which the lock is being acquired. 372be entirely unrelated to the one on which the lock is being acquired.
373For deadlock detection however, the file_lock_lock is also held. The 373For deadlock detection however, the blocked_lock_lock is also held. The
374fact that these locks are held ensures that the file_locks do not 374fact that these locks are held ensures that the file_locks do not
375disappear out from under you while doing the comparison or generating an 375disappear out from under you while doing the comparison or generating an
376owner key. 376owner key.