linux-IllusionX/block
Shaohua Li bcf30e75b7 block: improve rq_affinity placement
This patch reverts commit 35ae66e0a09ab70ed(block: Make rq_affinity = 1
work as expected). The purpose is to avoid an unnecessary IPI.
Let's take an example. My test box has cpu 0-7, one socket. Say request is
added from CPU 1, blk_complete_request() occurs at CPU 7. Without the reverted
patch, softirq will be done at CPU 7. With it, an IPI will be directed to CPU
0, and softirq will be done at CPU 0. In this case, doing softirq at CPU 0 and
CPU 7 have no difference from cache sharing point view and we can avoid an
ipi if doing it in CPU 7.
An immediate concern is this is just like QUEUE_FLAG_SAME_FORCE, but actually
not. blk_complete_request() is running in interrupt handler, and currently
I/O controller doesn't support multiple interrupts (I checked several LSI
cards and AHCI), so only one CPU can run blk_complete_request(). This is
still quite different as QUEUE_FLAG_SAME_FORCE.
Since only one CPU runs softirq, the only difference with below patch is
softirq not always runs at the first CPU of a group.

Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2011-08-11 10:39:04 +02:00
..
blk-cgroup.c
blk-cgroup.h
blk-core.c fail_make_request: cleanup should_fail_request 2011-07-26 16:49:46 -07:00
blk-exec.c [SCSI] fix crash in scsi_dispatch_cmd() 2011-07-21 14:21:18 -07:00
blk-flush.c allow blk_flush_policy to return REQ_FSEQ_DATA independent of *FLUSH 2011-08-09 20:32:09 +02:00
blk-integrity.c
blk-ioc.c Merge branch 'for-linus' into for-3.1/core 2011-07-01 16:17:13 +02:00
blk-iopoll.c
blk-lib.c block: fix patch import error in max_discard_sectors check 2011-07-23 20:34:59 +02:00
blk-map.c
blk-merge.c
blk-settings.c
blk-softirq.c block: improve rq_affinity placement 2011-08-11 10:39:04 +02:00
blk-sysfs.c block: strict rq_affinity 2011-07-23 20:44:25 +02:00
blk-tag.c
blk-throttle.c blk-throttle: correctly determine sync bio 2011-08-01 10:31:06 +02:00
blk-timeout.c
blk.h
bsg-lib.c bsg-lib: add module.h include 2011-08-02 10:43:35 +02:00
bsg.c bsg: fix address space warning from sparse 2011-06-20 13:27:45 +02:00
cfq-iosched.c cfq-iosched: Reduce linked group count upon group destruction 2011-08-02 09:24:09 +02:00
cfq.h
compat_ioctl.c compat_ioctl: fix warning caused by qemu 2011-07-01 22:32:26 +02:00
deadline-iosched.c iosched: prevent aliased requests from starving other I/O 2011-06-02 21:19:05 +02:00
elevator.c iosched: prevent aliased requests from starving other I/O 2011-06-02 21:19:05 +02:00
genhd.c block/genhd.c: remove useless cast in diskstats_show() 2011-08-02 12:43:50 +02:00
ioctl.c
Kconfig block: add bsg helper library 2011-07-31 22:05:09 +02:00
Kconfig.iosched
Makefile block: add bsg helper library 2011-07-31 22:05:09 +02:00
noop-iosched.c
scsi_ioctl.c