linux/arch/um/drivers
Jeff Dike a0044bdf60 uml: batch I/O requests
Send as many I/O requests to the I/O thread as possible, even though it will
still only handle one at a time.  This provides an opportunity to reduce
latency by starting one request before the previous one has been finished in
the driver.

Request handling is somewhat modernized by requesting sg pieces of a request
and handling them separately, finishing off the entire request after all the
pieces are done.

When a request queue stalls, normally because its pipe to the I/O thread is
full, it is put on the restart list.  This list is processed by starting up
the queues on it whenever there is some indication that progress might be
possible again.  Currently, this happens in the driver interrupt routine.
Some requests have been finished, so there is likely to be room in the pipe
again.

This almost doubles throughput when copying data between devices, but made no
noticable difference on anything else I tried.

Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-07 12:13:03 -07:00
..
chan_kern.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
chan_user.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
cow_sys.h uml: remove user_util.h 2007-05-07 12:13:01 -07:00
cow_user.c [PATCH] uml: fix patch mismerge 2006-05-01 18:17:44 -07:00
cow.h [PATCH] uml: avoid warnings for diffent names for an unsigned quadword 2006-04-11 06:18:37 -07:00
daemon_kern.c [SK_BUFF]: Introduce skb_mac_header() 2007-04-25 22:24:41 -07:00
daemon_user.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
daemon.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
fd.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
harddog_kern.c [PATCH] mark struct file_operations const 2 2007-02-12 09:48:44 -08:00
harddog_user.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
hostaudio_kern.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
line.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
Makefile [PATCH] uml: revert block driver use of host AIO 2005-10-12 08:22:26 -07:00
mcast_kern.c [SK_BUFF]: Introduce skb_mac_header() 2007-04-25 22:24:41 -07:00
mcast_user.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
mcast.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
mconsole_kern.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
mconsole_user.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
mmapper_kern.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
net_kern.c uml: drivers get release methods 2007-05-07 12:13:02 -07:00
net_user.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
null.c [PATCH] uml: locking documentation 2006-09-29 09:18:04 -07:00
pcap_kern.c [SK_BUFF]: Introduce skb_mac_header() 2007-04-25 22:24:41 -07:00
pcap_user.c uml: network interface hotplug error handling 2007-05-07 12:13:00 -07:00
pcap_user.h [PATCH] missed const in prototype 2006-10-10 15:37:24 -07:00
port_kern.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
port_user.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
port.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pty.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
random.c uml: start fixing os_read_file and os_write_file 2007-05-07 12:13:03 -07:00
slip_common.c [PATCH] uml: slirp and slip driver cleanups and fixes 2005-06-13 20:58:43 -07:00
slip_common.h [PATCH] uml: fix hugest stack users 2006-02-01 08:53:22 -08:00
slip_kern.c [SK_BUFF]: Introduce skb_mac_header() 2007-04-25 22:24:41 -07:00
slip_user.c uml: remove page_size() 2007-05-07 12:13:02 -07:00
slip.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
slirp_kern.c [SK_BUFF]: Introduce skb_mac_header() 2007-04-25 22:24:41 -07:00
slirp_user.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
slirp.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
ssl.c uml: fix umid in xterm titles 2007-05-07 12:13:02 -07:00
ssl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stderr_console.c [PATCH] uml: locking documentation 2006-09-29 09:18:04 -07:00
stdio_console.c uml: fix umid in xterm titles 2007-05-07 12:13:02 -07:00
stdio_console.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tty.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
ubd_kern.c uml: batch I/O requests 2007-05-07 12:13:03 -07:00
ubd_user.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
xterm_kern.c [PATCH] uml pt_regs fixes 2006-10-08 16:34:08 -07:00
xterm.c uml: remove user_util.h 2007-05-07 12:13:01 -07:00
xterm.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00