Skip to content

Commit f30a6ea

Browse files
author
Trond Myklebust
committed
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 <[email protected]>
1 parent 75da985 commit f30a6ea

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

fs/nfs/namespace.c

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,3 +311,53 @@ int nfs_submount(struct fs_context *fc, struct nfs_server *server)
311311
return nfs_do_submount(fc);
312312
}
313313
EXPORT_SYMBOL_GPL(nfs_submount);
314+
315+
static int param_set_nfs_timeout(const char *val, const struct kernel_param *kp)
316+
{
317+
long num;
318+
int ret;
319+
320+
if (!val)
321+
return -EINVAL;
322+
ret = kstrtol(val, 0, &num);
323+
if (ret)
324+
return -EINVAL;
325+
if (num > 0) {
326+
if (num >= INT_MAX / HZ)
327+
num = INT_MAX;
328+
else
329+
num *= HZ;
330+
*((int *)kp->arg) = num;
331+
if (!list_empty(&nfs_automount_list))
332+
mod_delayed_work(system_wq, &nfs_automount_task, num);
333+
} else {
334+
*((int *)kp->arg) = -1*HZ;
335+
cancel_delayed_work(&nfs_automount_task);
336+
}
337+
return 0;
338+
}
339+
340+
static int param_get_nfs_timeout(char *buffer, const struct kernel_param *kp)
341+
{
342+
long num = *((int *)kp->arg);
343+
344+
if (num > 0) {
345+
if (num >= INT_MAX - (HZ - 1))
346+
num = INT_MAX / HZ;
347+
else
348+
num = (num + (HZ - 1)) / HZ;
349+
} else
350+
num = -1;
351+
return scnprintf(buffer, PAGE_SIZE, "%li\n", num);
352+
}
353+
354+
static const struct kernel_param_ops param_ops_nfs_timeout = {
355+
.set = param_set_nfs_timeout,
356+
.get = param_get_nfs_timeout,
357+
};
358+
#define param_check_nfs_timeout(name, p) __param_check(name, p, int);
359+
360+
module_param(nfs_mountpoint_expiry_timeout, nfs_timeout, 0644);
361+
MODULE_PARM_DESC(nfs_mountpoint_expiry_timeout,
362+
"Set the NFS automounted mountpoint timeout value (seconds)."
363+
"Values <= 0 turn expiration off.");

0 commit comments

Comments
 (0)