e02f3f5922
When James Smart fixed the issue of the userspace scan atributes crashing the system with the FC transport class he added a patch to let the transport class check if the parent is valid for a given transport class. When adding support for the integrated raid of fusion sas devices we ran into a problem with that, as it didn't allow adding virtual raid volumes without the transport class knowing about it. So this patch adds a user_scan attribute instead, that takes over from scsi_scan_host_selected if the transport class sets it and thus lets the transport class control the user-initiated scanning. As this plugs the hole about user-initiated scanning the target_parent hook goes away and we rely on callers of the scanning routines to do something sensible. For SAS this meant I had to switch from a spinlock to a mutex to synchronize the topology linked lists, in FC they were completely unsynchronized which seems wrong. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com> |
||
---|---|---|
.. | ||
aacraid | ||
aic7xxx | ||
aic7xxx_old | ||
arm | ||
dpt | ||
ibmvscsi | ||
lpfc | ||
megaraid | ||
pcmcia | ||
qla2xxx | ||
sym53c8xx_2 | ||
.gitignore | ||
3w-9xxx.c | ||
3w-9xxx.h | ||
3w-xxxx.c | ||
3w-xxxx.h | ||
53c7xx_d.h_shipped | ||
53c7xx_u.h_shipped | ||
53c7xx.c | ||
53c7xx.h | ||
53c7xx.scr | ||
53c700_d.h_shipped | ||
53c700.c | ||
53c700.h | ||
53c700.scr | ||
a100u2w.c | ||
a100u2w.h | ||
a2091.c | ||
a2091.h | ||
a3000.c | ||
a3000.h | ||
advansys.c | ||
advansys.h | ||
aha152x.c | ||
aha152x.h | ||
aha1542.c | ||
aha1542.h | ||
aha1740.c | ||
aha1740.h | ||
ahci.c | ||
aic7xxx_old.c | ||
amiga7xx.c | ||
amiga7xx.h | ||
ata_piix.c | ||
atari_dma_emul.c | ||
atari_NCR5380.c | ||
atari_scsi.c | ||
atari_scsi.h | ||
atp870u.c | ||
atp870u.h | ||
blz1230.c | ||
blz2060.c | ||
BusLogic.c | ||
BusLogic.h | ||
bvme6000.c | ||
bvme6000.h | ||
ch.c | ||
constants.c | ||
cyberstorm.c | ||
cyberstormII.c | ||
dc395x.c | ||
dc395x.h | ||
dec_esp.c | ||
dmx3191d.c | ||
dpt_i2o.c | ||
dpti.h | ||
dtc.c | ||
dtc.h | ||
eata_generic.h | ||
eata_pio.c | ||
eata_pio.h | ||
eata.c | ||
esp.c | ||
esp.h | ||
fastlane.c | ||
fcal.c | ||
fcal.h | ||
fd_mcs.c | ||
fdomain.c | ||
fdomain.h | ||
FlashPoint.c | ||
g_NCR5380_mmio.c | ||
g_NCR5380.c | ||
g_NCR5380.h | ||
gdth_ioctl.h | ||
gdth_kcompat.h | ||
gdth_proc.c | ||
gdth_proc.h | ||
gdth.c | ||
gdth.h | ||
gvp11.c | ||
gvp11.h | ||
hosts.c | ||
hosts.h | ||
ibmmca.c | ||
ibmmca.h | ||
ide-scsi.c | ||
imm.c | ||
imm.h | ||
in2000.c | ||
in2000.h | ||
initio.c | ||
initio.h | ||
ipr.c | ||
ipr.h | ||
ips.c | ||
ips.h | ||
iscsi_tcp.c | ||
iscsi_tcp.h | ||
jazz_esp.c | ||
Kconfig | ||
lasi700.c | ||
libata-core.c | ||
libata-scsi.c | ||
libata.h | ||
mac53c94.c | ||
mac53c94.h | ||
mac_esp.c | ||
mac_scsi.c | ||
mac_scsi.h | ||
Makefile | ||
mca_53c9x.c | ||
megaraid.c | ||
megaraid.h | ||
mesh.c | ||
mesh.h | ||
mvme16x.c | ||
mvme16x.h | ||
mvme147.c | ||
mvme147.h | ||
ncr53c8xx.c | ||
ncr53c8xx.h | ||
NCR53c406a.c | ||
NCR53C9x.c | ||
NCR53C9x.h | ||
NCR5380.c | ||
NCR5380.h | ||
NCR_D700.c | ||
NCR_D700.h | ||
NCR_Q720.c | ||
NCR_Q720.h | ||
nsp32_debug.c | ||
nsp32_io.h | ||
nsp32.c | ||
nsp32.h | ||
oktagon_esp.c | ||
oktagon_io.S | ||
osst_detect.h | ||
osst_options.h | ||
osst.c | ||
osst.h | ||
pas16.c | ||
pas16.h | ||
pci2000.h | ||
pdc_adma.c | ||
pluto.c | ||
pluto.h | ||
ppa.c | ||
ppa.h | ||
psi240i.c | ||
psi240i.h | ||
psi_chip.h | ||
ql1040_fw.h | ||
ql1280_fw.h | ||
ql12160_fw.h | ||
qla1280.c | ||
qla1280.h | ||
qlogicfas408.c | ||
qlogicfas408.h | ||
qlogicfas.c | ||
qlogicfc_asm.c | ||
qlogicfc.c | ||
qlogicpti_asm.c | ||
qlogicpti.c | ||
qlogicpti.h | ||
raid_class.c | ||
sata_mv.c | ||
sata_nv.c | ||
sata_promise.c | ||
sata_promise.h | ||
sata_qstor.c | ||
sata_sil24.c | ||
sata_sil.c | ||
sata_sis.c | ||
sata_svw.c | ||
sata_sx4.c | ||
sata_uli.c | ||
sata_via.c | ||
sata_vsc.c | ||
script_asm.pl | ||
scsi_debug.c | ||
scsi_debug.h | ||
scsi_devinfo.c | ||
scsi_error.c | ||
scsi_ioctl.c | ||
scsi_lib.c | ||
scsi_logging.h | ||
scsi_module.c | ||
scsi_priv.h | ||
scsi_proc.c | ||
scsi_scan.c | ||
scsi_sysctl.c | ||
scsi_sysfs.c | ||
scsi_transport_fc.c | ||
scsi_transport_iscsi.c | ||
scsi_transport_sas.c | ||
scsi_transport_spi.c | ||
scsi_typedefs.h | ||
scsi.c | ||
scsi.h | ||
scsicam.c | ||
sd.c | ||
seagate.c | ||
seagate.h | ||
sg.c | ||
sgiwd93.c | ||
sim710.c | ||
sr_ioctl.c | ||
sr_vendor.c | ||
sr.c | ||
sr.h | ||
st_options.h | ||
st.c | ||
st.h | ||
sun3_NCR5380.c | ||
sun3_scsi_vme.c | ||
sun3_scsi.c | ||
sun3_scsi.h | ||
sun3x_esp.c | ||
sym53c416.c | ||
sym53c416.h | ||
t128.c | ||
t128.h | ||
tmscsim.c | ||
tmscsim.h | ||
u14-34f.c | ||
ultrastor.c | ||
ultrastor.h | ||
wd33c93.c | ||
wd33c93.h | ||
wd7000.c | ||
zalon.c |