1
linux/drivers/scsi
Pablo Neira Ayuso ff491a7334 netlink: change return-value logic of netlink_broadcast()
Currently, netlink_broadcast() reports errors to the caller if no
messages at all were delivered:

1) If, at least, one message has been delivered correctly, returns 0.
2) Otherwise, if no messages at all were delivered due to skb_clone()
   failure, return -ENOBUFS.
3) Otherwise, if there are no listeners, return -ESRCH.

With this patch, the caller knows if the delivery of any of the
messages to the listeners have failed:

1) If it fails to deliver any message (for whatever reason), return
   -ENOBUFS.
2) Otherwise, if all messages were delivered OK, returns 0.
3) Otherwise, if no listeners, return -ESRCH.

In the current ctnetlink code and in Netfilter in general, we can add
reliable logging and connection tracking event delivery by dropping the
packets whose events were not successfully delivered over Netlink. Of
course, this option would be settable via /proc as this approach reduces
performance (in terms of filtered connections per seconds by a stateful
firewall) but providing reliable logging and event delivery (for
conntrackd) in return.

This patch also changes some clients of netlink_broadcast() that
may report ENOBUFS errors via printk. This error handling is not
of any help. Instead, the userspace daemons that are listening to
those netlink messages should resync themselves with the kernel-side
if they hit ENOBUFS.

