From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Adamson Subject: [PATCH 9 of 10] lease interfaces for version 4 NFSD Date: Tue, 21 Sep 2004 18:36:21 -0400 Sender: linux-fsdevel-owner@vger.kernel.org Message-ID: <1095804047.21441d5b.9@citi.umich.edu> Cc: nfsv4@linux-nfs.org, willy@debian.org Return-path: Received: from thnk.citi.umich.edu ([141.211.133.95]:21637 "EHLO thnk.citi.umich.edu") by vger.kernel.org with ESMTP id S267235AbUIUWgx (ORCPT ); Tue, 21 Sep 2004 18:36:53 -0400 To: linux-fsdevel@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org VFS: export remove_lease(), an interface to time_out_leases() with an fl_break_time in the past. needed by nfsd Signed-off-by: Andy Adamson --- linux-2.6.9-rc2-andros/fs/locks.c | 20 ++++++++++++++++++++ linux-2.6.9-rc2-andros/include/linux/fs.h | 1 + 2 files changed, 21 insertions(+) diff -puN fs/locks.c~remove-lease fs/locks.c --- linux-2.6.9-rc2/fs/locks.c~remove-lease 2004-09-21 18:00:33.448882176 -0400 +++ linux-2.6.9-rc2-andros/fs/locks.c 2004-09-21 18:00:33.454881264 -0400 @@ -1088,6 +1088,26 @@ 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) +{ + if (!IS_LEASE(fl)) + return; + + lock_kernel(); + + fl->fl_type = F_UNLCK | F_INPROGRESS; + fl->fl_break_time = jiffies - 10; + time_out_leases(fl->fl_file->f_dentry->d_inode); + + unlock_kernel(); +} + +EXPORT_SYMBOL(remove_lease); + /** * __break_lease - revoke all outstanding leases on file * @inode: the inode of the file to return diff -puN include/linux/fs.h~remove-lease include/linux/fs.h --- linux-2.6.9-rc2/include/linux/fs.h~remove-lease 2004-09-21 18:00:33.450881872 -0400 +++ linux-2.6.9-rc2-andros/include/linux/fs.h 2004-09-21 18:00:33.455881112 -0400 @@ -702,6 +702,7 @@ extern int flock_lock_file_wait(struct f extern int __break_lease(struct inode *inode, unsigned int flags); extern void lease_get_mtime(struct inode *, struct timespec *time); extern int setlease(struct file *, long, struct file_lock **); +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); _