NFS: Add a module parameter to set nfs_mountpoint_expiry_timeout
Setting nfs_mountpoint_expiry_timeout() to a negative value stops mountpoint expiration, while setting it to a positive value restarts the scheduler. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
75da98586a
commit
f30a6ea0f3
|
@ -311,3 +311,53 @@ int nfs_submount(struct fs_context *fc, struct nfs_server *server)
|
|||
return nfs_do_submount(fc);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_submount);
|
||||
|
||||
static int param_set_nfs_timeout(const char *val, const struct kernel_param *kp)
|
||||
{
|
||||
long num;
|
||||
int ret;
|
||||
|
||||
if (!val)
|
||||
return -EINVAL;
|
||||
ret = kstrtol(val, 0, &num);
|
||||
if (ret)
|
||||
return -EINVAL;
|
||||
if (num > 0) {
|
||||
if (num >= INT_MAX / HZ)
|
||||
num = INT_MAX;
|
||||
else
|
||||
num *= HZ;
|
||||
*((int *)kp->arg) = num;
|
||||
if (!list_empty(&nfs_automount_list))
|
||||
mod_delayed_work(system_wq, &nfs_automount_task, num);
|
||||
} else {
|
||||
*((int *)kp->arg) = -1*HZ;
|
||||
cancel_delayed_work(&nfs_automount_task);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int param_get_nfs_timeout(char *buffer, const struct kernel_param *kp)
|
||||
{
|
||||
long num = *((int *)kp->arg);
|
||||
|
||||
if (num > 0) {
|
||||
if (num >= INT_MAX - (HZ - 1))
|
||||
num = INT_MAX / HZ;
|
||||
else
|
||||
num = (num + (HZ - 1)) / HZ;
|
||||
} else
|
||||
num = -1;
|
||||
return scnprintf(buffer, PAGE_SIZE, "%li\n", num);
|
||||
}
|
||||
|
||||
static const struct kernel_param_ops param_ops_nfs_timeout = {
|
||||
.set = param_set_nfs_timeout,
|
||||
.get = param_get_nfs_timeout,
|
||||
};
|
||||
#define param_check_nfs_timeout(name, p) __param_check(name, p, int);
|
||||
|
||||
module_param(nfs_mountpoint_expiry_timeout, nfs_timeout, 0644);
|
||||
MODULE_PARM_DESC(nfs_mountpoint_expiry_timeout,
|
||||
"Set the NFS automounted mountpoint timeout value (seconds)."
|
||||
"Values <= 0 turn expiration off.");
|
||||
|
|
Loading…
Reference in New Issue