summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/filesystems/Locking14
-rw-r--r--fs/locks.c5
-rw-r--r--include/linux/fs.h2
3 files changed, 0 insertions, 21 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 ---------------------------
363prototypes: 363prototypes:
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:
371locking rules: 369locking rules:
372 370
373 inode->i_lock blocked_lock_lock may block 371 inode->i_lock blocked_lock_lock may block
374lm_compare_owner: yes[1] maybe no
375lm_owner_key yes[1] yes no
376lm_notify: yes yes no 372lm_notify: yes yes no
377lm_grant: no no no 373lm_grant: no no no
378lm_break: yes no no 374lm_break: yes no no
379lm_change yes no no 375lm_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
383associated with either file_lock argument! This is the case with deadlock
384detection, since the code has to chase down the owners of locks that may
385be entirely unrelated to the one on which the lock is being acquired.
386For deadlock detection however, the blocked_lock_lock is also held. The
387fact that these locks are held ensures that the file_locks do not
388disappear out from under you while doing the comparison or generating an
389owner key.
390
391--------------------------- buffer_head ----------------------------------- 377--------------------------- buffer_head -----------------------------------
392prototypes: 378prototypes:
393 void (*b_end_io)(struct buffer_head *bh, int uptodate); 379 void (*b_end_io)(struct buffer_head *bh, int uptodate);
diff --git a/fs/locks.c b/fs/locks.c
index ec1e4a5df629..0f85e840b2c7 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -658,9 +658,6 @@ static inline int locks_overlap(struct file_lock *fl1, struct file_lock *fl2)
658 */ 658 */
659static int posix_same_owner(struct file_lock *fl1, struct file_lock *fl2) 659static int posix_same_owner(struct file_lock *fl1, struct file_lock *fl2)
660{ 660{
661 if (fl1->fl_lmops && fl1->fl_lmops->lm_compare_owner)
662 return fl2->fl_lmops == fl1->fl_lmops &&
663 fl1->fl_lmops->lm_compare_owner(fl1, fl2);
664 return fl1->fl_owner == fl2->fl_owner; 661 return fl1->fl_owner == fl2->fl_owner;
665} 662}
666 663
@@ -701,8 +698,6 @@ static void locks_delete_global_locks(struct file_lock *fl)
701static unsigned long 698static unsigned long
702posix_owner_key(struct file_lock *fl) 699posix_owner_key(struct file_lock *fl)
703{ 700{
704 if (fl->fl_lmops && fl->fl_lmops->lm_owner_key)
705 return fl->fl_lmops->lm_owner_key(fl);
706 return (unsigned long)fl->fl_owner; 701 return (unsigned long)fl->fl_owner;
707} 702}
708 703
diff --git a/include/linux/fs.h b/include/linux/fs.h
index f7fdfe93e25d..0fa010bb7b6a 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1019,8 +1019,6 @@ struct file_lock_operations {
1019}; 1019};
1020 1020
1021struct lock_manager_operations { 1021struct lock_manager_operations {
1022 int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
1023 unsigned long (*lm_owner_key)(struct file_lock *);
1024 fl_owner_t (*lm_get_owner)(fl_owner_t); 1022 fl_owner_t (*lm_get_owner)(fl_owner_t);
1025 void (*lm_put_owner)(fl_owner_t); 1023 void (*lm_put_owner)(fl_owner_t);
1026 void (*lm_notify)(struct file_lock *); /* unblock callback */ 1024 void (*lm_notify)(struct file_lock *); /* unblock callback */