public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Staubach <staubach@redhat.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] allow file system to configure for no leases
Date: Tue, 05 Jun 2007 15:50:43 -0400	[thread overview]
Message-ID: <4665BE93.8000705@redhat.com> (raw)
In-Reply-To: <1181072000.7033.31.camel@heimdal.trondhjem.org>

[-- Attachment #1: Type: text/plain, Size: 1458 bytes --]

Trond Myklebust wrote:
> On Tue, 2007-06-05 at 15:10 -0400, Peter Staubach wrote:
>   
>> Hi.
>>
>> Attached is a small patch to allow file systems to inform the file
>> system independent layers that they don't support file leases.
>>
>> The problem is that some file system such as NFSv2 and NFSv3 do
>> not have sufficient support to be able to support leases correctly.
>> In particular for these two file systems, there is no over the wire
>> protocol support.
>>
>> Currently, these two file systems fail the fcntl(F_SETLEASE) call
>> accidently, due to a reference counting difference.  These file systems
>> should fail more consciously, with a proper error to indicate that
>> the call is invalid for them.
>>
>>     Thanx...
>>
>>        ps
>> plain text document attachment (devel.tototoday)
>> --- linux-2.6.21.i686/fs/nfs/super.c.org
>> +++ linux-2.6.21.i686/fs/nfs/super.c
>> @@ -522,6 +522,9 @@ static inline void nfs_initialise_sb(str
>>  
>>  	sb->s_magic = NFS_SUPER_MAGIC;
>>  
>> +	if (server->nfs_client->cl_nfsversion < 4)
>> +		sb->s_flags |= MS_NO_LEASES;
>> +
>>     
>
> This should be unconditional since we have no support for "lease locks"
> under NFSv4 either. The NFSv4 concept of leases and delegations is very
> different, since it is really tied to the ability to cache data.

No problem.  I wasn't sure, what with the changes that Bruce Fields
is constructing.

Attached is the simplified version.

    Thanx...

       ps

[-- Attachment #2: leases.devel --]
[-- Type: text/plain, Size: 1535 bytes --]

--- linux-2.6.21.i686/fs/nfs/super.c.org
+++ linux-2.6.21.i686/fs/nfs/super.c
@@ -522,6 +522,8 @@ static inline void nfs_initialise_sb(str
 
 	sb->s_magic = NFS_SUPER_MAGIC;
 
+	sb->s_flags |= MS_NO_LEASES;
+
 	/* We probably want something more informative here */
 	snprintf(sb->s_id, sizeof(sb->s_id),
 		 "%x:%x", MAJOR(sb->s_dev), MINOR(sb->s_dev));
--- linux-2.6.21.i686/fs/locks.c.org
+++ linux-2.6.21.i686/fs/locks.c
@@ -1493,6 +1493,8 @@ int fcntl_setlease(unsigned int fd, stru
 	error = security_file_lock(filp, arg);
 	if (error)
 		return error;
+	if (IS_NO_LEASES(inode))
+		return -EINVAL;
 
 	locks_init_lock(&fl);
 	error = lease_init(filp, arg, &fl);
--- linux-2.6.21.i686/include/linux/fs.h.org
+++ linux-2.6.21.i686/include/linux/fs.h
@@ -121,6 +121,7 @@ extern int dir_notify_enable;
 #define MS_SLAVE	(1<<19)	/* change to slave */
 #define MS_SHARED	(1<<20)	/* change to shared */
 #define MS_RELATIME	(1<<21)	/* Update atime relative to mtime/ctime. */
+#define MS_NO_LEASES	(1<<22)	/* fs does not support leases */
 #define MS_ACTIVE	(1<<30)
 #define MS_NOUSER	(1<<31)
 
@@ -180,6 +181,7 @@ extern int dir_notify_enable;
 #define IS_NOCMTIME(inode)	((inode)->i_flags & S_NOCMTIME)
 #define IS_SWAPFILE(inode)	((inode)->i_flags & S_SWAPFILE)
 #define IS_PRIVATE(inode)	((inode)->i_flags & S_PRIVATE)
+#define IS_NO_LEASES(inode)	__IS_FLG(inode, MS_NO_LEASES)
 
 /* the read-only stuff doesn't really belong here, but any other place is
    probably as bad and I don't want to create yet another include file. */

  reply	other threads:[~2007-06-05 19:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-05 19:10 [PATCH] allow file system to configure for no leases Peter Staubach
2007-06-05 19:33 ` Trond Myklebust
2007-06-05 19:50   ` Peter Staubach [this message]
2007-06-06 13:26     ` Peter Staubach

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4665BE93.8000705@redhat.com \
    --to=staubach@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=trond.myklebust@fys.uio.no \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox