11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2003 Christoph Hellwig.
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	Released under GPL v2.
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/errno.h>
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/init.h>
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/kernel.h>
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/sysctl.h>
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "scsi_logging.h"
1244818efbad185eea75adad0e8cab97650a7370abAdrian Bunk#include "scsi_priv.h"
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ctl_table scsi_table[] = {
16894d2491153a9f8270dbed21175d06fde4eba6c7Eric W. Biederman	{ .procname	= "logging_level",
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .data		= &scsi_logging_level,
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .maxlen	= sizeof(scsi_logging_level),
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .mode		= 0644,
206d4561110a3e9fa742aeec6717248a491dfb1878Eric W. Biederman	  .proc_handler	= proc_dointvec },
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ }
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ctl_table scsi_dir_table[] = {
25894d2491153a9f8270dbed21175d06fde4eba6c7Eric W. Biederman	{ .procname	= "scsi",
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .mode		= 0555,
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .child	= scsi_table },
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ }
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ctl_table scsi_root_table[] = {
32894d2491153a9f8270dbed21175d06fde4eba6c7Eric W. Biederman	{ .procname	= "dev",
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .mode		= 0555,
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  .child	= scsi_dir_table },
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ }
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic struct ctl_table_header *scsi_table_header;
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint __init scsi_init_sysctl(void)
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
420b4d414714f0d2f922d39424b0c5c82ad900a381Eric W. Biederman	scsi_table_header = register_sysctl_table(scsi_root_table);
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	if (!scsi_table_header)
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		return -ENOMEM;
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	return 0;
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid scsi_exit_sysctl(void)
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unregister_sysctl_table(scsi_table_header);
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
52