Commit 67db781f authored by William A. Adamson's avatar William A. Adamson Committed by Linus Torvalds

[PATCH] nfs4 lease: add a lock manager break callback

- Add a lock manager break callback to break_lease() for lock managers to
  initiate breaking a lease.

- Move the break_lease() kill_fasync() call to a default lock manager
  fl_break callback
Signed-off-by: default avatarAndy Adamson <andros@citi.umich.edu>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6a0ddd15
......@@ -391,6 +391,16 @@ static int flock64_to_posix_lock(struct file *filp, struct file_lock *fl,
}
#endif
/* default lease lock manager operations */
static void lease_break_callback(struct file_lock *fl)
{
kill_fasync(&fl->fl_fasync, SIGIO, POLL_MSG);
}
struct lock_manager_operations lease_manager_ops = {
.fl_break = lease_break_callback,
};
/* Allocate a file_lock initialised to this type of lease */
static int lease_alloc(struct file *filp, int type, struct file_lock **flp)
{
......@@ -1127,7 +1137,10 @@ int __break_lease(struct inode *inode, unsigned int mode)
if (fl->fl_type != future) {
fl->fl_type = future;
fl->fl_break_time = break_time;
kill_fasync(&fl->fl_fasync, SIGIO, POLL_MSG);
if (fl->fl_lmops && fl->fl_lmops->fl_break)
fl->fl_lmops->fl_break(fl);
else /* lease must have lmops break callback */
BUG();
}
}
......
......@@ -635,6 +635,7 @@ struct lock_manager_operations {
void (*fl_notify)(struct file_lock *); /* unblock callback */
void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
void (*fl_release_private)(struct file_lock *);
void (*fl_break)(struct file_lock *);
};
/* that will die - we need it for nfs_lock_info */
......
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