kernel-ark/drivers
Michael Holzheu 03cadd36d5 [S390] tape390: Fix request queue handling in block driver
When setting a channel attached tape online under Linux 2.6.31, the

"vol_id" process from udev hangs in sync_page():
 2 sync_page+144 [0x1dfaac]
 3 __wait_on_bit_lock+194 [0x58c23e]
 4 __lock_page+116 [0x1df9dc]
 5 truncate_inode_pages_range+728 [0x1ed7cc]
 6 __blkdev_put+244 [0x25f738]
 7 __fput+300 [0x229c4c]
 8 filp_close+122 [0x225a3a]

The reason for that is an error in the request queue handling. It can
happen that we fetch a request, but do not process it further because
the number of queued requests exceeds TAPEBLOCK_MIN_REQUEUE.
To fix this, we should call blk_peek_request() instead of
blk_fetch_request() in the while condition and fetch the request in
the loop body afterwards.

This bug was introduced with the patch "block: implement and enforce
request peek/start/fetch" (9934c8c045)

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2009-10-14 12:43:52 +02:00
..
accessibility
acpi
amba
ata ahci: Add ifdef wrapper to ahci_gtf_filter_workaround 2009-10-09 00:29:07 -04:00
atm
auxdisplay
base
block cciss: Add cciss_allow_hpsa module parameter 2009-10-13 09:18:22 +02:00
bluetooth
cdrom
char headers: Fix build after <linux/sched.h> removal 2009-10-13 10:20:16 -07:00
clocksource
connector connector: Fix incompatible pointer type warning 2009-10-06 01:39:51 -07:00
cpufreq
cpuidle
crypto
dca
dio
dma
edac Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-10-08 12:06:36 -07:00
eisa
firewire
firmware
gpio
gpu Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2009-10-09 09:19:23 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2009-10-13 10:10:33 -07:00
hwmon Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2009-10-11 11:23:33 -07:00
i2c
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 2009-10-08 11:59:06 -07:00
idle
ieee1394 headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
ieee802154
infiniband headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
input headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
isdn headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
leds
lguest headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
macintosh
mca
md block: Seperate read and write statistics of in_flight requests v2 2009-10-06 20:16:55 +02:00
media headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
memstick
message headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
mfd mfd: Fix twl4030 boot with twl4030 usb transceiver enabled 2009-10-12 15:19:23 +02:00
misc headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
mmc [ARM] pxamci: fix printing gpio numbers in pxamci_probe 2009-10-12 15:30:50 +08:00
mtd headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
net headers: Fix build after <linux/sched.h> removal 2009-10-13 10:20:16 -07:00
nubus
of
oprofile
parisc
parport
pci headers: Fix build after <linux/sched.h> removal 2009-10-13 10:20:16 -07:00
pcmcia
platform
pnp
power
pps
ps3
rapidio
regulator
rtc headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
s390 [S390] tape390: Fix request queue handling in block driver 2009-10-14 12:43:52 +02:00
sbus
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2009-10-11 11:12:33 -07:00
serial tty, serial: Fix race and NULL check in uart_close() 2009-10-12 10:21:33 -07:00
sfi
sh
sn
spi
ssb
staging Staging: comedi: fix build on arches that don't want comedi drivers 2009-10-09 13:47:25 -07:00
tc
telephony
thermal
uio headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
usb USB: musb: invert arch depend string 2009-10-12 14:36:28 -07:00
uwb headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
video Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2009-10-08 12:01:01 -07:00
virtio
vlynq
w1
watchdog
xen
zorro
Kconfig
Makefile