projects/linux·blob master · refs

65 lines · 1.6 KiB

1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/fs/fuse/fuse_sysctl.c
4 *
5 * Sysctl interface to fuse parameters
6 */
7#include <linux/sysctl.h>
8
9#include "sysctl.h"
10#include "fuse_i.h"
11
12static struct ctl_table_header *fuse_table_header;
13
14/* Bound by fuse_init_out max_pages, which is a u16 */
15static unsigned int sysctl_fuse_max_pages_limit = 65535;
16
17/*
18 * fuse_init_out request timeouts are u16.
19 * This goes up to ~18 hours, which is plenty for a timeout.
20 */
21static unsigned int sysctl_fuse_req_timeout_limit = 65535;
22
23static const struct ctl_table fuse_sysctl_table[] = {
24 {
25 .procname = "max_pages_limit",
26 .data = &fuse_max_pages_limit,
27 .maxlen = sizeof(fuse_max_pages_limit),
28 .mode = 0644,
29 .proc_handler = proc_douintvec_minmax,
30 .extra1 = SYSCTL_ONE,
31 .extra2 = &sysctl_fuse_max_pages_limit,
32 },
33 {
34 .procname = "default_request_timeout",
35 .data = &fuse_default_req_timeout,
36 .maxlen = sizeof(fuse_default_req_timeout),
37 .mode = 0644,
38 .proc_handler = proc_douintvec_minmax,
39 .extra1 = SYSCTL_ZERO,
40 .extra2 = &sysctl_fuse_req_timeout_limit,
41 },
42 {
43 .procname = "max_request_timeout",
44 .data = &fuse_max_req_timeout,
45 .maxlen = sizeof(fuse_max_req_timeout),
46 .mode = 0644,
47 .proc_handler = proc_douintvec_minmax,
48 .extra1 = SYSCTL_ZERO,
49 .extra2 = &sysctl_fuse_req_timeout_limit,
50 },
51};
52
53int fuse_sysctl_register(void)
54{
55 fuse_table_header = register_sysctl("fs/fuse", fuse_sysctl_table);
56 if (!fuse_table_header)
57 return -ENOMEM;
58 return 0;
59}
60
61void fuse_sysctl_unregister(void)
62{
63 unregister_sysctl_table(fuse_table_header);
64 fuse_table_header = NULL;
65}