linux/block
Tejun Heo 53a08807c0 block: internal dequeue shouldn't start timer
blkdev_dequeue_request() and elv_dequeue_request() are equivalent and
both start the timeout timer.  Barrier code dequeues the original
barrier request but doesn't passes the request itself to lower level
driver, only broken down proxy requests; however, as the original
barrier code goes through the same dequeue path and timeout timer is
started on it.  If barrier sequence takes long enough, this timer
expires but the low level driver has no idea about this request and
oops follows.

Timeout timer shouldn't have been started on the original barrier
request as it never goes through actual IO.  This patch unexports
elv_dequeue_request(), which has no external user anyway, and makes it
operate on elevator proper w/o adding the timer and make
blkdev_dequeue_request() call elv_dequeue_request() and add timer.
Internal users which don't pass the request to driver - barrier code
and end_that_request_last() - are converted to use
elv_dequeue_request().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Mike Anderson <andmike@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-12-03 12:41:26 +01:00
..
as-iosched.c
blk-barrier.c block: internal dequeue shouldn't start timer 2008-12-03 12:41:26 +01:00
blk-core.c block: internal dequeue shouldn't start timer 2008-12-03 12:41:26 +01:00
blk-exec.c
blk-integrity.c
blk-ioc.c
blk-map.c When block layer fails to map iov, it calls bio_unmap_user to undo 2008-12-03 12:41:20 +01:00
blk-merge.c block: remove unused ll_new_mergeable() 2008-11-06 08:41:55 +01:00
blk-settings.c
blk-softirq.c
blk-sysfs.c
blk-tag.c
blk-timeout.c Block: use round_jiffies_up() 2008-11-06 08:42:49 +01:00
blk.h block: remove __generic_unplug_device() from exports 2008-10-17 14:03:08 +02:00
blktrace.c
bsg.c [PATCH] switch scsi_cmd_ioctl() to passing fmode_t 2008-10-21 07:47:14 -04:00
cfq-iosched.c
cmd-filter.c [PATCH] introduce fmode_t, do annotations 2008-10-21 07:47:06 -04:00
compat_ioctl.c compat_blkdev_driver_ioctl: Remove unused variable warning 2008-10-23 10:28:25 -07:00
deadline-iosched.c
elevator.c block: internal dequeue shouldn't start timer 2008-12-03 12:41:26 +01:00
genhd.c block: set disk->node_id before it's being used 2008-12-03 12:41:20 +01:00
ioctl.c block: make add_partition() return pointer to hd_struct 2008-11-18 15:08:56 +01:00
Kconfig
Kconfig.iosched
Makefile
noop-iosched.c
scsi_ioctl.c [PATCH] switch scsi_cmd_ioctl() to passing fmode_t 2008-10-21 07:47:14 -04:00