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
blk-flush.c
blk-integrity.c
blk-ioc.c
blk-iopoll.c
blk-lib.c
blk-map.c
blk-merge.c
blk-settings.c
blk-softirq.c
blk-sysfs.c
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
bsg.c
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
compat_ioctl.c
deadline-iosched.c
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
Kconfig
Kconfig.iosched
Makefile
noop-iosched.c
scsi_ioctl.c