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. */
next prev parent 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