On Fri, Jun 29, 2007 at 11:30:27PM +0100, Steven Whitehouse wrote: > EINVAL is fine by me, just so long as its not EAGAIN then it gets my > blessing :-) OK. I've changed the error return, in both the NFS and GFS2 cases, did some minor cleanup and commenting while I was at it, and pushed the results out to "for-mm": git://linux-nfs.org/~bfields/linux.git for-mm --b. diff --git a/fs/gfs2/ops_file.c b/fs/gfs2/ops_file.c index e34d9bd..29a86fe 100644 --- a/fs/gfs2/ops_file.c +++ b/fs/gfs2/ops_file.c @@ -500,17 +500,15 @@ static int gfs2_fsync(struct file *file, struct dentry *dentry, int datasync) static int gfs2_setlease(struct file *file, long arg, struct file_lock **fl) { struct gfs2_sbd *sdp = GFS2_SB(file->f_mapping->host); - int ret = -EOPNOTSUPP; - if (sdp->sd_args.ar_localflocks) { + /* + * We don't currently have a way to enforce a lease across the whole + * cluster; until we do, disable leases (by just returning -EINVAL), + * unless the administrator has requested purely local locking. + */ + if (sdp->sd_args.ar_localflocks) return setlease(file, arg, fl); - } - - /* For now fail the delegation request. Cluster file system can not - allow any node in the cluster to get a local lease until it can - be managed centrally by the cluster file system. - */ - return ret; + return -EINVAL; } /** diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 97c1a3d..d92a383 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -560,5 +560,10 @@ static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl) static int nfs_setlease(struct file *file, long arg, struct file_lock **fl) { - return -EOPNOTSUPP; + /* + * There is no protocol support for leases, so we have no way + * to implement them correctly in the face of opens by other + * clients. + */ + return -EINVAL; } - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html