linux/block
Boaz Harrosh 05378940ca bsg: add support for tail queuing
Currently inherited from sg.c bsg will submit asynchronous request
 at the head-of-the-queue, (using "at_head" set in the call to
 blk_execute_rq_nowait()). This is bad in situation where the queues
 are full, requests will execute out of order, and can cause
 starvation of the first submitted requests.

The sg_io_v4->flags member is used and a bit is allocated to denote the
Q_AT_TAIL. Zero is to queue at_head as before, to be compatible with old
code at the write/read path. SG_IO code path behavior was changed so to
be the same as write/read behavior. SG_IO was very rarely used and breaking
compatibility with it is OK at this stage.

sg_io_hdr at sg.h also has a flags member and uses 3 bits from the first
nibble and one bit from the last nibble. Even though none of these bits
are supported by bsg, The second nibble is allocated for use by bsg. Just
in case.

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
CC: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2009-03-24 12:35:17 +01:00
..
Kconfig block: Add Kconfig help which notes that ext4 needs CONFIG_LBD 2009-01-06 15:16:33 -05:00
Kconfig.iosched update I/O sched Kconfig help texts - CFQ is now default, not AS. 2007-02-17 20:08:22 +01:00
Makefile block: unify request timeout handling 2008-10-09 08:56:13 +02:00
as-iosched.c block: get rid of elevator_t typedef 2008-12-29 08:29:50 +01:00
blk-barrier.c block: Fix documentation for blkdev_issue_flush() 2009-01-30 12:34:37 +01:00
blk-core.c block: get rid of unused blkdev_free_rq() define 2009-03-24 12:35:16 +01:00
blk-exec.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-integrity.c block: Allow empty integrity profile 2009-01-30 12:34:36 +01:00
blk-ioc.c cfq-iosched: fix RCU race in the cfq io_context destructor handling 2008-05-07 09:28:57 +02:00
blk-map.c [SCSI] block: make blk_rq_map_user take a NULL user-space buffer for WRITE 2009-01-02 11:10:35 -06:00
blk-merge.c block: fix missing bio back/front segment size setting in blk_recount_segments() 2009-03-06 08:55:24 +01:00
blk-settings.c block: use min_not_zero in blk_queue_stack_limits 2008-12-29 08:29:51 +01:00
blk-softirq.c block: make blk_softirq_init() static 2008-12-29 08:29:51 +01:00
blk-sysfs.c block: add sysfs file for controlling io stats accounting 2009-01-30 12:34:38 +01:00
blk-tag.c block/blk-tag.c: cleanup kernel-doc 2008-12-29 08:28:43 +01:00
blk-timeout.c block: fix deadlock in blk_abort_queue() for drivers that readd to timeout list 2009-02-18 10:34:16 +01:00
blk.h block: fix oops in blk_queue_io_stat() 2009-02-02 08:42:32 +01:00
blktrace.c block: fix bad definition of BIO_RW_SYNC 2009-02-18 10:32:00 +01:00
bsg.c bsg: add support for tail queuing 2009-03-24 12:35:17 +01:00
cfq-iosched.c cfq-iosched: Allow RT requests to pre-empt ongoing BE timeslice 2009-01-30 12:47:33 +01:00
cmd-filter.c [PATCH] introduce fmode_t, do annotations 2008-10-21 07:47:06 -04:00
compat_ioctl.c block: don't take lock on changing ra_pages 2008-12-29 08:28:43 +01:00
deadline-iosched.c block: get rid of elevator_t typedef 2008-12-29 08:29:50 +01:00
elevator.c block: get rid of elevator_t typedef 2008-12-29 08:29:50 +01:00
genhd.c block: add documentation for register_blkdev() 2009-02-26 10:45:48 +01:00
ioctl.c block: don't take lock on changing ra_pages 2008-12-29 08:28:43 +01:00
noop-iosched.c block: get rid of elevator_t typedef 2008-12-29 08:29:50 +01:00
scsi_ioctl.c scsi-ioctl: use clock_t <> jiffies 2008-12-29 08:28:42 +01:00