1
linux/drivers
Christof Schmitt d74cf7c3e9 [SCSI] zfcp: Fix hang when offlining device with offline chpid
Running chchp --vary 0 and chccwdev -d on a FCP device with scsi
devices attached can lead to this thread hanging:

================================================================
STACK TRACE FOR TASK: 0x2fbfcc00 (kslowcrw)

 STACK:
 0 schedule+1136 [0x45f99c]
 1 schedule_timeout+534 [0x46054e]
 2 wait_for_common+374 [0x45f442]
 3 blk_execute_rq+160 [0x217a2c]
 4 scsi_execute+278 [0x26daf2]
 5 scsi_execute_req+150 [0x26dc86]
 6 sd_sync_cache+138 [0x28460a]
 7 sd_shutdown+130 [0x28486a]
 8 sd_remove+104 [0x284c84]
 9 __device_release_driver+152 [0x257430]
10 device_release_driver+56 [0x2575c8]
11 bus_remove_device+214 [0x25672a]
12 device_del+352 [0x25456c]
13 __scsi_remove_device+108 [0x272630]
14 scsi_remove_device+66 [0x2726ba]
15 zfcp_ccw_remove+824 [0x335558]
16 ccw_device_remove+62 [0x2b3f2a]
17 __device_release_driver+152 [0x257430]
18 device_release_driver+56 [0x2575c8]
19 bus_remove_device+214 [0x25672a]
20 device_del+352 [0x25456c]
21 ccw_device_unregister+92 [0x2b48c4]
22 io_subchannel_remove+108 [0x2b4950]
23 css_remove+62 [0x2af7ee]
24 __device_release_driver+152 [0x257430]
25 device_release_driver+56 [0x2575c8]
26 bus_remove_device+214 [0x25672a]
27 device_del+352 [0x25456c]
28 device_unregister+38 [0x25464a]
29 css_sch_device_unregister+68 [0x2af97c]
30 ccw_device_call_sch_unregister+78 [0x2b581e]
31 worker_thread+604 [0x69eb0]
32 kthread+154 [0x6ff42]
33 kernel_thread_starter+6 [0x1c952]
================================================================

The problem is that the chchp --vary 0 leads to zfcp first calling
fc_remote_port_delete which blocks all scsi devices on the remote
port. Calling scsi_remove_device later lets the sd driver issue a
SYNCHRONIZE_CACHE command. This command stays on the "stopped" request
requeue because the SCSI device is blocked. Fix this by first removing
the scsi and fc hosts which removes all scsi devices and do not use
scsi_remove_device.

Reviewed-by: Felix Beck <felix.beck@de.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2009-10-02 09:50:21 -05:00
..
accessibility
acpi ACPI: kill "unused variable ‘i’" warning 2009-09-27 11:58:36 -07:00
amba
ata
atm atm: dereference of he_dev->rbps_virt in he_init_group() 2009-09-28 12:45:29 -07:00
auxdisplay
base
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2009-09-23 09:23:45 -07:00
bluetooth
cdrom sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
char Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2009-09-30 07:58:25 -07:00
clocksource
connector
cpufreq
cpuidle
crypto
dca
dio
dma
edac edac: core: remove completion-wait for complete with rcu_barrier 2009-09-24 07:21:05 -07:00
eisa
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-09-23 09:43:22 -07:00
firmware
gpio Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2009-09-23 09:30:48 -07:00
gpu Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-09-30 08:03:00 -07:00
hid
hwmon Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2009-09-23 15:20:16 -07:00
i2c ACPI: i2c-scmi: don't use acpi_device_uid() 2009-09-26 01:42:07 -04:00
ide Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
idle
ieee1394 const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
ieee802154
infiniband const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
input input: fix build failures caused by Kconfig Winbond WPCD376I Consumer IR hardware driver Kconfig entry 2009-09-24 07:20:56 -07:00
isdn isdn: fix netjet/isdnhdlc build errors 2009-09-28 12:47:36 -07:00
leds Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds 2009-09-26 10:50:47 -07:00
lguest Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2009-09-23 09:23:45 -07:00
macintosh Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds 2009-09-26 10:50:47 -07:00
mca
md
media const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
memstick memstick: move dev_dbg 2009-09-24 07:21:05 -07:00
message
mfd mfd/gpio: add a GPIO interface to the UCB1400 MFD chip driver via gpiolib 2009-09-23 07:39:48 -07:00
misc const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
mmc Merge branch 'origin' into for-linus 2009-09-24 21:22:33 +01:00
mtd Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze 2009-09-24 09:01:44 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-30 08:07:12 -07:00
nubus
of of: remove "stm,m25p40" alias 2009-09-23 07:39:43 -07:00
oprofile cpumask: use zalloc_cpumask_var() where possible 2009-09-24 09:34:24 +09:30
parisc
parport sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
pci ACPICA: fixup after acpi_get_object_info() change 2009-09-25 14:24:22 -04:00
pcmcia MIPS: BCM63xx: Add PCMCIA & Cardbus support. 2009-09-30 21:47:01 +02:00
platform Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-30 08:07:12 -07:00
pnp ACPI: remove acpi_device.flags.hardware_id 2009-09-25 15:09:48 -04:00
power
pps
ps3
rapidio
regulator
rtc Merge branch 'origin' into for-linus 2009-09-24 21:22:33 +01:00
s390 [SCSI] zfcp: Fix hang when offlining device with offline chpid 2009-10-02 09:50:21 -05:00
sbus
scsi [SCSI] mpt2sas: Bump version 02.100.03.00 2009-10-02 09:49:24 -05:00
serial MIPS: BCM63xx: Add serial driver for bcm63xx integrated UART. 2009-09-30 21:46:59 +02:00
sfi
sh
sn
spi Merge branch 'origin' into for-linus 2009-09-24 21:22:33 +01:00
ssb ssb/sdio: fix printk format warnings 2009-09-23 11:35:41 -04:00
staging Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2009-09-24 15:13:11 -07:00
tc
telephony
thermal
uio const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
usb tty: Fix regressions caused by commit b50989dc 2009-09-27 13:35:16 -07:00
uwb
video Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-09-30 08:03:00 -07:00
virtio
vlynq drivers/vlynq/vlynq.c: fix resource size off by 1 error 2009-09-24 07:21:05 -07:00
w1
watchdog [WATCHDOG] Add support for the Avionic Design Xanthos watchdog timer. 2009-09-25 08:38:16 +00:00
xen
zorro
Kconfig
Makefile Merge git://git.infradead.org/mtd-2.6 2009-09-23 10:07:49 -07:00