From: Anthony Liguori <anthony@codemonkey.ws>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Citrix VHD implementation
Date: Mon, 02 Mar 2009 08:18:13 -0600 [thread overview]
Message-ID: <49ABEAA5.1010003@codemonkey.ws> (raw)
In-Reply-To: <49ACE6E7-4C5B-4AC5-A8FD-29D2201DE9D1@schmidp.com>
Philipp Schmid wrote:
> Hi,
>
> as some of you might know, citrix has open sourced the library they
> use to read and write to VHD disk images.
>
> I'm trying to implementing a block-vhd driver on top of libvhd, but my
> C knowledge is very limited as I haven't written any code in C for a
> long time.
>
> What I already have is a git repo with the libvhd code extracted from
> the xen-unstable tree with the blocktap2 patches applied.
> libvhd also comes with vhd-util, a utility to create and modify vhd
> images.
> I have only tried to compile it on ubuntu 8.10, so it might not work
> on your system.
>
> The git repo is hosted on github:
> http://github.com/schmidp/libvhd/tree/master
I took a look at the libvhd code. I don't think I'd want to replace the
QEMU vpc code with it so if you plan on pushing your work upstream
eventually, you may want to consider other options.
The libvhd code provides a synchronous IO interface. While it's
relatively clean wrt using a global context, you'd have to hold a lock
to ensure thread safety if you were to attempt to make it asynchronous
with threads. Because the read function blocks (while you were holding
the global context lock), it's more or less impossible to use threads to
make it asynchronous while supporting multiple requests.
The sum of this means that it's not going to fit into QEMU very well and
doesn't make sense as a long term mechanism for VHD support in QEMU.
Ideally, the libvhd code would be implemented entirely with asynchronous
IO functions that could be pluggable. That's quite a different beast
though from the current implementation.
Regards,
Anthony Liguori
> Are there any docs about how to implement a block driver for qemu?
> As far as I have seen from the qemu code, block_int.h defines the
> interface and you register your driver in block.c, but that is all
> I've found out so far.
>
> I will try to implement a synchrones driver first as it seems more
> simple...
>
>
> greets Philipp
>
> ps: I'm not affiliated with citrix in any way
>
>
>
next prev parent reply other threads:[~2009-03-02 14:18 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-28 18:56 [Qemu-devel] Citrix VHD implementation Philipp Schmid
2009-03-02 11:41 ` Stefano Stabellini
2009-03-02 11:55 ` Daniel P. Berrange
2009-03-02 14:18 ` Anthony Liguori [this message]
2009-03-02 17:41 ` Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49ABEAA5.1010003@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).