diff options
author | Jeff Layton <jlayton@redhat.com> | 2013-06-21 08:58:20 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-06-29 04:57:46 -0400 |
commit | 7b2296afb392bc21a50f42e7c7f4b19d3fea8c6d (patch) | |
tree | 360a8f35cf75f0bbcd1b984a6348f4c9e715e159 /Documentation/filesystems/Locking | |
parent | 3999e49364193f7dbbba66e2be655fe91ba1fced (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/Locking | 16 |
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 | ||
358 | locking rules: | 358 | locking rules: |
359 | 359 | ||
360 | inode->i_lock file_lock_lock may block | 360 | inode->i_lock blocked_lock_lock may block |
361 | lm_compare_owner: yes[1] maybe no | 361 | lm_compare_owner: yes[1] maybe no |
362 | lm_owner_key yes[1] yes no | 362 | lm_owner_key yes[1] yes no |
363 | lm_notify: yes yes no | 363 | lm_notify: yes yes no |
364 | lm_grant: no no no | 364 | lm_grant: no no no |
365 | lm_break: yes no no | 365 | lm_break: yes no no |
366 | lm_change yes no no | 366 | lm_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 |
370 | associated with either file_lock argument! This is the case with deadlock | 370 | associated with either file_lock argument! This is the case with deadlock |
371 | detection, since the code has to chase down the owners of locks that may | 371 | detection, since the code has to chase down the owners of locks that may |
372 | be entirely unrelated to the one on which the lock is being acquired. | 372 | be entirely unrelated to the one on which the lock is being acquired. |
373 | For deadlock detection however, the file_lock_lock is also held. The | 373 | For deadlock detection however, the blocked_lock_lock is also held. The |
374 | fact that these locks are held ensures that the file_locks do not | 374 | fact that these locks are held ensures that the file_locks do not |
375 | disappear out from under you while doing the comparison or generating an | 375 | disappear out from under you while doing the comparison or generating an |
376 | owner key. | 376 | owner key. |