[libvirt] Curl/HTTP block device

Hi, I've noticed newer version of curl in last qemu changelog. It seems that its needed for curl block device. Unfortunatelly, I was not able to find out more. I tried to look into qemu source code and to some patches but I am not much wiser. As I understand it, qemu could be able to use a curl compatible URL as block device. Probably only in readonly mode but it still would be very usefull for i.e. ISO images. Can anyone point me in the right direction and more importantly, is this feature available via Libvirt? I checked the documentation on libvirt.org and it seems that remode disk can be only nbd/rbd/sheepdog. Radek

On 08/12/2011 04:31 AM, Radek Hladik wrote:
Hi, I've noticed newer version of curl in last qemu changelog. It seems that its needed for curl block device. Unfortunatelly, I was not able to find out more. I tried to look into qemu source code and to some patches but I am not much wiser. As I understand it, qemu could be able to use a curl compatible URL as block device. Probably only in readonly mode but it still would be very usefull for i.e. ISO images. Can anyone point me in the right direction and more importantly, is this feature available via Libvirt?
I believe you are correct that curl block devices are not yet supported in libvirt, but patches would be welcome. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On Tue, Aug 16, 2011 at 11:02:23AM -0600, Eric Blake wrote:
On 08/12/2011 04:31 AM, Radek Hladik wrote:
Hi, I've noticed newer version of curl in last qemu changelog. It seems that its needed for curl block device. Unfortunatelly, I was not able to find out more. I tried to look into qemu source code and to some patches but I am not much wiser. As I understand it, qemu could be able to use a curl compatible URL as block device. Probably only in readonly mode but it still would be very usefull for i.e. ISO images. Can anyone point me in the right direction and more importantly, is this feature available via Libvirt?
I believe you are correct that curl block devices are not yet supported in libvirt, but patches would be welcome.
We had previously rejected the idea of curl block devices as a crazy idea, but since we have now accepted config of NBD, Sheepdog, and other network based block devices, we can't justify leaving out the curl ones. So any patches for curl block devs are welcome. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Dne 16.8.2011 20:13, Daniel P. Berrange napsal(a):
On Tue, Aug 16, 2011 at 11:02:23AM -0600, Eric Blake wrote:
On 08/12/2011 04:31 AM, Radek Hladik wrote:
Hi, I've noticed newer version of curl in last qemu changelog. It seems that its needed for curl block device. Unfortunatelly, I was not able to find out more. I tried to look into qemu source code and to some patches but I am not much wiser. As I understand it, qemu could be able to use a curl compatible URL as block device. Probably only in readonly mode but it still would be very usefull for i.e. ISO images. Can anyone point me in the right direction and more importantly, is this feature available via Libvirt?
I believe you are correct that curl block devices are not yet supported in libvirt, but patches would be welcome.
We had previously rejected the idea of curl block devices as a crazy idea, but since we have now accepted config of NBD, Sheepdog, and other network based block devices, we can't justify leaving out the curl ones. So any patches for curl block devs are welcome.
Daniel
I was briefly looking what would it need to create such patch. I've been checking how nbd support is done but then I found out one difference. NBD and sheepdog are providing one driver where CURL provides at least 5: # ./qemu-kvm-015 -drive format=? Supported formats: ... nbd sheepdog ... tftp ftps ftp https http Should libvirt use all these as separate drive types or have one "metatype" i.e. curl? On the other hand I did not find any other argument but the source URL. Actually it could maybe work right away with specifying URL in file attribute for raw device but libvirt complains about non-existing file :-) What should disk element look like? qemu arguments are quite simple: -drive file=http://rip.7bf.de/current/RIPLinux-13.5-non-X.iso,if=ide,media=cdrom,boot=on And lastly, why do you find the idea of curl block device crazy? I think that its very handy solution as long as you understand the limitations (speed is the most important one :-) ). For example on our farm we have problem that if a customer wants to use some installation media or driver disk, we need to download it to shared storage (currently SMB share). Then she can use it in her guest XML definition. This way she just points her guest to use the device right from source URL. Radek
participants (3)
-
Daniel P. Berrange
-
Eric Blake
-
Radek Hladik