summaryrefslogtreecommitdiff
path: root/arch/um/include
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2005-09-03 22:57:46 (GMT)
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-05 07:06:23 (GMT)
commit09ace81c1d737bcbb2423db235ac980cac4d5de9 (patch)
treed31987b15d57429bd40843c02b2283b8e2d90cb0 /arch/um/include
parent75e5584c89d213d6089f64f22cd899fb172e4c95 (diff)
downloadlinux-09ace81c1d737bcbb2423db235ac980cac4d5de9.tar.xz
[PATCH] uml: add host AIO support to block driver
This adds AIO support to the ubd driver. The driver breaks a struct request into IO requests to the host, based on the hardware segments in the request and on any COW blocks covered by the request. The ubd IO thread is gone, since there is now an equivalent thread in the AIO module. There is provision for multiple outstanding requests now. Requests aren't retired until all pieces of it have been completed. The AIO requests have a shared count, which is decremented as IO operations come in until it reaches 0. This can be possibly moved to the request struct - haven't looked at this yet. Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/include')
-rw-r--r--arch/um/include/aio.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/um/include/aio.h b/arch/um/include/aio.h
index 423bae91..83f1687 100644
--- a/arch/um/include/aio.h
+++ b/arch/um/include/aio.h
@@ -14,15 +14,27 @@ struct aio_thread_reply {
};
struct aio_context {
+ enum aio_type type;
+ int fd;
+ void *data;
+ int len;
+ unsigned long long offset;
int reply_fd;
struct aio_context *next;
};
+#define INIT_AIO(aio_type, aio_fd, aio_data, aio_len, aio_offset, \
+ aio_reply_fd) \
+ { .type = aio_type, \
+ .fd = aio_fd, \
+ .data = aio_data, \
+ .len = aio_len, \
+ .offset = aio_offset, \
+ .reply_fd = aio_reply_fd }
+
#define INIT_AIO_CONTEXT { .reply_fd = -1, \
.next = NULL }
-extern int submit_aio(enum aio_type type, int fd, char *buf, int len,
- unsigned long long offset, int reply_fd,
- struct aio_context *aio);
+extern int submit_aio(struct aio_context *aio);
#endif