Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c994a09 authored by Jeff Layton's avatar Jeff Layton
Browse files

locks: consolidate "nolease" routines



GFS2 and NFS have setlease routines that always just return -EINVAL.
Turn that into a generic routine that can live in fs/libfs.c.

Cc: <linux-nfs@vger.kernel.org>
Cc: Steven Whitehouse <swhiteho@redhat.com>
Cc: <cluster-devel@redhat.com>
Signed-off-by: default avatarJeff Layton <jlayton@primarydata.com>
Acked-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 699688a4
Loading
Loading
Loading
Loading
+1 −21
Original line number Diff line number Diff line
@@ -912,26 +912,6 @@ static long gfs2_fallocate(struct file *file, int mode, loff_t offset,

#ifdef CONFIG_GFS2_FS_LOCKING_DLM

/**
 * gfs2_setlease - acquire/release a file lease
 * @file: the file pointer
 * @arg: lease type
 * @fl: file lock
 *
 * 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.
 *
 * Locking: called under i_lock
 *
 * Returns: errno
 */

static int gfs2_setlease(struct file *file, long arg, struct file_lock **fl)
{
	return -EINVAL;
}

/**
 * gfs2_lock - acquire/release a posix lock on a file
 * @file: the file pointer
@@ -1069,7 +1049,7 @@ const struct file_operations gfs2_file_fops = {
	.flock		= gfs2_flock,
	.splice_read	= generic_file_splice_read,
	.splice_write	= iter_file_splice_write,
	.setlease	= gfs2_setlease,
	.setlease	= simple_nosetlease,
	.fallocate	= gfs2_fallocate,
};

+16 −0
Original line number Diff line number Diff line
@@ -1075,3 +1075,19 @@ struct inode *alloc_anon_inode(struct super_block *s)
	return inode;
}
EXPORT_SYMBOL(alloc_anon_inode);

/**
 * simple_nosetlease - generic helper for prohibiting leases
 * @filp: file pointer
 * @arg: type of lease to obtain
 * @flp: new lease supplied for insertion
 *
 * Generic helper for filesystems that do not wish to allow leases to be set.
 * All arguments are ignored and it just returns -EINVAL.
 */
int
simple_nosetlease(struct file *filp, long arg, struct file_lock **flp)
{
	return -EINVAL;
}
EXPORT_SYMBOL(simple_nosetlease);
+1 −12
Original line number Diff line number Diff line
@@ -891,17 +891,6 @@ int nfs_flock(struct file *filp, int cmd, struct file_lock *fl)
}
EXPORT_SYMBOL_GPL(nfs_flock);

/*
 * There is no protocol support for leases, so we have no way to implement
 * them correctly in the face of opens by other clients.
 */
int nfs_setlease(struct file *file, long arg, struct file_lock **fl)
{
	dprintk("NFS: setlease(%pD2, arg=%ld)\n", file, arg);
	return -EINVAL;
}
EXPORT_SYMBOL_GPL(nfs_setlease);

const struct file_operations nfs_file_operations = {
	.llseek		= nfs_file_llseek,
	.read		= new_sync_read,
@@ -918,6 +907,6 @@ const struct file_operations nfs_file_operations = {
	.splice_read	= nfs_file_splice_read,
	.splice_write	= iter_file_splice_write,
	.check_flags	= nfs_check_flags,
	.setlease	= nfs_setlease,
	.setlease	= simple_nosetlease,
};
EXPORT_SYMBOL_GPL(nfs_file_operations);
+0 −1
Original line number Diff line number Diff line
@@ -346,7 +346,6 @@ int nfs_file_release(struct inode *, struct file *);
int nfs_lock(struct file *, int, struct file_lock *);
int nfs_flock(struct file *, int, struct file_lock *);
int nfs_check_flags(int);
int nfs_setlease(struct file *, long, struct file_lock **);

/* inode.c */
extern struct workqueue_struct *nfsiod_workqueue;
+1 −1
Original line number Diff line number Diff line
@@ -131,5 +131,5 @@ const struct file_operations nfs4_file_operations = {
	.splice_read	= nfs_file_splice_read,
	.splice_write	= iter_file_splice_write,
	.check_flags	= nfs_check_flags,
	.setlease	= nfs_setlease,
	.setlease	= simple_nosetlease,
};
Loading