nfsd4: allow setting grace period time
Allow explicit configuration of the grace period time as well as the lease period time. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
f013574014
commit
efc4bb4fdd
@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
/* Globals */
|
/* Globals */
|
||||||
time_t nfsd4_lease = 90; /* default lease time */
|
time_t nfsd4_lease = 90; /* default lease time */
|
||||||
static time_t nfsd4_grace = 90;
|
time_t nfsd4_grace = 90;
|
||||||
static time_t boot_time;
|
static time_t boot_time;
|
||||||
static u32 current_ownerid = 1;
|
static u32 current_ownerid = 1;
|
||||||
static u32 current_fileid = 1;
|
static u32 current_fileid = 1;
|
||||||
|
@ -45,6 +45,7 @@ enum {
|
|||||||
*/
|
*/
|
||||||
#ifdef CONFIG_NFSD_V4
|
#ifdef CONFIG_NFSD_V4
|
||||||
NFSD_Leasetime,
|
NFSD_Leasetime,
|
||||||
|
NFSD_Gracetime,
|
||||||
NFSD_RecoveryDir,
|
NFSD_RecoveryDir,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@ -69,6 +70,7 @@ static ssize_t write_ports(struct file *file, char *buf, size_t size);
|
|||||||
static ssize_t write_maxblksize(struct file *file, char *buf, size_t size);
|
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 write_leasetime(struct file *file, char *buf, size_t size);
|
||||||
|
static ssize_t write_gracetime(struct file *file, char *buf, size_t size);
|
||||||
static ssize_t write_recoverydir(struct file *file, char *buf, size_t size);
|
static ssize_t write_recoverydir(struct file *file, char *buf, size_t size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -90,6 +92,7 @@ static ssize_t (*write_op[])(struct file *, char *, size_t) = {
|
|||||||
[NFSD_MaxBlkSize] = write_maxblksize,
|
[NFSD_MaxBlkSize] = write_maxblksize,
|
||||||
#ifdef CONFIG_NFSD_V4
|
#ifdef CONFIG_NFSD_V4
|
||||||
[NFSD_Leasetime] = write_leasetime,
|
[NFSD_Leasetime] = write_leasetime,
|
||||||
|
[NFSD_Gracetime] = write_gracetime,
|
||||||
[NFSD_RecoveryDir] = write_recoverydir,
|
[NFSD_RecoveryDir] = write_recoverydir,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@ -1261,6 +1264,21 @@ static ssize_t write_leasetime(struct file *file, char *buf, size_t size)
|
|||||||
return nfsd4_write_time(file, buf, size, &nfsd4_lease);
|
return nfsd4_write_time(file, buf, size, &nfsd4_lease);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* write_gracetime - Set or report current NFSv4 grace period time
|
||||||
|
*
|
||||||
|
* As above, but sets the time of the NFSv4 grace period.
|
||||||
|
*
|
||||||
|
* Note this should never be set to less than the *previous*
|
||||||
|
* lease-period time, but we don't try to enforce this. (In the common
|
||||||
|
* case (a new boot), we don't know what the previous lease time was
|
||||||
|
* anyway.)
|
||||||
|
*/
|
||||||
|
static ssize_t write_gracetime(struct file *file, char *buf, size_t size)
|
||||||
|
{
|
||||||
|
return nfsd4_write_time(file, buf, size, &nfsd4_grace);
|
||||||
|
}
|
||||||
|
|
||||||
extern char *nfs4_recoverydir(void);
|
extern char *nfs4_recoverydir(void);
|
||||||
|
|
||||||
static ssize_t __write_recoverydir(struct file *file, char *buf, size_t size)
|
static ssize_t __write_recoverydir(struct file *file, char *buf, size_t size)
|
||||||
@ -1352,6 +1370,7 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
|
|||||||
[NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO},
|
[NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO},
|
||||||
#ifdef CONFIG_NFSD_V4
|
#ifdef CONFIG_NFSD_V4
|
||||||
[NFSD_Leasetime] = {"nfsv4leasetime", &transaction_ops, S_IWUSR|S_IRUSR},
|
[NFSD_Leasetime] = {"nfsv4leasetime", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||||
|
[NFSD_Gracetime] = {"nfsv4gracetime", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||||
[NFSD_RecoveryDir] = {"nfsv4recoverydir", &transaction_ops, S_IWUSR|S_IRUSR},
|
[NFSD_RecoveryDir] = {"nfsv4recoverydir", &transaction_ops, S_IWUSR|S_IRUSR},
|
||||||
#endif
|
#endif
|
||||||
/* last one */ {""}
|
/* last one */ {""}
|
||||||
|
@ -228,6 +228,7 @@ extern struct timeval nfssvc_boot;
|
|||||||
#ifdef CONFIG_NFSD_V4
|
#ifdef CONFIG_NFSD_V4
|
||||||
|
|
||||||
extern time_t nfsd4_lease;
|
extern time_t nfsd4_lease;
|
||||||
|
extern time_t nfsd4_grace;
|
||||||
|
|
||||||
/* before processing a COMPOUND operation, we have to check that there
|
/* before processing a COMPOUND operation, we have to check that there
|
||||||
* is enough space in the buffer for XDR encode to succeed. otherwise,
|
* is enough space in the buffer for XDR encode to succeed. otherwise,
|
||||||
|
Loading…
Reference in New Issue
Block a user