From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Adamson Subject: [PATCH 3 of 10] RESEND lease interfaces for version 4 NFSD Date: Tue, 21 Sep 2004 18:35:50 -0400 Sender: linux-fsdevel-owner@vger.kernel.org Message-ID: <1095804047.21441d5b.3@citi.umich.edu> Cc: nfsv4@linux-nfs.org, willy@debian.org Return-path: Received: from thnk.citi.umich.edu ([141.211.133.95]:15493 "EHLO thnk.citi.umich.edu") by vger.kernel.org with ESMTP id S266703AbUIUWgU (ORCPT ); Tue, 21 Sep 2004 18:36:20 -0400 To: linux-fsdevel@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org VFS: add a lock manager break callback to break_lease() for lock managers to initiate breaking a lease. VFS: move the break_lease() kill_fasync() call to a default lock manager fl_break callback Signed-off-by: Andy Adamson --- linux-2.6.9-rc2-andros/fs/locks.c | 15 ++++++++++++++- linux-2.6.9-rc2-andros/include/linux/fs.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff -puN fs/locks.c~lmops-break fs/locks.c --- linux-2.6.9-rc2/fs/locks.c~lmops-break 2004-09-21 18:00:24.902181472 -0400 +++ linux-2.6.9-rc2-andros/fs/locks.c 2004-09-21 18:00:24.909180408 -0400 @@ -390,6 +390,16 @@ static int flock64_to_posix_lock(struct } #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) { @@ -1125,7 +1135,10 @@ int __break_lease(struct inode *inode, u 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(); } } diff -puN include/linux/fs.h~lmops-break include/linux/fs.h --- linux-2.6.9-rc2/include/linux/fs.h~lmops-break 2004-09-21 18:00:24.904181168 -0400 +++ linux-2.6.9-rc2-andros/include/linux/fs.h 2004-09-21 18:00:24.910180256 -0400 @@ -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 */ _