1
linux/block
Shaohua Li 3ec717b7ca block: don't delay blk_run_queue_async
Let's check a scenario:
1. blk_delay_queue(q, SCSI_QUEUE_DELAY);
2. blk_run_queue_async();
the second one will became a noop, because q->delay_work already has
WORK_STRUCT_PENDING_BIT set, so the delayed work will still run after
SCSI_QUEUE_DELAY. But blk_run_queue_async actually hopes the delayed
work runs immediately.

Fix this by doing a cancel on potentially pending delayed work
before queuing an immediate run of the workqueue.

Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2011-05-18 12:24:03 +02:00
..
blk-cgroup.c blk-throttle: Use task_subsys_state() to determine a task's blkio_cgroup 2011-05-16 15:24:08 +02:00
blk-cgroup.h blk-throttle: Use task_subsys_state() to determine a task's blkio_cgroup 2011-05-16 15:24:08 +02:00
blk-core.c block: don't delay blk_run_queue_async 2011-05-18 12:24:03 +02:00
blk-exec.c block: add blk_run_queue_async 2011-04-18 11:41:33 +02:00
blk-flush.c block: add blk_run_queue_async 2011-04-18 11:41:33 +02:00
blk-integrity.c dm: improve block integrity support 2011-04-05 23:52:43 +02:00
blk-ioc.c block: Clean up exit_io_context() source code. 2010-12-21 15:07:45 +01:00
blk-iopoll.c
blk-lib.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
blk-map.c block: check for proper length of iov entries earlier in blk_rq_map_user_iov() 2010-11-29 10:04:50 +01:00
blk-merge.c block: attempt to merge with existing requests on plug flush 2011-03-21 10:14:27 +01:00
blk-settings.c Revert "block: add callback function for unplug notification" 2011-04-18 09:54:05 +02:00
blk-softirq.c
blk-sysfs.c block: Remove the extra check in queue_requests_store 2011-04-19 13:51:53 +02:00
blk-tag.c
blk-throttle.c blk-throttle: Use task_subsys_state() to determine a task's blkio_cgroup 2011-05-16 15:24:08 +02:00
blk-timeout.c
blk.h block: get rid of QUEUE_FLAG_REENTER 2011-04-19 13:32:46 +02:00
bsg.c [SCSI] bsg: correct fault if queue object removed while dev_t open 2010-12-09 09:41:14 -06:00
cfq-iosched.c blk-throttle: Use task_subsys_state() to determine a task's blkio_cgroup 2011-05-16 15:24:08 +02:00
cfq.h blk-cgroup: Add unaccounted time to timeslice_used. 2011-03-12 16:54:00 +01:00
compat_ioctl.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
deadline-iosched.c block: remove per-queue plugging 2011-03-10 08:52:07 +01:00
elevator.c elevator: check for ELEVATOR_INSERT_SORT_MERGE in !elvpriv case too 2011-04-21 19:28:35 +02:00
genhd.c block: don't propagate unlisted DISK_EVENTs to userland 2011-04-21 19:43:58 +02:00
ioctl.c block: fix refcounting in BLKBSZSET 2011-02-24 08:54:21 -08:00
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Kconfig.iosched blk-cgroup: config options re-arrangement 2010-04-26 19:27:56 +02:00
Makefile Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block 2010-10-22 17:07:18 -07:00
noop-iosched.c block: remove per-queue plugging 2011-03-10 08:52:07 +01:00
scsi_ioctl.c block: take care not to overflow when calculating total iov length 2010-11-10 14:40:42 +01:00