xen-devel
[Xen-devel] Re: [Qemu-devel] [PATCH 05/10] xen: add block device backend
On Wed, Apr 01, 2009 at 11:39:37PM +0200, Gerd Hoffmann wrote:
> +static void inline blkif_get_x86_32_req(blkif_request_t *dst,
> blkif_x86_32_request_t *src)
> +{
> +static void inline blkif_get_x86_64_req(blkif_request_t *dst,
> blkif_x86_64_request_t *src)
> +{
I think you'd be better of moving them to the .c file as normal static
function and leave the inlining decisions to the compiler.
> +
> +/*
> + * FIXME: the code is designed to handle multiple outstanding
> + * requests, which isn't used right now. Plan is to
> + * switch over to the aio block functions once they got
> + * vector support.
> + */
We already have bdrv_aio_readv/writev which currently linearize the
buffer underneath. Hopefully Anthony will have commited the patch to
implement the real one while I'm writing this, too :)
After those patches bdrv_aio_read/write will be gone so this code won't
compile anymore, too.
> +static int ioreq_runio_qemu_aio(struct ioreq *ioreq)
> +{
> + struct XenBlkDev *blkdev = ioreq->blkdev;
> + int i, len = 0;
> + off_t pos;
> +
> + if (-1 == ioreq_map(ioreq))
> + goto err;
> +
> + ioreq->aio_inflight++;
> + if (ioreq->presync)
> + bdrv_flush(blkdev->bs); /* FIXME: aio_flush() ??? */
> +
> + switch (ioreq->req.operation) {
> + case BLKIF_OP_READ:
> + pos = ioreq->start;
> + for (i = 0; i < ioreq->vecs; i++) {
> + ioreq->aio_inflight++;
> + bdrv_aio_read(blkdev->bs, pos / BLOCK_SIZE,
> + ioreq->vec[i].iov_base,
> + ioreq->vec[i].iov_len / BLOCK_SIZE,
> + qemu_aio_complete, ioreq);
> + len += ioreq->vec[i].iov_len;
> + pos += ioreq->vec[i].iov_len;
> + }
hdrv_flush doesn't actually empty the aio queues but only issues
a fsync. So we could still re-order requeuests around the barrier
with this implementation. I will soon submit a real block-layer level
barrier implementation that just allows to flag a bdrv_aio_read/write
request as barrier and deal with this under the hood.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [PATCH 03/10] xen: add console backend driver., (continued)
- [Xen-devel] [PATCH 03/10] xen: add console backend driver., Gerd Hoffmann
- [Xen-devel] [PATCH 02/10] xen: backend driver core, Gerd Hoffmann
- [Xen-devel] [PATCH 04/10] xen: add framebuffer backend driver, Gerd Hoffmann
- [Xen-devel] [PATCH 06/10] xen: add net backend driver., Gerd Hoffmann
- [Xen-devel] [PATCH 09/10] simplify vga selection, Gerd Hoffmann
- [Xen-devel] [PATCH 10/10] xen: add -vga xenfb option, configure xenfb, Gerd Hoffmann
- [Xen-devel] [PATCH 07/10] xen: blk & nic configuration via cmd line., Gerd Hoffmann
- [Xen-devel] [PATCH 08/10] xen: pv domain builder., Gerd Hoffmann
- [Xen-devel] [PATCH 05/10] xen: add block device backend driver., Gerd Hoffmann
[Xen-devel] Re: [Qemu-devel] [PATCH 00/10] xen: pv domain support., Anthony Liguori
Message not available
|
|
|