diff options
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/Locking | 14 |
1 files changed, 0 insertions, 14 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index dac435575384..204dd3ea36bb 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -361,8 +361,6 @@ so fl_release_private called on a lease should not block. | |||
361 | 361 | ||
362 | ----------------------- lock_manager_operations --------------------------- | 362 | ----------------------- lock_manager_operations --------------------------- |
363 | prototypes: | 363 | prototypes: |
364 | int (*lm_compare_owner)(struct file_lock *, struct file_lock *); | ||
365 | unsigned long (*lm_owner_key)(struct file_lock *); | ||
366 | void (*lm_notify)(struct file_lock *); /* unblock callback */ | 364 | void (*lm_notify)(struct file_lock *); /* unblock callback */ |
367 | int (*lm_grant)(struct file_lock *, struct file_lock *, int); | 365 | int (*lm_grant)(struct file_lock *, struct file_lock *, int); |
368 | void (*lm_break)(struct file_lock *); /* break_lease callback */ | 366 | void (*lm_break)(struct file_lock *); /* break_lease callback */ |
@@ -371,23 +369,11 @@ prototypes: | |||
371 | locking rules: | 369 | locking rules: |
372 | 370 | ||
373 | inode->i_lock blocked_lock_lock may block | 371 | inode->i_lock blocked_lock_lock may block |
374 | lm_compare_owner: yes[1] maybe no | ||
375 | lm_owner_key yes[1] yes no | ||
376 | lm_notify: yes yes no | 372 | lm_notify: yes yes no |
377 | lm_grant: no no no | 373 | lm_grant: no no no |
378 | lm_break: yes no no | 374 | lm_break: yes no no |
379 | lm_change yes no no | 375 | lm_change yes no no |
380 | 376 | ||
381 | [1]: ->lm_compare_owner and ->lm_owner_key are generally called with | ||
382 | *an* inode->i_lock held. It may not be the i_lock of the inode | ||
383 | associated with either file_lock argument! This is the case with deadlock | ||
384 | detection, since the code has to chase down the owners of locks that may | ||
385 | be entirely unrelated to the one on which the lock is being acquired. | ||
386 | For deadlock detection however, the blocked_lock_lock is also held. The | ||
387 | fact that these locks are held ensures that the file_locks do not | ||
388 | disappear out from under you while doing the comparison or generating an | ||
389 | owner key. | ||
390 | |||
391 | --------------------------- buffer_head ----------------------------------- | 377 | --------------------------- buffer_head ----------------------------------- |
392 | prototypes: | 378 | prototypes: |
393 | void (*b_end_io)(struct buffer_head *bh, int uptodate); | 379 | void (*b_end_io)(struct buffer_head *bh, int uptodate); |