Skip to content

Commit

Permalink
gfs2: stop giving out non-cluster-coherent leases
Browse files Browse the repository at this point in the history
Since gfs2 can't prevent conflicting opens or leases on other nodes, we
probably shouldn't allow it to give out leases at all.

Put the newly defined lease operation into use in gfs2 by turning off
lease, unless we're using the "nolock' locking module (in which case all
locking is local anyway).

Signed-off-by: Marc Eshel <[email protected]>
Signed-off-by: J. Bruce Fields <[email protected]>
Cc: Steven Whitehouse <[email protected]>
  • Loading branch information
Marc Eshel authored and J. Bruce Fields committed Jul 18, 2007
1 parent 4698afe commit 6044606
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions fs/gfs2/ops_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,29 @@ static int gfs2_fsync(struct file *file, struct dentry *dentry, int datasync)
return ret;
}

/**
* gfs2_setlease - acquire/release a file lease
* @file: the file pointer
* @arg: lease type
* @fl: file lock
*
* Returns: errno
*/

static int gfs2_setlease(struct file *file, long arg, struct file_lock **fl)
{
struct gfs2_sbd *sdp = GFS2_SB(file->f_mapping->host);

/*
* 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 -EINVAL;
return setlease(file, arg, fl);
}

/**
* gfs2_lock - acquire/release a posix lock on a file
* @file: the file pointer
Expand Down Expand Up @@ -638,6 +661,7 @@ const struct file_operations gfs2_file_fops = {
.flock = gfs2_flock,
.splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write,
.setlease = gfs2_setlease,
};

const struct file_operations gfs2_dir_fops = {
Expand Down

0 comments on commit 6044606

Please sign in to comment.