From mboxrd@z Thu Jan 1 00:00:00 1970 From: "William A.(Andy) Adamson" Subject: PATCH [3/10] lease interfaces for version 4 NFSD Date: Mon, 20 Sep 2004 16:22:35 -0400 Sender: linux-fsdevel-owner@vger.kernel.org Message-ID: <20040920202235.A5CA21BBA3@citi.umich.edu> Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="==_Exmh_-4300446640" Cc: andros@citi.umich.edu Return-path: Received: from citi.umich.edu ([141.211.133.111]:12373 "EHLO citi.umich.edu") by vger.kernel.org with ESMTP id S267306AbUITUWi (ORCPT ); Mon, 20 Sep 2004 16:22:38 -0400 To: linux-fsdevel@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org This is a multipart MIME message. --==_Exmh_-4300446640 Content-Type: text/plain; charset=us-ascii VFS: add a lock manager break callback to break_lease() for lock manager to initiate breaking a lease. VFS: move the break_lease() kill_async() call to a default lock manager fl_break callback. Signed-off-by: Andy Adamson --==_Exmh_-4300446640 Content-Type: text/plain ; name="linux-2.6.9-rc2-03-lmops-break.dif"; charset=us-ascii Content-Description: linux-2.6.9-rc2-03-lmops-break.dif Content-Disposition: attachment; filename="linux-2.6.9-rc2-03-lmops-break.dif" diff --recursive -puN old/fs/locks.c new/fs/locks.c --- old/fs/locks.c 2004-09-20 13:02:25.528046000 -0400 +++ new/fs/locks.c 2004-09-20 15:40:07.512097000 -0400 @@ -389,6 +389,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) { @@ -1124,7 +1134,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 --recursive -puN old/include/linux/fs.h new/include/linux/fs.h --- old/include/linux/fs.h 2004-09-20 13:03:12.621416000 -0400 +++ new/include/linux/fs.h 2004-09-20 13:06:31.333998000 -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 */ --==_Exmh_-4300446640--