BTW, netlink_broadcast() clients include those that call
cn_netlink_send(), nlmsg_multicast() and genlmsg_multicast() since they
internally call netlink_broadcast() and return its error value.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-05 23:56:36 -08:00
..
aacraid [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
aic7xxx [SCSI] aic7xxx: Take the LED out of diagnostic mode on PM resume 2008-10-23 11:42:16 -05:00
aic7xxx_old
aic94xx [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
arcmsr [SCSI] advansys, arcmsr, ipr, nsp32, qla1280, stex: use pci_ioremap_bar() 2008-12-29 11:24:11 -06:00
arm [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
cxgb3i cxgb3: Replace LRO with GRO 2009-01-21 14:39:13 -08:00
device_handler [SCSI] scsi_dh_rdac: Add LSI vendor and product ids in rdac device list 2008-12-29 11:24:17 -06:00
dpt removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
fcoe [SCSI] fcoe: fix incorrect use of struct module 2008-12-30 13:08:37 -06:00
ibmvscsi [SCSI] ibmvfc: Fix DMA mapping leak on memory allocation failure 2009-01-25 08:14:53 -06:00
libfc [SCSI] libfc: A modular Fibre Channel library 2008-12-29 11:24:33 -06:00
libsas [libata] get-identity ioctl: Fix use of invalid memory pointer 2009-01-16 10:17:09 -05:00
lpfc Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-01-08 16:27:31 -08:00
megaraid [SCSI] megaraid_sas: switch to block timeout 2008-12-01 11:15:55 -06:00
pcmcia [SCSI] aha152x_cs: Fix regression that keeps driver from using shared interrupts 2009-01-05 12:17:42 -06:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.03.00-k2. 2009-01-25 07:59:31 -06:00
qla4xxx [SCSI] qla4xxx: do not reuse session when connecting to different target port 2009-01-25 07:55:13 -06:00
sym53c8xx_2 block: unify request timeout handling 2008-10-09 08:56:13 +02:00
.gitignore
3w-9xxx.c [SCSI] 3w-9xxx: remove unnecessary local_irq_save/restore for scsi sg copy API 2008-10-23 11:42:18 -05:00
3w-9xxx.h
3w-xxxx.c [SCSI] 3w-xxxx: remove unnecessary local_irq_save/restore for scsi sg copy API 2008-10-23 11:42:17 -05:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c trivial: Fix misspelling of "firmware" in a100u2w.c 2009-01-06 11:28:08 +01:00
a100u2w.h
a2091.c [SCSI] a2091, gvp11: kill warn_unused_result warnings 2009-01-02 12:16:18 -06:00
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
aha152x.c drivers/scsi: use nr_irqs 2008-10-16 16:52:06 +02:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
aha1740.h
aic7xxx_old.c
atari_NCR5380.c
atari_scsi.c m68k: Remove the broken Hades support 2008-10-14 10:23:27 -07:00
atari_scsi.h
atp870u.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
atp870u.h
BusLogic.c
BusLogic.h
bvme6000_scsi.c
ch.c [SCSI] add residual argument to scsi_execute and scsi_execute_req 2008-12-29 11:24:24 -06:00
constants.c [SCSI] scsi: add transport host byte errors (v3) 2008-10-13 09:28:48 -04:00
dc395x.c
dc395x.h
dmx3191d.c
dpt_i2o.c [SCSI] dpt_i2o: fix transferred data length for scsi_set_resid() 2008-11-15 11:10:14 -06:00
dpti.h
dtc.c
dtc.h
eata_generic.h
eata_pio.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
eata_pio.h
eata.c [SCSI] eata: fix the data buffer accessors conversion regression 2008-12-29 11:24:35 -06:00
esp_scsi.c [SCSI] esp_scsi: Use DIV_ROUND_UP 2008-12-29 11:24:14 -06:00
esp_scsi.h sparc: Kill SBUS DVMA layer. 2008-08-29 02:13:10 -07:00
fd_mcs.c
fdomain.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
fdomain.h
FlashPoint.c
g_NCR5380_mmio.c
g_NCR5380.c
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gdth_proc.h block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gdth.c gdth section fixes 2008-11-30 10:03:36 -08:00
gdth.h block: unify request timeout handling 2008-10-09 08:56:13 +02:00
gvp11.c [SCSI] a2091, gvp11: kill warn_unused_result warnings 2009-01-02 12:16:18 -06:00
gvp11.h
hosts.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
hptiop.c remove unnecessary <linux/hdreg.h> includes 2008-08-05 18:16:58 +02:00
hptiop.h
ibmmca.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
imm.c
imm.h
in2000.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
in2000.h
initio.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
initio.h [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
ipr.c [libata] get-identity ioctl: Fix use of invalid memory pointer 2009-01-16 10:17:09 -05:00
ipr.h [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
ips.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
ips.h removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
iscsi_tcp.c [SCSI] libiscsi_tcp: support padding offload 2008-12-29 11:24:23 -06:00
iscsi_tcp.h [SCSI] iscsi_tcp: hook iscsi_tcp into new libiscsi_tcp module 2008-12-29 11:24:22 -06:00
jazz_esp.c
Kconfig powerpc: Fix iseries drivers build failure without CONFIG_VIOPATH 2009-01-08 16:25:14 +11:00
lasi700.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
libiscsi_tcp.c [SCSI] iscsi_tcp: make padbuf non-static 2009-01-13 10:41:34 -06:00
libiscsi.c [SCSI] libiscsi: fix iscsi pool leak 2009-01-25 07:54:37 -06:00
libsrp.c
mac53c94.c
mac53c94.h
mac_esp.c [SCSI] mac_esp: fix for quadras with two esp chips 2008-12-29 11:24:19 -06:00
mac_scsi.c m68k: machw.h cleanup 2008-12-28 20:00:03 +01:00
mac_scsi.h
Makefile remove ide-scsi 2009-01-02 16:12:51 +01:00
megaraid.c trivial: Fix misspelling of "firmware" in megaraid.c 2009-01-06 11:28:08 +01:00
megaraid.h [SCSI] megaraid: fix mega_internal_command oops 2008-11-05 12:40:23 -05:00
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvsas.c [SCSI] mvsas: increase port type detection delay to suit Seagate's 10k6 drive ST3450856SS 0003 2009-01-02 12:10:04 -06:00
ncr53c8xx.c block: unify request timeout handling 2008-10-09 08:56:13 +02:00
ncr53c8xx.h
NCR53c406a.c
NCR5380.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
NCR5380.h
NCR_D700.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [SCSI] advansys, arcmsr, ipr, nsp32, qla1280, stex: use pci_ioremap_bar() 2008-12-29 11:24:11 -06:00
nsp32.h removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
osst_detect.h
osst_options.h
osst.c device create: scsi: convert device_create_drvdata to device_create 2008-10-16 09:24:44 -07:00
osst.h
pas16.c
pas16.h
ppa.c
ppa.h
ps3rom.c powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/scsi 2009-01-16 16:15:15 +11:00
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c trivial: Fix misspelling of "firmware" in qla1280.c 2009-01-06 11:28:09 +01:00
qla1280.h
qlogicfas408.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
qlogicfas408.h
qlogicfas.c
qlogicpti_asm.c
qlogicpti.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-11 12:39:35 -07:00
qlogicpti.h qlogicpti: Convert to pure OF driver. 2008-08-29 02:14:46 -07:00
raid_class.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
script_asm.pl
scsi_debug.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
scsi_devinfo.c [SCSI] Add SUN Universal Xport to no attach blacklist 2009-01-13 10:45:44 -06:00
scsi_error.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-01-08 16:27:31 -08:00
scsi_ioctl.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
scsi_lib_dma.c
scsi_lib.c [SCSI] scsi_lib: fix DID_RESET status problems 2009-01-07 15:15:44 -06:00
scsi_logging.h
scsi_module.c
scsi_netlink.c [SCSI] fix netlink kernel-doc 2008-10-23 11:42:17 -05:00
scsi_priv.h [SCSI] modify scsi to handle new fail fast flags. 2008-10-13 09:28:52 -04:00
scsi_proc.c [SCSI] scsi_host_lookup: error returns and NULL pointers 2008-10-03 11:46:12 -05:00
scsi_sas_internal.h
scsi_scan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-01-08 16:27:31 -08:00
scsi_sysctl.c
scsi_sysfs.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
scsi_tgt_if.c
scsi_tgt_lib.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-10-10 10:53:26 -07:00
scsi_tgt_priv.h
scsi_transport_api.h
scsi_transport_fc_internal.h
scsi_transport_fc.c netlink: change return-value logic of netlink_broadcast() 2009-02-05 23:56:36 -08:00
scsi_transport_iscsi.c netlink: change return-value logic of netlink_broadcast() 2009-02-05 23:56:36 -08:00
scsi_transport_sas.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: fix the misuse of scsi_execute return value 2008-12-29 11:24:32 -06:00
scsi_transport_srp_internal.h
scsi_transport_srp.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
scsi_typedefs.h
scsi_wait_scan.c
scsi.c [SCSI] Skip deleted devices in __scsi_device_lookup_by_target() 2009-01-13 10:48:11 -06:00
scsi.h
scsicam.c
sd_dif.c [SCSI] sd: Correctly handle 6-byte commands with DIX 2009-01-05 09:06:23 -06:00
sd.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-01-08 16:27:31 -08:00
sd.h [SCSI] sd: fix compile failure with CONFIG_BLK_DEV_INTEGRITY=n 2008-10-15 08:41:28 -04:00
ses.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
sg.c [SCSI] block: make blk_rq_map_user take a NULL user-space buffer for WRITE 2009-01-02 11:10:35 -06:00
sgiwd93.c [SCSI] sgiwd93: Fix compilation warning 2009-01-02 10:58:41 -06:00
sim710.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
sni_53c710.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
sr_ioctl.c [SCSI] add residual argument to scsi_execute and scsi_execute_req 2008-12-29 11:24:24 -06:00
sr_vendor.c drivers/scsi/sr_vendor.c: use bcd2bin 2008-10-20 08:52:41 -07:00
sr.c [SCSI] add residual argument to scsi_execute and scsi_execute_req 2008-12-29 11:24:24 -06:00
sr.h
st_options.h
st.c [SCSI] st: retry enlarge_buffer allocation 2009-01-02 12:06:52 -06:00
st.h [SCSI] st: remove unused frp_sg_current 2009-01-02 12:02:25 -06:00
stex.c [SCSI] advansys, arcmsr, ipr, nsp32, qla1280, stex: use pci_ioremap_bar() 2008-12-29 11:24:11 -06:00
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c [SCSI] sun3x_esp: Convert && to || 2008-10-23 11:42:19 -05:00
sun_esp.c sparc: Annotate of_device_id arrays with const or __initdata. 2008-08-31 01:23:17 -07:00
sym53c416.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
sym53c416.h
t128.c
t128.h
tmscsim.c [SCSI] tmscsim: fix indentation and braces disagreement - add braces 2008-12-29 11:24:14 -06:00
tmscsim.h
u14-34f.c [SCSI] u14-34f: fix scsi_dma_map failure case 2008-12-29 11:24:14 -06:00
ultrastor.c
ultrastor.h
wd33c93.c
wd33c93.h
wd7000.c [SCSI] Clean up my email address and use a single standard address for everything 2008-12-29 11:24:12 -06:00
zalon.c [SCSI] struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-02 10:22:16 -06:00
zorro7xx.c