From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Adamson Subject: [PATCH 7 of 10] RESEND lease interfaces for version 4 NFSD Date: Tue, 21 Sep 2004 18:36:11 -0400 Sender: linux-fsdevel-owner@vger.kernel.org Message-ID: <1095804047.21441d5b.7@citi.umich.edu> Cc: nfsv4@linux-nfs.org, willy@debian.org Return-path: Received: from thnk.citi.umich.edu ([141.211.133.95]:19589 "EHLO thnk.citi.umich.edu") by vger.kernel.org with ESMTP id S266870AbUIUWgm (ORCPT ); Tue, 21 Sep 2004 18:36:42 -0400 To: linux-fsdevel@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org VFS: use the inode i_writecount to test for handing out a F_RDLCK lease. Signed-off-by: Andy Adamson --- linux-2.6.9-rc2-andros/fs/locks.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff -puN fs/locks.c~setlease-fixme fs/locks.c --- linux-2.6.9-rc2/fs/locks.c~setlease-fixme 2004-09-21 18:00:30.770289384 -0400 +++ linux-2.6.9-rc2-andros/fs/locks.c 2004-09-21 18:00:30.774288776 -0400 @@ -1278,10 +1278,9 @@ int __setlease(struct file *filp, long a if (!flp || !(*flp) || !(*flp)->fl_lmops || !(*flp)->fl_lmops->fl_break) goto out; - /* - * FIXME: What about F_RDLCK and files open for writing? - */ error = -EAGAIN; + if ((arg == F_RDLCK) && (atomic_read(&inode->i_writecount) > 0)) + goto out; if ((arg == F_WRLCK) && ((atomic_read(&dentry->d_count) > 1) || (atomic_read(&inode->i_count) > 1))) _