diff options
author | Ed Cashin <ecashin@coraid.com> | 2013-07-03 15:09:05 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 16:08:05 -0700 |
commit | 8030d34397e066deecb5ee9d17387fa767b12de2 (patch) | |
tree | b66a88cd47d47c46295ced5f5cd2ac073be19116 /drivers/block/aoe/aoe.h | |
parent | c378f70adbc1bbecd9e6db145019f14b2f688c7c (diff) | |
download | linux-8030d34397e066deecb5ee9d17387fa767b12de2.tar.gz linux-8030d34397e066deecb5ee9d17387fa767b12de2.tar.bz2 linux-8030d34397e066deecb5ee9d17387fa767b12de2.zip |
aoe: perform I/O completions in parallel
Some users have a large AoE target while others like to use many AoE
targets at the same time. In the latter case, there is an opportunity to
greatly improve aggregate throughput by allowing different threads to
complete the I/O associated with each target. For 36 targets, 4 KiB read
throughput roughly doubles, for example, with these changes in place.
Signed-off-by: Ed Cashin <ecashin@coraid.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/block/aoe/aoe.h')
-rw-r--r-- | drivers/block/aoe/aoe.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/block/aoe/aoe.h b/drivers/block/aoe/aoe.h index 175649468c95..c9698529df51 100644 --- a/drivers/block/aoe/aoe.h +++ b/drivers/block/aoe/aoe.h @@ -196,9 +196,11 @@ struct ktstate { struct completion rendez; struct task_struct *task; wait_queue_head_t *waitq; - int (*fn) (void); - char *name; + int (*fn) (int); + char name[12]; spinlock_t *lock; + int id; + int active; }; int aoeblk_init(void); @@ -222,6 +224,7 @@ int aoecmd_init(void); struct sk_buff *aoecmd_ata_id(struct aoedev *); void aoe_freetframe(struct frame *); void aoe_flush_iocq(void); +void aoe_flush_iocq_by_index(int); void aoe_end_request(struct aoedev *, struct request *, int); int aoe_ktstart(struct ktstate *k); void aoe_ktstop(struct ktstate *k); |