linux/drivers/scsi
Darrick J. Wong 423f7cf467 [SCSI] libsas: Don't BUG when connecting two expanders via wide port
libsas: Don't BUG when connecting two expanders via wide port

When a device is connected to an expander, the discovery process goes through
sas_ex_discover_dev to figure out what's attached to the phy.  If it is the
case that the phy being discovered happens to be the second phy of a wide link
to an expander, that discover_dev function will incorrectly call
sas_ex_discover_expander, which creates another sas_port and tries to attach the
other sas_phys to the new port, thus triggering a BUG.  The correct thing to do is
to check the other ex_phys of the expander to see if there's a sas_port for this
sas_phy, and attach the sas_phy to the existing sas_port.

This is easily triggered if one enables the phys of a wide port between
expanders one by one.

This second version of the patch fixes a small regression in the case where
all the phys show up at once and we accidentally try to attach to a port
that hasn't been created yet.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2007-02-03 08:15:15 -06:00
..
aacraid Merge branch 'linus' 2007-01-31 11:24:00 -06:00
aic7xxx [SCSI] aic79xx: Add ASC-29320LPE ids to driver 2006-12-05 14:17:17 -06:00
aic7xxx_old Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
aic94xx [SCSI] aic94xx: Register eh_device_reset_handler 2007-01-27 10:07:05 -06:00
arcmsr IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
arm IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
dpt [PATCH] lockdep: annotate DECLARE_WAIT_QUEUE_HEAD 2006-10-30 12:08:40 -08:00
ibmvscsi [PATCH] powerpc iseries link error in allmodconfig 2006-12-30 10:55:54 -08:00
libsas [SCSI] libsas: Don't BUG when connecting two expanders via wide port 2007-02-03 08:15:15 -06:00
lpfc [SCSI] scsi: lpfc error path fix 2007-01-06 09:05:18 -06:00
megaraid Merge branch 'linus' 2007-01-31 11:24:00 -06:00
pcmcia [PATCH] sym53c500_cs: remove bogus call fo free_dma() 2007-01-30 08:39:20 -08:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.01.07-k5. 2007-01-31 11:26:43 -06:00
qla4xxx [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
sym53c8xx_2 [PATCH] Fix numerous kcalloc() calls, convert to kzalloc() 2006-12-13 09:05:52 -08:00
.gitignore
3w-9xxx.c [SCSI] 3ware 9000 add support for 9650SE 2006-11-09 14:27:57 +09:00
3w-9xxx.h [SCSI] 3ware 9000 add support for 9650SE 2006-11-09 14:27:57 +09:00
3w-xxxx.c [SCSI] 3ware 8000 serialize reset code 2007-01-06 09:18:00 -06:00
3w-xxxx.h [SCSI] 3ware 8000 serialize reset code 2007-01-06 09:18:00 -06:00
53c7xx_d.h_shipped
53c7xx_u.h_shipped
53c7xx.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
53c7xx.h
53c7xx.scr
53c700_d.h_shipped
53c700.c [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
53c700.h [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
53c700.scr
a100u2w.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
a100u2w.h
a2091.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
a2091.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
a3000.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
a3000.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
advansys.c [SCSI] advansys: wrap PCI table inside ifdef CONFIG_PCI 2007-01-03 16:57:22 -06:00
advansys.h
aha152x.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
aha152x.h
aha1542.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
aha1542.h
aha1740.c [SCSI] SCSI/aha1740: handle SCSI API errors 2006-11-15 16:38:58 -06:00
aha1740.h
aic7xxx_old.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
amiga7xx.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
amiga7xx.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_dma_emul.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_NCR5380.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_scsi.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atari_scsi.h
atp870u.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atp870u.h
blz1230.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
blz2060.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
BusLogic.c Merge ../scsi-rc-fixes-2.6 2006-11-22 12:06:44 -06:00
BusLogic.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
bvme6000.c
bvme6000.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ch.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
constants.c [SCSI] update additional sense codes and some opcode names 2006-07-09 09:10:06 -05:00
cyberstorm.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
cyberstormII.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
dc395x.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
dc395x.h
dec_esp.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
dmx3191d.c [SCSI] pci_module_init conversion in scsi subsystem 2006-09-26 11:35:32 -07:00
dpt_i2o.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
dpti.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
dtc.c [PATCH] Use linux/io.h instead of asm/io.h 2006-10-11 11:14:23 -07:00
dtc.h
eata_generic.h [SCSI] eata_pio cleanup and PCI fix 2006-09-23 20:28:19 -05:00
eata_pio.c [PATCH] irq updates: make eata_pio compile 2006-10-20 10:26:38 -07:00
eata_pio.h
eata.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
esp.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
esp.h [SCSI] sparc: Port esp to new SBUS driver layer. 2006-06-23 23:15:54 -07:00
fastlane.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
fcal.c [SCSI] Improve inquiry printing 2006-08-06 15:59:26 -05:00
fcal.h
fd_mcs.c [SCSI] minor bug fixes and cleanups 2006-11-15 16:41:27 -06:00
fdomain.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2006-10-25 20:22:55 -07:00
fdomain.h
FlashPoint.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
g_NCR5380_mmio.c
g_NCR5380.c [SCSI] Improve inquiry printing 2006-08-06 15:59:26 -05:00
g_NCR5380.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
gdth_ioctl.h
gdth_kcompat.h [SCSI] remove the scsi_request interface from the gdth driver 2006-06-10 10:24:40 -05:00
gdth_proc.c [SCSI] remove the scsi_request interface from the gdth driver 2006-06-10 10:24:40 -05:00
gdth_proc.h [SCSI] remove the scsi_request interface from the gdth driver 2006-06-10 10:24:40 -05:00
gdth.c [SCSI] gdth: Fix && typos 2006-11-10 09:59:49 +09:00
gdth.h [SCSI] drivers/scsi/gdth.h: removal of old scsi code 2006-09-26 11:35:16 -07:00
gvp11.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
gvp11.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
hosts.c [SCSI] export scsi-ml functions needed by tgt_scsi_lib and its LLDs 2006-11-25 13:08:56 -06:00
hptiop.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
hptiop.h [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver 2006-06-10 10:36:13 -05:00
ibmmca.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ibmmca.h
ide-scsi.c [PATCH] ide_scsi: allow it to be used for non CD only 2006-12-07 08:39:43 -08:00
imm.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
imm.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
in2000.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
in2000.h
initio.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
initio.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ipr.c [SCSI] ipr: remove duplicate device id 2007-01-30 10:34:29 -06:00
ipr.h [SCSI] ipr: Driver version 2.3.1 2007-01-27 09:26:36 -06:00
ips.c [SCSI] revert "[SCSI] ips soft lockup during reset/initialization" 2006-11-15 16:40:50 -06:00
ips.h [SCSI] ips: fix soft lockup during reset initialization 2006-11-15 16:43:30 -06:00
iscsi_tcp.c [SCSI] iscsi: simplify IPv6 and IPv4 address printing 2007-01-06 09:01:38 -06:00
iscsi_tcp.h Merge mulgrave-w:git/scsi-misc-2.6 2006-09-23 15:33:43 -05:00
jazz_esp.c [SCSI] More buffer->request_buffer changes 2006-07-14 09:41:13 -05:00
Kconfig Merge branch 'linus' 2007-01-31 11:24:00 -06:00
lasi700.c [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
libiscsi.c [SCSI] libiscsi: fix senselen calculation 2007-01-06 09:02:09 -06:00
libsrp.c [SCSI] scsi tgt: SCSI RDMA Protocol library functions 2006-12-03 09:27:33 -06:00
mac53c94.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mac53c94.h
mac_esp.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mac_scsi.c [PATCH] m68k: convert mac irq code 2006-06-25 10:00:58 -07:00
mac_scsi.h
Makefile [SCSI] SNI RM 53c710 driver 2007-01-13 13:49:58 -06:00
mca_53c9x.c
megaraid.c [SCSI] megaraid: fix MMIO casts 2006-12-05 10:25:35 -06:00
megaraid.h [SCSI] megaraid: fix MMIO casts 2006-12-05 10:25:35 -06:00
mesh.c [PATCH] fix mesh compile errors after irq changes 2006-10-06 12:11:08 -07:00
mesh.h
mvme16x.c
mvme16x.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mvme147.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mvme147.h [SCSI] wd33c93: Scsi_Cmnd convertion 2006-09-12 17:12:31 -05:00
ncr53c8xx.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2006-12-05 16:09:46 -08:00
ncr53c8xx.h Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
NCR53c406a.c [SCSI] minor bug fixes and cleanups 2006-11-15 16:41:27 -06:00
NCR53C9x.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
NCR53C9x.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
NCR5380.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
NCR5380.h WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
NCR_D700.c [SCSI] NCR_D700: fix compile error 2007-01-27 09:28:58 -06:00
NCR_D700.h
NCR_Q720.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
nsp32.h [SCSI] drivers/scsi/nsp32.h: removal of old scsi code 2006-09-26 10:39:00 -07:00
oktagon_esp.c [PATCH] More work_struct induced breakage (s390) 2006-12-06 14:51:14 -08:00
oktagon_io.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
osst_detect.h
osst_options.h
osst.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
osst.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
pas16.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
pas16.h
pci2000.h
pluto.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
pluto.h
ppa.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
ppa.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
psi240i.c [SCSI] psi240i.c: fix an array overrun 2006-11-10 10:01:42 +09:00
psi240i.h [SCSI] Scsi_Cmnd conversion in psi240i driver 2006-10-25 15:12:38 -07:00
psi_chip.h
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c [SCSI] qla1280: set residual correctly 2007-01-06 09:33:18 -06:00
qla1280.h
qlogicfas408.c [SCSI] Scsi_Cmnd conversion in qlogicfas408 driver 2006-10-25 15:11:55 -07:00
qlogicfas408.h [SCSI] Scsi_Cmnd conversion in qlogicfas408 driver 2006-10-25 15:11:55 -07:00
qlogicfas.c
qlogicpti_asm.c [SPARC]: Fix some section mismatch warnings in sparc drivers. 2006-10-17 19:28:51 -07:00
qlogicpti.c [SPARC]: Fix some section mismatch warnings in sparc drivers. 2006-10-17 19:28:51 -07:00
qlogicpti.h
raid_class.c [SCSI] raid class: handle component-add errors 2006-10-04 13:27:26 -05:00
script_asm.pl
scsi_debug.c [SCSI] scsi_debug: error processing 2007-01-13 13:52:37 -06:00
scsi_debug.h
scsi_devinfo.c [SCSI] scsi_devinfo: scsi2 HP and Hitachi entries 2006-10-01 15:09:19 -05:00
scsi_error.c [SCSI] Fix sense key MEDIUM ERROR processing and retry 2007-01-31 12:18:52 -06:00
scsi_ioctl.c [PATCH] scsi: kill overeager "not-ready" messages 2006-07-28 09:04:09 +02:00
scsi_lib.c [SCSI] kill scsi_rety_command 2007-01-13 13:50:21 -06:00
scsi_logging.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
scsi_module.c
scsi_netlink.c [SCSI] SCSI and FC Transport: add netlink support for posting of transport events 2006-09-02 15:33:49 -05:00
scsi_priv.h [SCSI] scsi_error.c: Export some scsi_eh_* functions 2007-01-27 10:06:34 -06:00
scsi_proc.c [SCSI] Improve inquiry printing 2006-08-06 15:59:26 -05:00
scsi_sas_internal.h [SCSI] scsi_transport_sas: introduce a sas_port entity 2006-06-28 12:40:54 -04:00
scsi_scan.c Merge branch 'linus' 2007-01-31 11:24:00 -06:00
scsi_sysctl.c
scsi_sysfs.c WorkStruct: Pass the work_struct pointer instead of context data 2006-11-22 14:55:48 +00:00
scsi_tgt_if.c [SCSI] tgt: fix undefined flush_dcache_page() problem 2006-12-05 09:59:47 -06:00
scsi_tgt_lib.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
scsi_tgt_priv.h [SCSI] scsi tgt: scsi target lib functionality 2006-11-25 13:17:18 -06:00
scsi_transport_api.h [PATCH] SCSI: make scsi_implement_eh() generic API for SCSI transports 2006-05-20 00:39:08 -04:00
scsi_transport_fc.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
scsi_transport_iscsi.c [SCSI] iscsi: newline in printk 2007-01-06 09:00:37 -06:00
scsi_transport_sas.c [SCSI] libsas: Check return values of sysfs_create_link 2007-01-27 10:05:29 -06:00
scsi_transport_spi.c [SCSI] spi transport class: export spi_dv_pending 2007-02-02 20:44:25 -06:00
scsi_typedefs.h [SCSI] remove scsi_request infrastructure 2006-06-10 16:24:40 -05:00
scsi_wait_scan.c [SCSI] Add ability to scan scsi busses asynchronously 2006-10-11 13:44:25 -05:00
scsi.c [SCSI] kill scsi_rety_command 2007-01-13 13:50:21 -06:00
scsi.h [SCSI] remove unnecessary includes of linux/config.h from drivers/scsi/ 2006-08-19 13:39:11 -07:00
scsicam.c [SCSI] Bogus disk geometry on large disks 2006-06-26 16:33:10 -05:00
sd.c [PATCH] struct path: convert scsi 2006-12-08 08:28:49 -08:00
seagate.c [SCSI] seagate: remove BROKEN tag 2007-01-03 16:57:38 -06:00
sg.c [SCSI] sg: fix incorrect last scatg length 2006-11-09 14:28:01 +09:00
sgiwd93.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
sim710.c [SCSI] 53c700: Allow setting burst length 2007-01-13 13:44:30 -06:00
sni_53c710.c [SCSI] SNI RM 53c710 driver 2007-01-13 13:49:58 -06:00
sr_ioctl.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
sr_vendor.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
sr.c [SCSI] sr: fix error code check in sr_block_ioctl() 2007-01-06 09:05:50 -06:00
sr.h [PATCH] kill cdrom ->dev_ioctl method 2006-03-23 07:38:09 -08:00
st_options.h
st.c [SCSI] st: fix Tape dies if wrong block size used, bug 7919 2007-02-03 08:05:47 -06:00
st.h [SCSI] st: fix Tape dies if wrong block size used, bug 7919 2007-02-03 08:05:47 -06:00
stex.c [SCSI] stex: version update 2006-12-05 11:33:58 -06:00
sun3_NCR5380.c [PATCH] m68k trivial build fixes 2006-12-17 10:21:53 -08:00
sun3_scsi_vme.c [PATCH] Sun3 SCSI: Make sun3 scsi drivers compile/work again 2006-12-09 09:41:18 -08:00
sun3_scsi.c [PATCH] Sun3 SCSI: Make sun3 scsi drivers compile/work again 2006-12-09 09:41:18 -08:00
sun3_scsi.h [PATCH] Sun3 SCSI: Make sun3 scsi drivers compile/work again 2006-12-09 09:41:18 -08:00
sun3x_esp.c [SCSI] More buffer->request_buffer changes 2006-07-14 09:41:13 -05:00
sym53c416.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
sym53c416.h
t128.c [PATCH] Use linux/io.h instead of asm/io.h 2006-10-11 11:14:23 -07:00
t128.h [SCSI] scsi: t128 scsi_cmnd convertion 2006-11-15 16:43:50 -06:00
tmscsim.c [SCSI] tmscsim: set max_sectors 2006-10-25 15:12:03 -07:00
tmscsim.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
u14-34f.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ultrastor.c Various drivers' irq handlers: kill dead code, needless casts 2006-10-06 15:00:58 -04:00
ultrastor.h [SCSI] scsi-driver ultrastore replace Scsi_Cmnd with struct scsi_cmnd 2006-09-07 12:39:34 -05:00
wd33c93.c [SCSI] More buffer->request_buffer changes 2006-07-14 09:41:13 -05:00
wd33c93.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
wd7000.c [PATCH] Use linux/io.h instead of asm/io.h 2006-10-11 11:14:23 -07:00
zalon.c [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00