1
0
Fork 0

nfsd4: reshuffle lease-setting code to allow reuse

We'll soon allow setting the grace period, so we'll want to share this
code.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
hifive-unleashed-5.1
J. Bruce Fields 2010-03-01 19:32:36 -05:00
parent f958a1320f
commit f013574014
1 changed files with 17 additions and 12 deletions

View File

@ -1203,26 +1203,36 @@ static ssize_t write_maxblksize(struct file *file, char *buf, size_t size)
} }
#ifdef CONFIG_NFSD_V4 #ifdef CONFIG_NFSD_V4
static ssize_t __write_leasetime(struct file *file, char *buf, size_t size) static ssize_t __nfsd4_write_time(struct file *file, char *buf, size_t size, time_t *time)
{ {
/* if size > 10 seconds, call /* if size > 10 seconds, call
* nfs4_reset_lease() then write out the new lease (seconds) as reply * nfs4_reset_lease() then write out the new lease (seconds) as reply
*/ */
char *mesg = buf; char *mesg = buf;
int rv, lease; int rv, i;
if (size > 0) { if (size > 0) {
if (nfsd_serv) if (nfsd_serv)
return -EBUSY; return -EBUSY;
rv = get_int(&mesg, &lease); rv = get_int(&mesg, &i);
if (rv) if (rv)
return rv; return rv;
if (lease < 10 || lease > 3600) if (i < 10 || i > 3600)
return -EINVAL; return -EINVAL;
nfsd4_lease = lease; *time = i;
} }
return scnprintf(buf, SIMPLE_TRANSACTION_LIMIT, "%ld\n", nfsd4_lease); return scnprintf(buf, SIMPLE_TRANSACTION_LIMIT, "%ld\n", *time);
}
static ssize_t nfsd4_write_time(struct file *file, char *buf, size_t size, time_t *time)
{
ssize_t rv;
mutex_lock(&nfsd_mutex);
rv = __nfsd4_write_time(file, buf, size, time);
mutex_unlock(&nfsd_mutex);
return rv;
} }
/** /**
@ -1248,12 +1258,7 @@ static ssize_t __write_leasetime(struct file *file, char *buf, size_t size)
*/ */
static ssize_t write_leasetime(struct file *file, char *buf, size_t size) static ssize_t write_leasetime(struct file *file, char *buf, size_t size)
{ {
ssize_t rv; return nfsd4_write_time(file, buf, size, &nfsd4_lease);
mutex_lock(&nfsd_mutex);
rv = __write_leasetime(file, buf, size);
mutex_unlock(&nfsd_mutex);
return rv;
} }
extern char *nfs4_recoverydir(void); extern char *nfs4_recoverydir(void);