locks: Cleanup lm_compare_owner and lm_owner_key
After the update to use nlm_lockowners for the NLM server, there are no more users of lm_compare_owner and lm_owner_key. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
Родитель
646d73e91b
Коммит
f85d93385e
|
@ -361,8 +361,6 @@ so fl_release_private called on a lease should not block.
|
|||
|
||||
----------------------- lock_manager_operations ---------------------------
|
||||
prototypes:
|
||||
int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
|
||||
unsigned long (*lm_owner_key)(struct file_lock *);
|
||||
void (*lm_notify)(struct file_lock *); /* unblock callback */
|
||||
int (*lm_grant)(struct file_lock *, struct file_lock *, int);
|
||||
void (*lm_break)(struct file_lock *); /* break_lease callback */
|
||||
|
@ -371,23 +369,11 @@ prototypes:
|
|||
locking rules:
|
||||
|
||||
inode->i_lock blocked_lock_lock may block
|
||||
lm_compare_owner: yes[1] maybe no
|
||||
lm_owner_key yes[1] yes no
|
||||
lm_notify: yes yes no
|
||||
lm_grant: no no no
|
||||
lm_break: yes no no
|
||||
lm_change yes no no
|
||||
|
||||
[1]: ->lm_compare_owner and ->lm_owner_key are generally called with
|
||||
*an* inode->i_lock held. It may not be the i_lock of the inode
|
||||
associated with either file_lock argument! This is the case with deadlock
|
||||
detection, since the code has to chase down the owners of locks that may
|
||||
be entirely unrelated to the one on which the lock is being acquired.
|
||||
For deadlock detection however, the blocked_lock_lock is also held. The
|
||||
fact that these locks are held ensures that the file_locks do not
|
||||
disappear out from under you while doing the comparison or generating an
|
||||
owner key.
|
||||
|
||||
--------------------------- buffer_head -----------------------------------
|
||||
prototypes:
|
||||
void (*b_end_io)(struct buffer_head *bh, int uptodate);
|
||||
|
|
|
@ -658,9 +658,6 @@ static inline int locks_overlap(struct file_lock *fl1, struct file_lock *fl2)
|
|||
*/
|
||||
static int posix_same_owner(struct file_lock *fl1, struct file_lock *fl2)
|
||||
{
|
||||
if (fl1->fl_lmops && fl1->fl_lmops->lm_compare_owner)
|
||||
return fl2->fl_lmops == fl1->fl_lmops &&
|
||||
fl1->fl_lmops->lm_compare_owner(fl1, fl2);
|
||||
return fl1->fl_owner == fl2->fl_owner;
|
||||
}
|
||||
|
||||
|
@ -701,8 +698,6 @@ static void locks_delete_global_locks(struct file_lock *fl)
|
|||
static unsigned long
|
||||
posix_owner_key(struct file_lock *fl)
|
||||
{
|
||||
if (fl->fl_lmops && fl->fl_lmops->lm_owner_key)
|
||||
return fl->fl_lmops->lm_owner_key(fl);
|
||||
return (unsigned long)fl->fl_owner;
|
||||
}
|
||||
|
||||
|
|
|
@ -1019,8 +1019,6 @@ struct file_lock_operations {
|
|||
};
|
||||
|
||||
struct lock_manager_operations {
|
||||
int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
|
||||
unsigned long (*lm_owner_key)(struct file_lock *);
|
||||
fl_owner_t (*lm_get_owner)(fl_owner_t);
|
||||
void (*lm_put_owner)(fl_owner_t);
|
||||
void (*lm_notify)(struct file_lock *); /* unblock callback */
|
||||
|
|
Загрузка…
Ссылка в новой задаче