android_kernel_xiaomi_sm8350/drivers/scsi
Matthew Wilcox 6b7f123f37 [SCSI] Fix async scanning double-add problems
Stress-testing and some thought has revealed some places where
asynchronous scanning needs some more attention to locking.

 - Since async_scan is a bit, we need to hold the host_lock while
   modifying it to prevent races against other CPUs modifying the word
   that bit is in.  This is probably a theoretical race for the moment,
   but other patches may change that.
 - The async_scan bit means not only that this host is being scanned
   asynchronously, but that all the devices attached to this host are not
   yet added to sysfs.  So we must ensure that this bit is always in sync.
   I've chosen to do this with the scan_mutex since it's already acquired
   in most of the right places.
 - If the host changes state to deleted while we're in the middle of
   a scan, we'll end up with some devices on the host's list which must
   be deleted.  Add a check to scsi_sysfs_add_devices() to ensure the
   host is still running.
 - To avoid the async_scan bit being protected by three locks, the
   async_scan_lock now only protects the scanning_list.

Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2007-10-12 14:38:24 -04:00
..
aacraid [SCSI] aacraid: prevent panic on adapter resource failure 2007-08-04 09:46:43 -05:00
aic7xxx [SCSI] aic7xxx: cap maxsync according to correct card limits 2007-07-31 10:44:26 -05:00
aic7xxx_old
aic94xx [SCSI] libsas: Remove PCI dependencies 2007-07-26 09:42:43 -04:00
arcmsr Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-15 16:51:54 -07:00
arm Remove the arm26 port 2007-07-31 15:39:39 -07:00
dpt
ibmvscsi [SCSI] tgt: convert ibmvstgt to use transport tsk_mgmt_response callback 2007-10-12 14:38:04 -04:00
libsas [SCSI] libsas: fix build dependencies on libata 2007-07-31 10:40:48 -05:00
lpfc [SCSI] lpfc : scsi command accessor fix for 8.2.2 2007-08-03 11:30:09 -05:00
megaraid some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
pcmcia Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-22 11:36:49 -07:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.02.00-k3. 2007-08-15 13:03:57 -05:00
qla4xxx mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
sym53c8xx_2 [SCSI] sym53c8xx: don't claim cpqarray device 2007-07-24 18:38:46 -04:00
.gitignore
3w-9xxx.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-22 11:36:49 -07:00
3w-9xxx.h [SCSI] 3w-9xxx: add support for 9690SA 2007-07-21 08:57:40 -05:00
3w-xxxx.c [SCSI] 3w-xxxx: convert to use the data buffer accessors 2007-05-30 23:29:32 -05:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c [SCSI] 53c700: Remove printk, which triggers because of low scsi clock on SNI RMs 2007-07-14 19:12:43 -05:00
53c700.h [SCSI] 53c700: m68k support for the 53c700 SCSI core 2007-06-17 16:15:56 -05:00
53c700.scr
a100u2w.c [SCSI] a100u2w: Convert into Linux style 2007-06-17 16:09:29 -05:00
a100u2w.h [SCSI] a100u2w: Convert into Linux style 2007-06-17 16:09:29 -05:00
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c [SCSI] a4000t, zorro7xx, mvme16x, bvme6000,sim710: xxx_device_remove seems buggy 2007-07-18 11:17:57 -05:00
advansys.c [SCSI] advansys: lindent and other large, uninteresting changes 2007-07-27 11:41:40 -04:00
aha152x.c [SCSI] aha152x: use data accessors and !use_sg cleanup 2007-08-04 09:14:49 -05:00
aha152x.h [SCSI] aha152x: fix debug mode symbol conflict 2007-08-04 09:11:06 -05:00
aha1542.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
aha1542.h
aha1740.c [SCSI] aha1740: convert to use the data buffer accessors 2007-05-26 19:12:56 -05:00
aha1740.h
aic7xxx_old.c [SCSI] aic7xxx_old: remove redundant GFP_ATOMIC from kmalloc 2007-07-15 09:34:45 -05:00
atari_dma_emul.c
atari_NCR5380.c [SCSI] atari_NCR5380: update_timeout removal 2007-06-04 09:55:15 -05:00
atari_scsi.c m68k: Atari SCSI driver compile fixes 2007-05-04 17:59:05 -07:00
atari_scsi.h m68k: Atari SCSI driver compile fixes 2007-05-04 17:59:05 -07:00
atp870u.c
atp870u.h
blz1230.c
blz2060.c
BusLogic.c [SCSI] BusLogic: convert to use the data buffer accessors 2007-05-26 19:21:37 -05:00
BusLogic.h
bvme6000_scsi.c [SCSI] a4000t, zorro7xx, mvme16x, bvme6000,sim710: xxx_device_remove seems buggy 2007-07-18 11:17:57 -05:00
ch.c [SCSI] ch: kmalloc/memset->kzalloc 2007-05-06 09:33:11 -05:00
constants.c
cyberstorm.c
cyberstormII.c
dc395x.c [SCSI] dc395x: convert to use the data buffer accessors 2007-07-15 10:04:49 -05:00
dc395x.h
dec_esp.c
dmx3191d.c
dpt_i2o.c [SCSI] dpt_i2o: convert to SCSI hotplug model 2007-07-31 10:49:58 -05:00
dpti.h [SCSI] dpt_i2o: convert to SCSI hotplug model 2007-07-31 10:49:58 -05:00
dtc.c
dtc.h
eata_generic.h
eata_pio.c
eata_pio.h
eata.c [SCSI] eata: convert to use the data buffer accessors 2007-05-26 19:13:55 -05:00
esp_scsi.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-15 16:51:54 -07:00
esp_scsi.h [SCSI] ESP: Revert ESP_BUS_TIMEOUT back down to 250 2007-07-31 10:51:25 -05:00
fastlane.c
fcal.c
fcal.h
fd_mcs.c
fdomain.c [SCSI] fdomain: fix PCMCIA-related warnings 2007-05-27 12:59:28 -05:00
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 [SCSI] gdth: remove redundant PCI stuff 2007-07-31 10:36:30 -05:00
gdth.h [SCSI] gdth: remove redundant PCI stuff 2007-07-31 10:36:30 -05:00
gvp11.c
gvp11.h
hosts.c [SCSI] initialize shost_data to zero 2007-08-01 08:51:32 -05:00
hptiop.c [SCSI] hptiop: convert to use the data buffer accessors 2007-06-17 18:35:14 -05:00
hptiop.h
ibmmca.c [SCSI] ibmmca: convert to use the data buffer accessors 2007-05-26 16:30:17 -05:00
ide-scsi.c drivers/scsi/ide-scsi.c: kmalloc + memset conversion to kzalloc 2007-08-01 23:46:45 +02:00
imm.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
imm.h
in2000.c
in2000.h
initio.c [SCSI] initio: convert to use the data buffer accessors 2007-05-26 19:13:27 -05:00
initio.h [SCSI] initio: Convert into a real Linux driver and update to modern style 2007-05-22 11:08:56 -05:00
ipr.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-15 16:51:54 -07:00
ipr.h [SCSI] ipr: Use PCI-E reset API for new ipr adapter 2007-05-08 11:54:40 -05:00
ips.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
ips.h [SCSI] ips: remove kernel 2.4 code 2007-05-24 09:14:41 -05:00
iscsi_tcp.c [SCSI] iscsi_tcp: Turn off bounce buffers 2007-07-27 09:12:54 -04:00
iscsi_tcp.h [SCSI] iscsi_tcp: fix handling of data buffer padding 2007-06-02 15:35:10 -04:00
jazz_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
Kconfig [SCSI] scsi_transport_srp: remove tgt dependencies 2007-10-12 14:38:09 -04:00
lasi700.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
libiscsi.c [SCSI] libiscsi: fix cmd seqeunce number checking 2007-07-27 09:12:05 -04:00
libsrp.c [SCSI] tgt: convert libsrp and ibmvstgt to use srp_transport 2007-10-12 14:37:57 -04:00
mac53c94.c [SCSI] mac53c94: convert to use the data buffer accessors 2007-05-26 19:07:50 -05:00
mac53c94.h
mac_esp.c
mac_scsi.c
mac_scsi.h
Makefile [SCSI] add srp transport class 2007-10-12 14:37:35 -04:00
mca_53c9x.c
megaraid.c [SCSI] megaraid_old: convert to use the data buffer accessors 2007-05-31 18:11:21 -04:00
megaraid.h [SCSI] megaraid: fix warnings when CONFIG_PROC_FS=n 2007-05-08 11:15:08 -05:00
mesh.c [SCSI] mesh: convert to use the data buffer accessors 2007-06-07 08:49:10 -05:00
mesh.h
mvme16x_scsi.c [SCSI] a4000t, zorro7xx, mvme16x, bvme6000,sim710: xxx_device_remove seems buggy 2007-07-18 11:17:57 -05:00
mvme147.c
mvme147.h
ncr53c8xx.c [SCSI] ncr53c8xx: convert to use the data buffer accessors 2007-07-15 10:03:03 -05:00
ncr53c8xx.h
NCR53c406a.c [SCSI] NCR53c406a: convert to use the data buffer accessors 2007-05-26 19:08:20 -05:00
NCR53C9x.c m68k: missing exports 2007-07-20 08:24:49 -07:00
NCR53C9x.h
NCR5380.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-15 16:51:54 -07:00
NCR5380.h [SCSI] ncr5380 warning fixes 2007-05-24 09:13:25 -05:00
NCR_D700.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
NCR_D700.h
NCR_Q720.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-15 16:51:54 -07:00
nsp32.h
oktagon_esp.c
oktagon_io.S
osst_detect.h
osst_options.h
osst.c
osst.h
pas16.c
pas16.h
pluto.c [SCSI] pluto: Use wait_for_completion_timeout. 2007-05-29 02:49:05 -07:00
pluto.h
ppa.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
ppa.h
ps3rom.c [SCSI] ps3rom: convert to use the data buffer accessors 2007-10-12 14:38:13 -04:00
psi240i.c
psi240i.h
psi_chip.h
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c [SCSI] qla1280: use DMA_64BIT_MASK instead of ~ 0ULL 2007-05-06 09:33:11 -05:00
qla1280.h
qlogicfas408.c [SCSI] qlogicfas408: convert to use the data buffer accessors 2007-05-26 19:21:09 -05:00
qlogicfas408.h
qlogicfas.c
qlogicpti_asm.c
qlogicpti.c [SCSI] qlogicpti: Some cosmetic changes 2007-08-02 09:02:42 -05:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_debug.c [SCSI] Make scsi_host_template::proc_name const char * instead of char *. 2007-07-19 12:06:26 -05:00
scsi_debug.h
scsi_devinfo.c [SCSI] add easyRAID to the no report luns blacklist 2007-07-28 10:00:28 -04:00
scsi_error.c Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
scsi_ioctl.c
scsi_lib_dma.c [SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA 2007-07-14 19:28:10 -05:00
scsi_lib.c [SCSI] fix write buffer length in scsi_req_map_sg() 2007-10-12 14:38:17 -04:00
scsi_logging.h
scsi_module.c
scsi_netlink.c [NETLINK]: Switch cb_lock spinlock to mutex and allow to override it 2007-04-25 22:29:03 -07:00
scsi_priv.h
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c [SCSI] Fix async scanning double-add problems 2007-10-12 14:38:24 -04:00
scsi_sysctl.c [SCSI] small cleanups 2007-07-18 11:16:32 -05:00
scsi_sysfs.c [SCSI] bsg: make class backlinks 2007-07-21 08:58:23 -05:00
scsi_tgt_if.c [SCSI] tgt: add I_T nexus support 2007-10-12 14:37:50 -04:00
scsi_tgt_lib.c [SCSI] tgt: move tsk_mgmt_response callback to transport class 2007-10-12 14:38:01 -04:00
scsi_tgt_priv.h [SCSI] tgt: add I_T nexus support 2007-10-12 14:37:50 -04:00
scsi_transport_api.h
scsi_transport_fc.c [SCSI] small cleanups 2007-07-18 11:16:32 -05:00
scsi_transport_iscsi.c [SCSI] iscsi class, iscsi_tcp, iser, qla4xxx: add netdevname sysfs attr 2007-06-02 15:38:04 -04:00
scsi_transport_sas.c [SCSI] bsg: make class backlinks 2007-07-21 08:58:23 -05:00
scsi_transport_spi.c
scsi_transport_srp_internal.h [SCSI] scsi_transport_srp: remove tgt dependencies 2007-10-12 14:38:09 -04:00
scsi_transport_srp.c [SCSI] scsi_transport_srp: remove tgt dependencies 2007-10-12 14:38:09 -04:00
scsi_typedefs.h
scsi_wait_scan.c
scsi.c mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
scsi.h
scsicam.c
sd.c [SCSI] sd: disentangle barriers in SCSI 2007-08-04 08:37:04 -05:00
seagate.c [SCSI] seagate: make seagate_st0x_detect() static 2007-07-18 11:16:46 -05:00
sg.c [SCSI] sg: remove unnecessary check 2007-05-28 09:08:32 -05:00
sgiwd93.c Convert SGI IP22 and specific drivers to platform_device. 2007-05-11 17:00:29 +01:00
sim710.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-22 11:36:49 -07:00
sni_53c710.c [SCSI] sni_53c710: Cleanup 2007-07-14 19:12:15 -05:00
sr_ioctl.c
sr_vendor.c
sr.c [BLOCK] Get rid of request_queue_t typedef 2007-07-24 09:28:11 +02:00
sr.h
st_options.h
st.c [SCSI] st: Use mutex instead of semaphore 2007-07-31 10:44:01 -05:00
st.h [SCSI] st: Use mutex instead of semaphore 2007-07-31 10:44:01 -05:00
stex.c [SCSI] stex: use resid for xfer len information 2007-07-14 18:59:10 -05:00
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sun_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
sym53c416.c [SCSI] sym53c416: convert to use the data buffer accessors 2007-05-26 19:08:50 -05:00
sym53c416.h
t128.c
t128.h
tmscsim.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
tmscsim.h [SCSI] tmscsim: Further clean-up of the driver 2007-07-14 18:56:33 -05:00
u14-34f.c [SCSI] u14-34f: convert to use the data buffer accessors 2007-05-26 19:19:04 -05:00
ultrastor.c [SCSI] ultrastor: convert to use the data buffer accessors 2007-05-26 19:18:38 -05:00
ultrastor.h
wd33c93.c [SCSI] wd33c93: cleanups 2007-07-18 11:16:38 -05:00
wd33c93.h
wd7000.c [SCSI] wd7000: convert to use the data buffer accessors 2007-05-26 19:18:10 -05:00
zalon.c
zorro7xx.c [SCSI] a4000t, zorro7xx, mvme16x, bvme6000,sim710: xxx_device_remove seems buggy 2007-07-18 11:17:57 -05:00