From: NeilBrown Get rid of remove_lease, use setlease() with F_UNLCK Signed-off-by: Andy Adamson Signed-off-by: J. Bruce Fields Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/fs/locks.c | 20 +------------------- 25-akpm/fs/nfsd/nfs4state.c | 3 +-- 25-akpm/include/linux/fs.h | 1 - 3 files changed, 2 insertions(+), 22 deletions(-) diff -puN fs/locks.c~nfsd4-eliminate-unnecessary-remove_lease fs/locks.c --- 25/fs/locks.c~nfsd4-eliminate-unnecessary-remove_lease 2005-03-07 23:56:06.000000000 -0800 +++ 25-akpm/fs/locks.c 2005-03-07 23:56:06.000000000 -0800 @@ -406,7 +406,7 @@ static void lease_release_private_callba fl->fl_file->f_owner.signum = 0; } -static int lease_mylease_callback(struct file_lock *fl, struct file_lock *try) +int lease_mylease_callback(struct file_lock *fl, struct file_lock *try) { return fl->fl_file == try->fl_file; } @@ -1099,24 +1099,6 @@ static void time_out_leases(struct inode } } - /** -* remove_lease - let time_out_leases remove the lease. -* @@file_lock: the lease to remove -*/ -void remove_lease(struct file_lock *fl) -{ - lock_kernel(); - if (!fl || !IS_LEASE(fl)) - goto out; - fl->fl_type = F_UNLCK | F_INPROGRESS; - fl->fl_break_time = jiffies - 10; - time_out_leases(fl->fl_file->f_dentry->d_inode); -out: - unlock_kernel(); -} - -EXPORT_SYMBOL(remove_lease); - /** * __break_lease - revoke all outstanding leases on file * @inode: the inode of the file to return diff -puN fs/nfsd/nfs4state.c~nfsd4-eliminate-unnecessary-remove_lease fs/nfsd/nfs4state.c --- 25/fs/nfsd/nfs4state.c~nfsd4-eliminate-unnecessary-remove_lease 2005-03-07 23:56:06.000000000 -0800 +++ 25-akpm/fs/nfsd/nfs4state.c 2005-03-07 23:56:06.000000000 -0800 @@ -194,7 +194,7 @@ nfs4_close_delegation(struct nfs4_delega dp->dl_vfs_file = NULL; /* The following nfsd_close may not actually close the file, * but we want to remove the lease in any case. */ - remove_lease(dp->dl_flock); + setlease(filp, F_UNLCK, &dp->dl_flock); nfsd_close(filp); vfsclose++; } @@ -1438,7 +1438,6 @@ struct lock_manager_operations nfsd_leas }; - /* * nfsd4_process_open1() * lookup stateowner. diff -puN include/linux/fs.h~nfsd4-eliminate-unnecessary-remove_lease include/linux/fs.h --- 25/include/linux/fs.h~nfsd4-eliminate-unnecessary-remove_lease 2005-03-07 23:56:06.000000000 -0800 +++ 25-akpm/include/linux/fs.h 2005-03-07 23:56:06.000000000 -0800 @@ -723,7 +723,6 @@ extern int __break_lease(struct inode *i extern void lease_get_mtime(struct inode *, struct timespec *time); extern int setlease(struct file *, long, struct file_lock **); extern int lease_modify(struct file_lock **, int); -extern void remove_lease(struct file_lock *); 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); extern void steal_locks(fl_owner_t from); _