18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Sysctl operations for Coda filesystem
48c2ecf20Sopenharmony_ci * Original version: (C) 1996 P. Braam and M. Callahan
58c2ecf20Sopenharmony_ci * Rewritten for Linux 2.1. (C) 1997 Carnegie Mellon University
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Carnegie Mellon encourages users to contribute improvements to
88c2ecf20Sopenharmony_ci * the Coda project. Contact Peter Braam (coda@cs.cmu.edu).
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/sysctl.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#include "coda_int.h"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cistatic struct ctl_table_header *fs_table_header;
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistatic struct ctl_table coda_table[] = {
188c2ecf20Sopenharmony_ci	{
198c2ecf20Sopenharmony_ci		.procname	= "timeout",
208c2ecf20Sopenharmony_ci		.data		= &coda_timeout,
218c2ecf20Sopenharmony_ci		.maxlen		= sizeof(int),
228c2ecf20Sopenharmony_ci		.mode		= 0644,
238c2ecf20Sopenharmony_ci		.proc_handler	= proc_dointvec
248c2ecf20Sopenharmony_ci	},
258c2ecf20Sopenharmony_ci	{
268c2ecf20Sopenharmony_ci		.procname	= "hard",
278c2ecf20Sopenharmony_ci		.data		= &coda_hard,
288c2ecf20Sopenharmony_ci		.maxlen		= sizeof(int),
298c2ecf20Sopenharmony_ci		.mode		= 0644,
308c2ecf20Sopenharmony_ci		.proc_handler	= proc_dointvec
318c2ecf20Sopenharmony_ci	},
328c2ecf20Sopenharmony_ci	{
338c2ecf20Sopenharmony_ci		.procname	= "fake_statfs",
348c2ecf20Sopenharmony_ci		.data		= &coda_fake_statfs,
358c2ecf20Sopenharmony_ci		.maxlen		= sizeof(int),
368c2ecf20Sopenharmony_ci		.mode		= 0600,
378c2ecf20Sopenharmony_ci		.proc_handler	= proc_dointvec
388c2ecf20Sopenharmony_ci	},
398c2ecf20Sopenharmony_ci	{}
408c2ecf20Sopenharmony_ci};
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_cistatic struct ctl_table fs_table[] = {
438c2ecf20Sopenharmony_ci	{
448c2ecf20Sopenharmony_ci		.procname	= "coda",
458c2ecf20Sopenharmony_ci		.mode		= 0555,
468c2ecf20Sopenharmony_ci		.child		= coda_table
478c2ecf20Sopenharmony_ci	},
488c2ecf20Sopenharmony_ci	{}
498c2ecf20Sopenharmony_ci};
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_civoid coda_sysctl_init(void)
528c2ecf20Sopenharmony_ci{
538c2ecf20Sopenharmony_ci	if ( !fs_table_header )
548c2ecf20Sopenharmony_ci		fs_table_header = register_sysctl_table(fs_table);
558c2ecf20Sopenharmony_ci}
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_civoid coda_sysctl_clean(void)
588c2ecf20Sopenharmony_ci{
598c2ecf20Sopenharmony_ci	if ( fs_table_header ) {
608c2ecf20Sopenharmony_ci		unregister_sysctl_table(fs_table_header);
618c2ecf20Sopenharmony_ci		fs_table_header = NULL;
628c2ecf20Sopenharmony_ci	}
638c2ecf20Sopenharmony_ci}
64