diff options
-rw-r--r-- | Documentation/filesystems/Locking | 14 | ||||
-rw-r--r-- | fs/locks.c | 5 | ||||
-rw-r--r-- | include/linux/fs.h | 2 |
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 --------------------------- |
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); |
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 | */ |
659 | static int posix_same_owner(struct file_lock *fl1, struct file_lock *fl2) | 659 | static 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) | |||
701 | static unsigned long | 698 | static unsigned long |
702 | posix_owner_key(struct file_lock *fl) | 699 | posix_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 | ||
1021 | struct lock_manager_operations { | 1021 | struct 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 */ |