[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] For AIO return -ENOSPC on short write
From: |
Jes . Sorensen |
Subject: |
[Qemu-devel] [PATCH] For AIO return -ENOSPC on short write |
Date: |
Tue, 22 Feb 2011 11:18:00 +0100 |
From: Jes Sorensen <address@hidden>
Signed-off-by: Jes Sorensen <address@hidden>
---
linux-aio.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/linux-aio.c b/linux-aio.c
index 68f4b3d..d9c0225 100644
--- a/linux-aio.c
+++ b/linux-aio.c
@@ -32,6 +32,7 @@ struct qemu_laiocb {
ssize_t ret;
size_t nbytes;
int async_context_id;
+ int type;
QLIST_ENTRY(qemu_laiocb) node;
};
@@ -62,6 +63,9 @@ static void qemu_laio_process_completion(struct
qemu_laio_state *s,
if (ret != -ECANCELED) {
if (ret == laiocb->nbytes)
ret = 0;
+ else if ((laiocb->type == QEMU_AIO_WRITE) && (ret >= 0) &&
+ (ret < laiocb->nbytes))
+ ret = -ENOSPC;
else if (ret >= 0)
ret = -EINVAL;
@@ -204,6 +208,7 @@ BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void
*aio_ctx, int fd,
laiocb->nbytes = nb_sectors * 512;
laiocb->ctx = s;
laiocb->ret = -EINPROGRESS;
+ laiocb->type = type;
laiocb->async_context_id = get_async_context_id();
iocbs = &laiocb->iocb;
--
1.7.4