* [PATCH] scsi: netlink: avoid including netlink interface in scsi module
@ 2011-05-18 21:25 Jan Engelhardt
2011-05-19 0:48 ` Randy Dunlap
2011-05-19 17:48 ` Randy Dunlap
0 siblings, 2 replies; 9+ messages in thread
From: Jan Engelhardt @ 2011-05-18 21:25 UTC (permalink / raw)
To: linux-scsi; +Cc: James.Bottomley
Only scsi_transport_fc needs it, so don't include it in scsi_mod
if fc=m.
Cc: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
---
drivers/scsi/Kconfig | 3 ++-
drivers/scsi/Makefile | 2 +-
drivers/scsi/scsi.c | 3 ---
drivers/scsi/scsi_netlink.c | 22 +++++++++++++---------
drivers/scsi/scsi_priv.h | 7 +------
5 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 4a1f029..a61014b 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -48,8 +48,9 @@ config SCSI_TGT
If you choose M, the module will be called scsi_tgt.
config SCSI_NETLINK
- bool
+ tristate "SCSI Netlink interface"
default n
+ depends on SCSI
select NET
config SCSI_PROC_FS
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 7ad0b8a..a18d5c6 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -162,7 +162,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
scsicam.o scsi_error.o scsi_lib.o
scsi_mod-$(CONFIG_SCSI_DMA) += scsi_lib_dma.o
scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
-scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
+obj-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
scsi_mod-y += scsi_trace.o
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 2aeb2e9..f2d27e6 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -1327,8 +1327,6 @@ static int __init init_scsi(void)
if (error)
goto cleanup_sysctl;
- scsi_netlink_init();
-
printk(KERN_NOTICE "SCSI subsystem initialized\n");
return 0;
@@ -1349,7 +1347,6 @@ cleanup_queue:
static void __exit exit_scsi(void)
{
- scsi_netlink_exit();
scsi_sysfs_unregister();
scsi_exit_sysctl();
scsi_exit_hosts();
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
index 26a8a45..62e23b5 100644
--- a/drivers/scsi/scsi_netlink.c
+++ b/drivers/scsi/scsi_netlink.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
+#include <linux/module.h>
#include <linux/time.h>
#include <linux/jiffies.h>
#include <linux/security.h>
@@ -481,8 +482,7 @@ EXPORT_SYMBOL_GPL(scsi_nl_remove_driver);
* the SCSI transport netlink interface
*
**/
-void
-scsi_netlink_init(void)
+static int __init scsi_netlink_init(void)
{
int error;
@@ -492,7 +492,7 @@ scsi_netlink_init(void)
if (error) {
printk(KERN_ERR "%s: register of event handler failed - %d\n",
__func__, error);
- return;
+ return error;
}
scsi_nl_sock = netlink_kernel_create(&init_net, NETLINK_SCSITRANSPORT,
@@ -502,16 +502,19 @@ scsi_netlink_init(void)
printk(KERN_ERR "%s: register of receive handler failed\n",
__func__);
netlink_unregister_notifier(&scsi_netlink_notifier);
- return;
+ return -ENOMEM;
}
/* Register the entry points for the generic SCSI transport */
error = scsi_nl_add_transport(SCSI_NL_TRANSPORT,
scsi_generic_msg_handler, NULL);
- if (error)
+ if (error) {
printk(KERN_ERR "%s: register of GENERIC transport handler"
" failed - %d\n", __func__, error);
- return;
+ netlink_kernel_release(scsi_nl_sock);
+ netlink_unregister_notifier(&scsi_netlink_notifier);
+ }
+ return error;
}
@@ -519,8 +522,7 @@ scsi_netlink_init(void)
* scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
*
**/
-void
-scsi_netlink_exit(void)
+static void __exit scsi_netlink_exit(void)
{
scsi_nl_remove_transport(SCSI_NL_TRANSPORT);
@@ -676,4 +678,6 @@ send_vendor_fail:
}
EXPORT_SYMBOL(scsi_nl_send_vendor_msg);
-
+module_init(scsi_netlink_init);
+module_exit(scsi_netlink_exit);
+MODULE_LICENSE("GPL");
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index 2a588955..b803ae8 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -138,13 +138,8 @@ extern struct bus_type scsi_bus_type;
extern const struct attribute_group *scsi_sysfs_shost_attr_groups[];
/* scsi_netlink.c */
-#ifdef CONFIG_SCSI_NETLINK
-extern void scsi_netlink_init(void);
-extern void scsi_netlink_exit(void);
+#if defined(CONFIG_SCSI_NETLINK) || defined(CONFIG_SCSI_NETLINK_MODULE)
extern struct sock *scsi_nl_sock;
-#else
-static inline void scsi_netlink_init(void) {}
-static inline void scsi_netlink_exit(void) {}
#endif
/* scsi_pm.c */
--
1.7.3.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] scsi: netlink: avoid including netlink interface in scsi module
2011-05-18 21:25 [PATCH] scsi: netlink: avoid including netlink interface in scsi module Jan Engelhardt
@ 2011-05-19 0:48 ` Randy Dunlap
2011-05-19 19:06 ` Jan Engelhardt
2011-05-19 17:48 ` Randy Dunlap
1 sibling, 1 reply; 9+ messages in thread
From: Randy Dunlap @ 2011-05-19 0:48 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: linux-scsi, James.Bottomley
On Wed, 18 May 2011 23:25:39 +0200 Jan Engelhardt wrote:
> Only scsi_transport_fc needs it, so don't include it in scsi_mod
> if fc=m.
BTW, scsi_transport_iscsi.c also makes netlink calls (but it's missing the
needed header files).
and what about pmcraid.c ?
> Cc: Randy Dunlap <randy.dunlap@oracle.com> // was not cc:ed
> Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
> ---
> drivers/scsi/Kconfig | 3 ++-
> drivers/scsi/Makefile | 2 +-
> drivers/scsi/scsi.c | 3 ---
> drivers/scsi/scsi_netlink.c | 22 +++++++++++++---------
> drivers/scsi/scsi_priv.h | 7 +------
> 5 files changed, 17 insertions(+), 20 deletions(-)
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] scsi: netlink: avoid including netlink interface in scsi module
2011-05-18 21:25 [PATCH] scsi: netlink: avoid including netlink interface in scsi module Jan Engelhardt
2011-05-19 0:48 ` Randy Dunlap
@ 2011-05-19 17:48 ` Randy Dunlap
1 sibling, 0 replies; 9+ messages in thread
From: Randy Dunlap @ 2011-05-19 17:48 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: linux-scsi, James.Bottomley
On Wed, 18 May 2011 23:25:39 +0200 Jan Engelhardt wrote:
> Only scsi_transport_fc needs it, so don't include it in scsi_mod
> if fc=m.
>
> Cc: Randy Dunlap <randy.dunlap@oracle.com>
> Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Many variations of SCSI=y/m, SCSI_NETLINK=y/m/n, PMCRAID=y/m/n,
SCSI_FC_ATTRS=y/m/n, SCSI_ISCSI_ATTRS=y/m/n build successfully for me.
(no run-time testing)
> ---
> drivers/scsi/Kconfig | 3 ++-
> drivers/scsi/Makefile | 2 +-
> drivers/scsi/scsi.c | 3 ---
> drivers/scsi/scsi_netlink.c | 22 +++++++++++++---------
> drivers/scsi/scsi_priv.h | 7 +------
> 5 files changed, 17 insertions(+), 20 deletions(-)
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] scsi: netlink: avoid including netlink interface in scsi module
2011-05-19 0:48 ` Randy Dunlap
@ 2011-05-19 19:06 ` Jan Engelhardt
2011-05-19 19:09 ` Mike Christie
0 siblings, 1 reply; 9+ messages in thread
From: Jan Engelhardt @ 2011-05-19 19:06 UTC (permalink / raw)
To: Randy Dunlap; +Cc: linux-scsi, James.Bottomley
On Thursday 2011-05-19 02:48, Randy Dunlap wrote:
>On Wed, 18 May 2011 23:25:39 +0200 Jan Engelhardt wrote:
>
>> Only scsi_transport_fc needs it, so don't include it in scsi_mod
>> if fc=m.
>
>BTW, scsi_transport_iscsi.c also makes netlink calls (but it's missing the
>needed header files).
What, where?
>and what about pmcraid.c ?
I have both enabled, and the patch does not make any new warnings w.r.t.
missing prototypes or otherwise pop up. So there does not seem to be
anything missing.
>> Cc: Randy Dunlap <randy.dunlap@oracle.com> // was not cc:ed
I had hoped git send-email would scan through the commit message,
and add Ccs, apparently it did not.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] scsi: netlink: avoid including netlink interface in scsi module
2011-05-19 19:06 ` Jan Engelhardt
@ 2011-05-19 19:09 ` Mike Christie
0 siblings, 0 replies; 9+ messages in thread
From: Mike Christie @ 2011-05-19 19:09 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Randy Dunlap, linux-scsi, James.Bottomley
On 05/19/2011 02:06 PM, Jan Engelhardt wrote:
> On Thursday 2011-05-19 02:48, Randy Dunlap wrote:
>
>> On Wed, 18 May 2011 23:25:39 +0200 Jan Engelhardt wrote:
>>
>>> Only scsi_transport_fc needs it, so don't include it in scsi_mod
>>> if fc=m.
>>
>> BTW, scsi_transport_iscsi.c also makes netlink calls (but it's missing the
>> needed header files).
>
> What, where?
>
iscsi uses netlink directly. It does not use scsi_netlink helpers/lib
code yet.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [patch] scsi: netlink: avoid including netlink interface in scsi module
2010-11-01 20:08 ` Jan Engelhardt
@ 2010-11-01 20:54 ` Randy Dunlap
0 siblings, 0 replies; 9+ messages in thread
From: Randy Dunlap @ 2010-11-01 20:54 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: linux-scsi, James Bottomley
On 11/01/10 13:08, Jan Engelhardt wrote:
>
> On Monday 2010-11-01 04:19, Randy Dunlap wrote:
>> On 10/31/10 11:50, Jan Engelhardt wrote:
>>> scsi: netlink: avoid including netlink interface in scsi module
>>
>> Mostly looks good to me, just one warning:
>> drivers/scsi/scsi_netlink.c:678: warning: initialization from incompatible pointer type
>> The init() function should return an int (status/error code).
>
> Ah indeed, thank you. I must have missed that somehow. Maybe I should get a
> slower CPU so that I actually have time to read messages (make -j8 kinda rushes
> just through, despite kbuild-2.6's efforts to reduce 2.4-ish verbosity :)
>
>
> Updated: As this is now a separate module, I took the courtesy to
> err out completely if scsi_nl_add_transport fails.
>
>
> parent 3985c7ce85039adacdf882904ca096f091d39346 (v2.6.36-9871-g3985c7c)
> commit 78d7ac1cd86667ad5735fd3899b7cea55ec50aed
> Author: Jan Engelhardt <jengelh@medozas.de>
> Date: Sat Oct 30 19:51:53 2010 +0200
>
> scsi: netlink: avoid including netlink interface in scsi module
>
> Only scsi_transport_fc needs it, so don't include it in scsi_mod
> if fc=m.
>
> Cc: Randy Dunlap <randy.dunlap@oracle.com>
> Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Thanks.
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
> ---
> drivers/scsi/Kconfig | 3 ++-
> drivers/scsi/Makefile | 2 +-
> drivers/scsi/scsi.c | 3 ---
> drivers/scsi/scsi_netlink.c | 22 +++++++++++++---------
> drivers/scsi/scsi_priv.h | 7 +------
> 5 files changed, 17 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> index 8616496..b4e1e2d 100644
> --- a/drivers/scsi/Kconfig
> +++ b/drivers/scsi/Kconfig
> @@ -48,8 +48,9 @@ config SCSI_TGT
> If you choose M, the module will be called scsi_tgt.
>
> config SCSI_NETLINK
> - bool
> + tristate "SCSI Netlink interface"
> default n
> + depends on SCSI
> select NET
>
> config SCSI_PROC_FS
> diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
> index 2e9a87e..0870038 100644
> --- a/drivers/scsi/Makefile
> +++ b/drivers/scsi/Makefile
> @@ -161,7 +161,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
> scsicam.o scsi_error.o scsi_lib.o
> scsi_mod-$(CONFIG_SCSI_DMA) += scsi_lib_dma.o
> scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
> -scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
> +obj-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
> scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
> scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
> scsi_mod-y += scsi_trace.o
> diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
> index 348fba0..31a07b1 100644
> --- a/drivers/scsi/scsi.c
> +++ b/drivers/scsi/scsi.c
> @@ -1335,8 +1335,6 @@ static int __init init_scsi(void)
> if (error)
> goto cleanup_sysctl;
>
> - scsi_netlink_init();
> -
> printk(KERN_NOTICE "SCSI subsystem initialized\n");
> return 0;
>
> @@ -1357,7 +1355,6 @@ cleanup_queue:
>
> static void __exit exit_scsi(void)
> {
> - scsi_netlink_exit();
> scsi_sysfs_unregister();
> scsi_exit_sysctl();
> scsi_exit_hosts();
> diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
> index d53e650..c01cf67 100644
> --- a/drivers/scsi/scsi_netlink.c
> +++ b/drivers/scsi/scsi_netlink.c
> @@ -18,6 +18,7 @@
> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> *
> */
> +#include <linux/module.h>
> #include <linux/time.h>
> #include <linux/jiffies.h>
> #include <linux/security.h>
> @@ -481,8 +482,7 @@ EXPORT_SYMBOL_GPL(scsi_nl_remove_driver);
> * the SCSI transport netlink interface
> *
> **/
> -void
> -scsi_netlink_init(void)
> +static int __init scsi_netlink_init(void)
> {
> int error;
>
> @@ -492,7 +492,7 @@ scsi_netlink_init(void)
> if (error) {
> printk(KERN_ERR "%s: register of event handler failed - %d\n",
> __func__, error);
> - return;
> + return error;
> }
>
> scsi_nl_sock = netlink_kernel_create(&init_net, NETLINK_SCSITRANSPORT,
> @@ -502,16 +502,19 @@ scsi_netlink_init(void)
> printk(KERN_ERR "%s: register of recieve handler failed\n",
> __func__);
> netlink_unregister_notifier(&scsi_netlink_notifier);
> - return;
> + return -ENOMEM;
> }
>
> /* Register the entry points for the generic SCSI transport */
> error = scsi_nl_add_transport(SCSI_NL_TRANSPORT,
> scsi_generic_msg_handler, NULL);
> - if (error)
> + if (error) {
> printk(KERN_ERR "%s: register of GENERIC transport handler"
> " failed - %d\n", __func__, error);
> - return;
> + netlink_kernel_release(scsi_nl_sock);
> + netlink_unregister_notifier(&scsi_netlink_notifier);
> + }
> + return error;
> }
>
>
> @@ -519,8 +522,7 @@ scsi_netlink_init(void)
> * scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
> *
> **/
> -void
> -scsi_netlink_exit(void)
> +static void __exit scsi_netlink_exit(void)
> {
> scsi_nl_remove_transport(SCSI_NL_TRANSPORT);
>
> @@ -676,4 +678,6 @@ send_vendor_fail:
> }
> EXPORT_SYMBOL(scsi_nl_send_vendor_msg);
>
> -
> +module_init(scsi_netlink_init);
> +module_exit(scsi_netlink_exit);
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
> index b4056d1..55fba9e 100644
> --- a/drivers/scsi/scsi_priv.h
> +++ b/drivers/scsi/scsi_priv.h
> @@ -136,13 +136,8 @@ extern struct bus_type scsi_bus_type;
> extern const struct attribute_group *scsi_sysfs_shost_attr_groups[];
>
> /* scsi_netlink.c */
> -#ifdef CONFIG_SCSI_NETLINK
> -extern void scsi_netlink_init(void);
> -extern void scsi_netlink_exit(void);
> +#if defined(CONFIG_SCSI_NETLINK) || defined(CONFIG_SCSI_NETLINK_MODULE)
> extern struct sock *scsi_nl_sock;
> -#else
> -static inline void scsi_netlink_init(void) {}
> -static inline void scsi_netlink_exit(void) {}
> #endif
>
> /* scsi_pm.c */
--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [patch] scsi: netlink: avoid including netlink interface in scsi module
2010-11-01 3:19 ` Randy Dunlap
@ 2010-11-01 20:08 ` Jan Engelhardt
2010-11-01 20:54 ` Randy Dunlap
0 siblings, 1 reply; 9+ messages in thread
From: Jan Engelhardt @ 2010-11-01 20:08 UTC (permalink / raw)
To: Randy Dunlap; +Cc: linux-scsi, James Bottomley
On Monday 2010-11-01 04:19, Randy Dunlap wrote:
>On 10/31/10 11:50, Jan Engelhardt wrote:
>> scsi: netlink: avoid including netlink interface in scsi module
>
>Mostly looks good to me, just one warning:
>drivers/scsi/scsi_netlink.c:678: warning: initialization from incompatible pointer type
>The init() function should return an int (status/error code).
Ah indeed, thank you. I must have missed that somehow. Maybe I should get a
slower CPU so that I actually have time to read messages (make -j8 kinda rushes
just through, despite kbuild-2.6's efforts to reduce 2.4-ish verbosity :)
Updated: As this is now a separate module, I took the courtesy to
err out completely if scsi_nl_add_transport fails.
parent 3985c7ce85039adacdf882904ca096f091d39346 (v2.6.36-9871-g3985c7c)
commit 78d7ac1cd86667ad5735fd3899b7cea55ec50aed
Author: Jan Engelhardt <jengelh@medozas.de>
Date: Sat Oct 30 19:51:53 2010 +0200
scsi: netlink: avoid including netlink interface in scsi module
Only scsi_transport_fc needs it, so don't include it in scsi_mod
if fc=m.
Cc: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
---
drivers/scsi/Kconfig | 3 ++-
drivers/scsi/Makefile | 2 +-
drivers/scsi/scsi.c | 3 ---
drivers/scsi/scsi_netlink.c | 22 +++++++++++++---------
drivers/scsi/scsi_priv.h | 7 +------
5 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 8616496..b4e1e2d 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -48,8 +48,9 @@ config SCSI_TGT
If you choose M, the module will be called scsi_tgt.
config SCSI_NETLINK
- bool
+ tristate "SCSI Netlink interface"
default n
+ depends on SCSI
select NET
config SCSI_PROC_FS
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 2e9a87e..0870038 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -161,7 +161,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
scsicam.o scsi_error.o scsi_lib.o
scsi_mod-$(CONFIG_SCSI_DMA) += scsi_lib_dma.o
scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
-scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
+obj-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
scsi_mod-y += scsi_trace.o
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 348fba0..31a07b1 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -1335,8 +1335,6 @@ static int __init init_scsi(void)
if (error)
goto cleanup_sysctl;
- scsi_netlink_init();
-
printk(KERN_NOTICE "SCSI subsystem initialized\n");
return 0;
@@ -1357,7 +1355,6 @@ cleanup_queue:
static void __exit exit_scsi(void)
{
- scsi_netlink_exit();
scsi_sysfs_unregister();
scsi_exit_sysctl();
scsi_exit_hosts();
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
index d53e650..c01cf67 100644
--- a/drivers/scsi/scsi_netlink.c
+++ b/drivers/scsi/scsi_netlink.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
+#include <linux/module.h>
#include <linux/time.h>
#include <linux/jiffies.h>
#include <linux/security.h>
@@ -481,8 +482,7 @@ EXPORT_SYMBOL_GPL(scsi_nl_remove_driver);
* the SCSI transport netlink interface
*
**/
-void
-scsi_netlink_init(void)
+static int __init scsi_netlink_init(void)
{
int error;
@@ -492,7 +492,7 @@ scsi_netlink_init(void)
if (error) {
printk(KERN_ERR "%s: register of event handler failed - %d\n",
__func__, error);
- return;
+ return error;
}
scsi_nl_sock = netlink_kernel_create(&init_net, NETLINK_SCSITRANSPORT,
@@ -502,16 +502,19 @@ scsi_netlink_init(void)
printk(KERN_ERR "%s: register of recieve handler failed\n",
__func__);
netlink_unregister_notifier(&scsi_netlink_notifier);
- return;
+ return -ENOMEM;
}
/* Register the entry points for the generic SCSI transport */
error = scsi_nl_add_transport(SCSI_NL_TRANSPORT,
scsi_generic_msg_handler, NULL);
- if (error)
+ if (error) {
printk(KERN_ERR "%s: register of GENERIC transport handler"
" failed - %d\n", __func__, error);
- return;
+ netlink_kernel_release(scsi_nl_sock);
+ netlink_unregister_notifier(&scsi_netlink_notifier);
+ }
+ return error;
}
@@ -519,8 +522,7 @@ scsi_netlink_init(void)
* scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
*
**/
-void
-scsi_netlink_exit(void)
+static void __exit scsi_netlink_exit(void)
{
scsi_nl_remove_transport(SCSI_NL_TRANSPORT);
@@ -676,4 +678,6 @@ send_vendor_fail:
}
EXPORT_SYMBOL(scsi_nl_send_vendor_msg);
-
+module_init(scsi_netlink_init);
+module_exit(scsi_netlink_exit);
+MODULE_LICENSE("GPL");
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index b4056d1..55fba9e 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -136,13 +136,8 @@ extern struct bus_type scsi_bus_type;
extern const struct attribute_group *scsi_sysfs_shost_attr_groups[];
/* scsi_netlink.c */
-#ifdef CONFIG_SCSI_NETLINK
-extern void scsi_netlink_init(void);
-extern void scsi_netlink_exit(void);
+#if defined(CONFIG_SCSI_NETLINK) || defined(CONFIG_SCSI_NETLINK_MODULE)
extern struct sock *scsi_nl_sock;
-#else
-static inline void scsi_netlink_init(void) {}
-static inline void scsi_netlink_exit(void) {}
#endif
/* scsi_pm.c */
--
# Created with git-export-patch
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [patch] scsi: netlink: avoid including netlink interface in scsi module
2010-10-31 18:50 [patch] " Jan Engelhardt
@ 2010-11-01 3:19 ` Randy Dunlap
2010-11-01 20:08 ` Jan Engelhardt
0 siblings, 1 reply; 9+ messages in thread
From: Randy Dunlap @ 2010-11-01 3:19 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: linux-scsi, James Bottomley
On 10/31/10 11:50, Jan Engelhardt wrote:
> parent 3985c7ce85039adacdf882904ca096f091d39346 (v2.6.36-9871-g3985c7c)
> commit 150bc5749967d77b4d1177744d26bf7065f8ee07
> Author: Jan Engelhardt <jengelh@medozas.de>
> Date: Sat Oct 30 19:51:53 2010 +0200
>
> scsi: netlink: avoid including netlink interface in scsi module
>
> Only scsi_transport_fc needs it, so don't include it in scsi_mod
> if fc=m.
>
> Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Mostly looks good to me, just one warning:
drivers/scsi/scsi_netlink.c:678: warning: initialization from incompatible pointer type
The init() function should return an int (status/error code).
> ---
> drivers/scsi/Kconfig | 3 ++-
> drivers/scsi/Makefile | 2 +-
> drivers/scsi/scsi.c | 3 ---
> drivers/scsi/scsi_netlink.c | 11 ++++++-----
> drivers/scsi/scsi_priv.h | 7 +------
> 5 files changed, 10 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> index 8616496..b4e1e2d 100644
> --- a/drivers/scsi/Kconfig
> +++ b/drivers/scsi/Kconfig
> @@ -48,8 +48,9 @@ config SCSI_TGT
> If you choose M, the module will be called scsi_tgt.
>
> config SCSI_NETLINK
> - bool
> + tristate "SCSI Netlink interface"
> default n
> + depends on SCSI
> select NET
>
> config SCSI_PROC_FS
> diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
> index 2e9a87e..0870038 100644
> --- a/drivers/scsi/Makefile
> +++ b/drivers/scsi/Makefile
> @@ -161,7 +161,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
> scsicam.o scsi_error.o scsi_lib.o
> scsi_mod-$(CONFIG_SCSI_DMA) += scsi_lib_dma.o
> scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
> -scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
> +obj-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
> scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
> scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
> scsi_mod-y += scsi_trace.o
> diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
> index 348fba0..31a07b1 100644
> --- a/drivers/scsi/scsi.c
> +++ b/drivers/scsi/scsi.c
> @@ -1335,8 +1335,6 @@ static int __init init_scsi(void)
> if (error)
> goto cleanup_sysctl;
>
> - scsi_netlink_init();
> -
> printk(KERN_NOTICE "SCSI subsystem initialized\n");
> return 0;
>
> @@ -1357,7 +1355,6 @@ cleanup_queue:
>
> static void __exit exit_scsi(void)
> {
> - scsi_netlink_exit();
> scsi_sysfs_unregister();
> scsi_exit_sysctl();
> scsi_exit_hosts();
> diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
> index d53e650..348fced 100644
> --- a/drivers/scsi/scsi_netlink.c
> +++ b/drivers/scsi/scsi_netlink.c
> @@ -18,6 +18,7 @@
> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> *
> */
> +#include <linux/module.h>
> #include <linux/time.h>
> #include <linux/jiffies.h>
> #include <linux/security.h>
> @@ -481,8 +482,7 @@ EXPORT_SYMBOL_GPL(scsi_nl_remove_driver);
> * the SCSI transport netlink interface
> *
> **/
> -void
> -scsi_netlink_init(void)
> +static void __init scsi_netlink_init(void)
> {
> int error;
>
> @@ -519,8 +519,7 @@ scsi_netlink_init(void)
> * scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
> *
> **/
> -void
> -scsi_netlink_exit(void)
> +static void __exit scsi_netlink_exit(void)
> {
> scsi_nl_remove_transport(SCSI_NL_TRANSPORT);
>
> @@ -676,4 +675,6 @@ send_vendor_fail:
> }
> EXPORT_SYMBOL(scsi_nl_send_vendor_msg);
>
> -
> +module_init(scsi_netlink_init);
> +module_exit(scsi_netlink_exit);
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
> index b4056d1..55fba9e 100644
> --- a/drivers/scsi/scsi_priv.h
> +++ b/drivers/scsi/scsi_priv.h
> @@ -136,13 +136,8 @@ extern struct bus_type scsi_bus_type;
> extern const struct attribute_group *scsi_sysfs_shost_attr_groups[];
>
> /* scsi_netlink.c */
> -#ifdef CONFIG_SCSI_NETLINK
> -extern void scsi_netlink_init(void);
> -extern void scsi_netlink_exit(void);
> +#if defined(CONFIG_SCSI_NETLINK) || defined(CONFIG_SCSI_NETLINK_MODULE)
> extern struct sock *scsi_nl_sock;
> -#else
> -static inline void scsi_netlink_init(void) {}
> -static inline void scsi_netlink_exit(void) {}
> #endif
>
> /* scsi_pm.c */
--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply [flat|nested] 9+ messages in thread
* [patch] scsi: netlink: avoid including netlink interface in scsi module
@ 2010-10-31 18:50 Jan Engelhardt
2010-11-01 3:19 ` Randy Dunlap
0 siblings, 1 reply; 9+ messages in thread
From: Jan Engelhardt @ 2010-10-31 18:50 UTC (permalink / raw)
To: linux-scsi; +Cc: Randy Dunlap, James Bottomley
parent 3985c7ce85039adacdf882904ca096f091d39346 (v2.6.36-9871-g3985c7c)
commit 150bc5749967d77b4d1177744d26bf7065f8ee07
Author: Jan Engelhardt <jengelh@medozas.de>
Date: Sat Oct 30 19:51:53 2010 +0200
scsi: netlink: avoid including netlink interface in scsi module
Only scsi_transport_fc needs it, so don't include it in scsi_mod
if fc=m.
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
---
drivers/scsi/Kconfig | 3 ++-
drivers/scsi/Makefile | 2 +-
drivers/scsi/scsi.c | 3 ---
drivers/scsi/scsi_netlink.c | 11 ++++++-----
drivers/scsi/scsi_priv.h | 7 +------
5 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 8616496..b4e1e2d 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -48,8 +48,9 @@ config SCSI_TGT
If you choose M, the module will be called scsi_tgt.
config SCSI_NETLINK
- bool
+ tristate "SCSI Netlink interface"
default n
+ depends on SCSI
select NET
config SCSI_PROC_FS
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 2e9a87e..0870038 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -161,7 +161,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
scsicam.o scsi_error.o scsi_lib.o
scsi_mod-$(CONFIG_SCSI_DMA) += scsi_lib_dma.o
scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
-scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
+obj-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
scsi_mod-y += scsi_trace.o
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 348fba0..31a07b1 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -1335,8 +1335,6 @@ static int __init init_scsi(void)
if (error)
goto cleanup_sysctl;
- scsi_netlink_init();
-
printk(KERN_NOTICE "SCSI subsystem initialized\n");
return 0;
@@ -1357,7 +1355,6 @@ cleanup_queue:
static void __exit exit_scsi(void)
{
- scsi_netlink_exit();
scsi_sysfs_unregister();
scsi_exit_sysctl();
scsi_exit_hosts();
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
index d53e650..348fced 100644
--- a/drivers/scsi/scsi_netlink.c
+++ b/drivers/scsi/scsi_netlink.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
+#include <linux/module.h>
#include <linux/time.h>
#include <linux/jiffies.h>
#include <linux/security.h>
@@ -481,8 +482,7 @@ EXPORT_SYMBOL_GPL(scsi_nl_remove_driver);
* the SCSI transport netlink interface
*
**/
-void
-scsi_netlink_init(void)
+static void __init scsi_netlink_init(void)
{
int error;
@@ -519,8 +519,7 @@ scsi_netlink_init(void)
* scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
*
**/
-void
-scsi_netlink_exit(void)
+static void __exit scsi_netlink_exit(void)
{
scsi_nl_remove_transport(SCSI_NL_TRANSPORT);
@@ -676,4 +675,6 @@ send_vendor_fail:
}
EXPORT_SYMBOL(scsi_nl_send_vendor_msg);
-
+module_init(scsi_netlink_init);
+module_exit(scsi_netlink_exit);
+MODULE_LICENSE("GPL");
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index b4056d1..55fba9e 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -136,13 +136,8 @@ extern struct bus_type scsi_bus_type;
extern const struct attribute_group *scsi_sysfs_shost_attr_groups[];
/* scsi_netlink.c */
-#ifdef CONFIG_SCSI_NETLINK
-extern void scsi_netlink_init(void);
-extern void scsi_netlink_exit(void);
+#if defined(CONFIG_SCSI_NETLINK) || defined(CONFIG_SCSI_NETLINK_MODULE)
extern struct sock *scsi_nl_sock;
-#else
-static inline void scsi_netlink_init(void) {}
-static inline void scsi_netlink_exit(void) {}
#endif
/* scsi_pm.c */
--
# Created with git-export-patch
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-05-19 19:10 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-18 21:25 [PATCH] scsi: netlink: avoid including netlink interface in scsi module Jan Engelhardt
2011-05-19 0:48 ` Randy Dunlap
2011-05-19 19:06 ` Jan Engelhardt
2011-05-19 19:09 ` Mike Christie
2011-05-19 17:48 ` Randy Dunlap
-- strict thread matches above, loose matches on Subject: below --
2010-10-31 18:50 [patch] " Jan Engelhardt
2010-11-01 3:19 ` Randy Dunlap
2010-11-01 20:08 ` Jan Engelhardt
2010-11-01 20:54 ` Randy Dunlap
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.