diff -u xen-3.0.3_0-src.orig/tools/blktap/drivers/block-aio.c xen-3.0.3_0-src/tools/blktap/drivers/block-aio.c --- xen-3.0.3_0-src.orig/tools/blktap/drivers/block-aio.c 2006-11-16 14:10:25.000000000 -0500 +++ xen-3.0.3_0-src/tools/blktap/drivers/block-aio.c 2006-12-01 11:00:18.000000000 -0500 @@ -358,12 +358,8 @@ struct pending_aio *pio; pio = &prv->pending_aio[(long)io->data]; - - if (ep->res != io->u.c.nbytes) { - /* TODO: handle this case better. */ - DPRINTF("AIO did less than I asked it to. \n"); - } - rsp += pio->cb(s, ep->res2, pio->id, pio->private); + rsp += pio->cb(s, ep->res == io->u.c.nbytes ? 0 : 1, + pio->id, pio->private); prv->iocb_free[prv->iocb_free_count++] = io; } diff -u xen-3.0.3_0-src.orig/tools/blktap/drivers/block-qcow.c xen-3.0.3_0-src/tools/blktap/drivers/block-qcow.c --- xen-3.0.3_0-src.orig/tools/blktap/drivers/block-qcow.c 2006-10-15 08:22:03.000000000 -0400 +++ xen-3.0.3_0-src/tools/blktap/drivers/block-qcow.c 2006-12-01 11:03:27.000000000 -0500 @@ -1145,13 +1145,6 @@ pio = &prv->pending_aio[(long)io->data]; - if (ep->res != io->u.c.nbytes) { - /* TODO: handle this case better. */ - ptr = (int *)&ep->res; - DPRINTF("AIO did less than I asked it to " - "[%lu,%lu,%d]\n", - ep->res, io->u.c.nbytes, *ptr); - } aio_unlock(prv, pio->sector); if (pio->id >= 0) { if (prv->crypt_method) @@ -1162,7 +1155,7 @@ &prv->aes_decrypt_key); prv->nr_reqs[pio->qcow_idx]--; if (prv->nr_reqs[pio->qcow_idx] == 0) - rsp += pio->cb(s, ep->res2, pio->id, + rsp += pio->cb(s, ep->res == io->u.c.nbytes ? 0 : 1, pio->id, pio->private); } else if (pio->id == -2) free(pio->buf); diff -u xen-3.0.3_0-src.orig/tools/blktap/drivers/tapdisk.c xen-3.0.3_0-src/tools/blktap/drivers/tapdisk.c --- xen-3.0.3_0-src.orig/tools/blktap/drivers/tapdisk.c 2006-10-15 08:22:03.000000000 -0400 +++ xen-3.0.3_0-src/tools/blktap/drivers/tapdisk.c 2006-12-01 11:00:04.000000000 -0500 @@ -445,8 +445,7 @@ } if (res != 0) { - DPRINTF("*** request error %d! \n", res); - return 0; + blkif->pending_list[idx].status = BLKIF_RSP_ERROR; } blkif->pending_list[idx].count--;