[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH RFC 3/3] Virtio draft III: example block driver
On Sun, 2007-06-17 at 17:25 +0300, Avi Kivity wrote: > Rusty Russell wrote: > > + /* Set up for reply. */ > > + vblk->sg[0].page = virt_to_page(&vbr->in_hdr); > > + vblk->sg[0].offset = offset_in_page(&vbr->in_hdr); > > + vblk->sg[0].length = sizeof(vbr->in_hdr); > > + num = blk_rq_map_sg(q, vbr->req, vblk->sg+1); > > + vbr->out_hdr.id = vblk->vdev->ops->add_inbuf(vblk->vdev, vblk->sg, > > + 1+num, vbr); > > + if (IS_ERR_VALUE(vbr->out_hdr.id)) > > + goto full; > > + > > + vblk->sg[0].page = virt_to_page(&vbr->out_hdr); > > + vblk->sg[0].offset = offset_in_page(&vbr->out_hdr); > > + vblk->sg[0].length = sizeof(vbr->out_hdr); > > + > > + vbr->out_id = vblk->vdev->ops->add_outbuf(vblk->vdev, vblk->sg, 1, > > + vbr); > > This strikes me as wasteful. Why not set up a single descriptor which > contains both placement and the data itself? We could actually do this for write, but not for read (where the length & sector need to be sent to other end, and the data comes from other end). The strict separation of in and out in virtio is to support both untrusted inter-guest I/O (admittedly not useful for block devices) and socket-style hypercall interfaces. Thanks, Rusty. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |