Commit 9de88958 authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Linus Torvalds

[PATCH] rename get_lease to break_lease

Al pointed out that the current name of get_lease is extremely confusing
and I agree.

This (a) renames it to break_lease and (b) fixes a bug noticed by Dave
Hansen which could cause a NULL pointer dereference under high load.
parent a879e2fd
......@@ -994,16 +994,16 @@ static void time_out_leases(struct inode *inode)
}
/**
* __get_lease - revoke all outstanding leases on file
* __break_lease - revoke all outstanding leases on file
* @inode: the inode of the file to return
* @mode: the open mode (read or write)
*
* get_lease (inlined for speed) has checked there already
* break_lease (inlined for speed) has checked there already
* is a lease on this file. Leases are broken on a call to open()
* or truncate(). This function can sleep unless you
* specified %O_NONBLOCK to your open().
*/
int __get_lease(struct inode *inode, unsigned int mode)
int __break_lease(struct inode *inode, unsigned int mode)
{
int error = 0, future;
struct file_lock *new_fl, *flock;
......
......@@ -1183,7 +1183,7 @@ int may_open(struct nameidata *nd, int acc_mode, int flag)
/*
* Ensure there are no outstanding leases on the file.
*/
error = get_lease(inode, flag);
error = break_lease(inode, flag);
if (error)
return error;
......
......@@ -259,7 +259,7 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap,
* If we are changing the size of the file, then
* we need to break all leases.
*/
err = get_lease(inode, FMODE_WRITE);
err = break_lease(inode, FMODE_WRITE);
if (err)
goto out_nfserr;
......@@ -453,7 +453,7 @@ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
* Check to see if there are any leases on this file.
* This may block while leases are broken.
*/
err = get_lease(inode, (access & MAY_WRITE) ? FMODE_WRITE : 0);
err = break_lease(inode, (access & MAY_WRITE) ? FMODE_WRITE : 0);
if (err)
goto out_nfserr;
......
......@@ -131,7 +131,7 @@ static inline long do_sys_truncate(const char * path, loff_t length)
/*
* Make sure that there are no leases.
*/
error = get_lease(inode, FMODE_WRITE);
error = break_lease(inode, FMODE_WRITE);
if (error)
goto dput_and_out;
......
......@@ -578,7 +578,7 @@ extern int posix_lock_file(struct file *, struct file_lock *);
extern void posix_block_lock(struct file_lock *, struct file_lock *);
extern void posix_unblock_lock(struct file *, struct file_lock *);
extern int posix_locks_deadlock(struct file_lock *, struct file_lock *);
extern int __get_lease(struct inode *inode, unsigned int flags);
extern int __break_lease(struct inode *inode, unsigned int flags);
extern void lease_get_mtime(struct inode *, struct timespec *time);
extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
......@@ -1052,10 +1052,10 @@ static inline int locks_verify_truncate(struct inode *inode,
return 0;
}
static inline int get_lease(struct inode *inode, unsigned int mode)
static inline int break_lease(struct inode *inode, unsigned int mode)
{
if (inode->i_flock && (inode->i_flock->fl_flags & FL_LEASE))
return __get_lease(inode, mode);
if (inode->i_flock)
return __break_lease(inode, mode);
return 0;
}
......
......@@ -287,7 +287,7 @@ EXPORT_SYMBOL(page_follow_link);
EXPORT_SYMBOL(page_symlink_inode_operations);
EXPORT_SYMBOL(page_symlink);
EXPORT_SYMBOL(vfs_readdir);
EXPORT_SYMBOL(__get_lease);
EXPORT_SYMBOL(__break_lease);
EXPORT_SYMBOL(lease_get_mtime);
EXPORT_SYMBOL(lock_may_read);
EXPORT_SYMBOL(lock_may_write);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment