mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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:
		
							parent
							
								
									646d73e91b
								
							
						
					
					
						commit
						f85d93385e
					
				
					 3 changed files with 0 additions and 21 deletions
				
			
		| 
						 | 
					@ -361,8 +361,6 @@ so fl_release_private called on a lease should not block.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
----------------------- lock_manager_operations ---------------------------
 | 
					----------------------- lock_manager_operations ---------------------------
 | 
				
			||||||
prototypes:
 | 
					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 */
 | 
						void (*lm_notify)(struct file_lock *);  /* unblock callback */
 | 
				
			||||||
	int (*lm_grant)(struct file_lock *, struct file_lock *, int);
 | 
						int (*lm_grant)(struct file_lock *, struct file_lock *, int);
 | 
				
			||||||
	void (*lm_break)(struct file_lock *); /* break_lease callback */
 | 
						void (*lm_break)(struct file_lock *); /* break_lease callback */
 | 
				
			||||||
| 
						 | 
					@ -371,23 +369,11 @@ prototypes:
 | 
				
			||||||
locking rules:
 | 
					locking rules:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			inode->i_lock	blocked_lock_lock	may block
 | 
								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_notify:		yes		yes			no
 | 
				
			||||||
lm_grant:		no		no			no
 | 
					lm_grant:		no		no			no
 | 
				
			||||||
lm_break:		yes		no			no
 | 
					lm_break:		yes		no			no
 | 
				
			||||||
lm_change		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 -----------------------------------
 | 
					--------------------------- buffer_head -----------------------------------
 | 
				
			||||||
prototypes:
 | 
					prototypes:
 | 
				
			||||||
	void (*b_end_io)(struct buffer_head *bh, int uptodate);
 | 
						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)
 | 
					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;
 | 
						return fl1->fl_owner == fl2->fl_owner;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -701,8 +698,6 @@ static void locks_delete_global_locks(struct file_lock *fl)
 | 
				
			||||||
static unsigned long
 | 
					static unsigned long
 | 
				
			||||||
posix_owner_key(struct file_lock *fl)
 | 
					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;
 | 
						return (unsigned long)fl->fl_owner;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1019,8 +1019,6 @@ struct file_lock_operations {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct lock_manager_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);
 | 
						fl_owner_t (*lm_get_owner)(fl_owner_t);
 | 
				
			||||||
	void (*lm_put_owner)(fl_owner_t);
 | 
						void (*lm_put_owner)(fl_owner_t);
 | 
				
			||||||
	void (*lm_notify)(struct file_lock *);	/* unblock callback */
 | 
						void (*lm_notify)(struct file_lock *);	/* unblock callback */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue