summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam A. Adamson <andros@thnk.citi.umich.edu>2004-10-19 18:45:19 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-10-19 18:45:19 -0700
commit1cb697f8418561df220a3c68a9ffc68771ee5204 (patch)
treee8f7655241f76f92672811d57914cae58572211d
parentd744ecf3d4b0ba6f3e13b5ae07087f44d6be6f7b (diff)
[PATCH] nfs4 lease: export remove_lease
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 <andros@citi.umich.edu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/locks.c20
-rw-r--r--include/linux/fs.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/fs/locks.c b/fs/locks.c
index 43ced9dee14c..fd6e88bb9890 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1090,6 +1090,26 @@ static void time_out_leases(struct inode *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 --git a/include/linux/fs.h b/include/linux/fs.h
index b6569ec04ff4..4a9463c662ed 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -702,6 +702,7 @@ extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl);
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);