forked from Minki/linux
scsi/sg: move sg-big-buff sysctl to scsi/sg.c
kernel/sysctl.c is a kitchen sink where everyone leaves their dirty dishes, this makes it very difficult to maintain. To help with this maintenance let's start by moving sysctls to places where they actually belong. The proc sysctl maintainers do not want to know what sysctl knobs you wish to add for your own piece of code, we just care about the core logic. So move the sg-big-buff sysctl from kernel/sysctl.c to drivers/scsi/sg.c and use register_sysctl() to register the sysctl interface. [mcgrof@kernel.org: commit log update] Link: https://lkml.kernel.org/r/20211124231435.1445213-7-mcgrof@kernel.org Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Amir Goldstein <amir73il@gmail.com> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Antti Palosaari <crope@iki.fi> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Benjamin LaHaise <bcrl@kvack.org> Cc: Clemens Ladisch <clemens@ladisch.de> Cc: David Airlie <airlied@linux.ie> Cc: Douglas Gilbert <dgilbert@interlog.com> Cc: Eric Biederman <ebiederm@xmission.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Iurii Zaikin <yzaikin@google.com> Cc: James E.J. Bottomley <jejb@linux.ibm.com> Cc: Jani Nikula <jani.nikula@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Jan Kara <jack@suse.cz> Cc: Joel Becker <jlbec@evilplan.org> Cc: John Ogness <john.ogness@linutronix.de> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Joseph Qi <joseph.qi@linux.alibaba.com> Cc: Julia Lawall <julia.lawall@inria.fr> Cc: Kees Cook <keescook@chromium.org> Cc: Lukas Middendorf <kernel@tuxforce.de> Cc: Mark Fasheh <mark@fasheh.com> Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Paul Turner <pjt@google.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Petr Mladek <pmladek@suse.com> Cc: Phillip Potter <phil@philpotter.co.uk> Cc: Qing Wang <wangqing@vivo.com> Cc: "Rafael J. Wysocki" <rafael@kernel.org> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Sebastian Reichel <sre@kernel.org> Cc: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: Stephen Kitt <steve@sk2.org> Cc: Steven Rostedt (VMware) <rostedt@goodmis.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
faaa357a55
commit
26d1c80fd6
@ -77,7 +77,7 @@ static int sg_proc_init(void);
|
|||||||
|
|
||||||
#define SG_DEFAULT_TIMEOUT mult_frac(SG_DEFAULT_TIMEOUT_USER, HZ, USER_HZ)
|
#define SG_DEFAULT_TIMEOUT mult_frac(SG_DEFAULT_TIMEOUT_USER, HZ, USER_HZ)
|
||||||
|
|
||||||
int sg_big_buff = SG_DEF_RESERVED_SIZE;
|
static int sg_big_buff = SG_DEF_RESERVED_SIZE;
|
||||||
/* N.B. This variable is readable and writeable via
|
/* N.B. This variable is readable and writeable via
|
||||||
/proc/scsi/sg/def_reserved_size . Each time sg_open() is called a buffer
|
/proc/scsi/sg/def_reserved_size . Each time sg_open() is called a buffer
|
||||||
of this size (or less if there is not enough memory) will be reserved
|
of this size (or less if there is not enough memory) will be reserved
|
||||||
@ -1634,6 +1634,37 @@ MODULE_PARM_DESC(scatter_elem_sz, "scatter gather element "
|
|||||||
MODULE_PARM_DESC(def_reserved_size, "size of buffer reserved for each fd");
|
MODULE_PARM_DESC(def_reserved_size, "size of buffer reserved for each fd");
|
||||||
MODULE_PARM_DESC(allow_dio, "allow direct I/O (default: 0 (disallow))");
|
MODULE_PARM_DESC(allow_dio, "allow direct I/O (default: 0 (disallow))");
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSCTL
|
||||||
|
#include <linux/sysctl.h>
|
||||||
|
|
||||||
|
static struct ctl_table sg_sysctls[] = {
|
||||||
|
{
|
||||||
|
.procname = "sg-big-buff",
|
||||||
|
.data = &sg_big_buff,
|
||||||
|
.maxlen = sizeof(int),
|
||||||
|
.mode = 0444,
|
||||||
|
.proc_handler = proc_dointvec,
|
||||||
|
},
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct ctl_table_header *hdr;
|
||||||
|
static void register_sg_sysctls(void)
|
||||||
|
{
|
||||||
|
if (!hdr)
|
||||||
|
hdr = register_sysctl("kernel", sg_sysctls);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void unregister_sg_sysctls(void)
|
||||||
|
{
|
||||||
|
if (hdr)
|
||||||
|
unregister_sysctl_table(hdr);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define register_sg_sysctls() do { } while (0)
|
||||||
|
#define unregister_sg_sysctls() do { } while (0)
|
||||||
|
#endif /* CONFIG_SYSCTL */
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
init_sg(void)
|
init_sg(void)
|
||||||
{
|
{
|
||||||
@ -1666,6 +1697,7 @@ init_sg(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
class_destroy(sg_sysfs_class);
|
class_destroy(sg_sysfs_class);
|
||||||
|
register_sg_sysctls();
|
||||||
err_out:
|
err_out:
|
||||||
unregister_chrdev_region(MKDEV(SCSI_GENERIC_MAJOR, 0), SG_MAX_DEVS);
|
unregister_chrdev_region(MKDEV(SCSI_GENERIC_MAJOR, 0), SG_MAX_DEVS);
|
||||||
return rc;
|
return rc;
|
||||||
@ -1674,6 +1706,7 @@ err_out:
|
|||||||
static void __exit
|
static void __exit
|
||||||
exit_sg(void)
|
exit_sg(void)
|
||||||
{
|
{
|
||||||
|
unregister_sg_sysctls();
|
||||||
#ifdef CONFIG_SCSI_PROC_FS
|
#ifdef CONFIG_SCSI_PROC_FS
|
||||||
remove_proc_subtree("scsi/sg", NULL);
|
remove_proc_subtree("scsi/sg", NULL);
|
||||||
#endif /* CONFIG_SCSI_PROC_FS */
|
#endif /* CONFIG_SCSI_PROC_FS */
|
||||||
|
@ -29,10 +29,6 @@
|
|||||||
* For utility and test programs see: http://sg.danny.cz/sg/sg3_utils.html
|
* For utility and test programs see: http://sg.danny.cz/sg/sg3_utils.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
extern int sg_big_buff; /* for sysctl */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct sg_iovec /* same structure as used by readv() Linux system */
|
typedef struct sg_iovec /* same structure as used by readv() Linux system */
|
||||||
{ /* call. It defines one scatter-gather element. */
|
{ /* call. It defines one scatter-gather element. */
|
||||||
|
@ -95,9 +95,6 @@
|
|||||||
#if defined(CONFIG_PROVE_LOCKING) || defined(CONFIG_LOCK_STAT)
|
#if defined(CONFIG_PROVE_LOCKING) || defined(CONFIG_LOCK_STAT)
|
||||||
#include <linux/lockdep.h>
|
#include <linux/lockdep.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_CHR_DEV_SG
|
|
||||||
#include <scsi/sg.h>
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE
|
#ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE
|
||||||
#include <linux/stackleak.h>
|
#include <linux/stackleak.h>
|
||||||
#endif
|
#endif
|
||||||
@ -2090,15 +2087,6 @@ static struct ctl_table kern_table[] = {
|
|||||||
.proc_handler = proc_dostring,
|
.proc_handler = proc_dostring,
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_CHR_DEV_SG
|
|
||||||
{
|
|
||||||
.procname = "sg-big-buff",
|
|
||||||
.data = &sg_big_buff,
|
|
||||||
.maxlen = sizeof (int),
|
|
||||||
.mode = 0444,
|
|
||||||
.proc_handler = proc_dointvec,
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BSD_PROCESS_ACCT
|
#ifdef CONFIG_BSD_PROCESS_ACCT
|
||||||
{
|
{
|
||||||
.procname = "acct",
|
.procname = "acct",
|
||||||
|
Loading…
Reference in New Issue
Block a user