qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] qemu-img needs "-O host_device" describing
@ 2009-09-30 21:27 Adrian Bridgett
  2009-10-01  8:16 ` [Qemu-devel] " Adrian Bridgett
  2009-10-01  9:57 ` [Qemu-devel] " Kevin Wolf
  0 siblings, 2 replies; 6+ messages in thread
From: Adrian Bridgett @ 2009-09-30 21:27 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1090 bytes --]

I've been trying to convert some personal KVM qemu (raw) file images
to raw LVs using kvm-img -O raw.  There's a short version and long
version of this tale.

The short version is "here is a patch to add '-O host_device' to the
manpage", perhaps we should also warn if "kvm-img convert -O raw" is
used on a block device (or even just automatically use host_device?)

The long version is that first of all I changed block/raw-posix.c so
that it didn't try and ftruncat() block devices and then eventually
tracked down why "kvm-img convert -O raw" fails to block devices (it
seeks past holes effectively which is good on files, but not block
devices).

Digging a bit deeper I found reference to "host_device" type and it
turns out that using that as an output format fixes both these issues
- with only one buglet - a hopefully irrelevant error:

  kvm-img convert -O host_device /var/lib/vm/bishop-disk /dev/rootvg/bishop-disk 
  Unknown option 'size'

This on qemu-kvm 0.11.

Thanks,

Adrian
-- 
bitcube.co.uk - Linux infrastructure consultancy
Puppet, Debian, Red Hat, Ubuntu, CentOS, ...

[-- Attachment #2: qemu-truncate.diff --]
[-- Type: text/x-diff, Size: 490 bytes --]

--- qemu-kvm-0.11.0~rc2.orig/block/raw-posix.c
+++ qemu-kvm-0.11.0~rc2/block/raw-posix.c
@@ -867,7 +867,12 @@
     if (fd < 0) {
         result = -errno;
     } else {
-        if (ftruncate(fd, total_size * 512) != 0) {
+        struct stat stat;
+        if (!fstat(fd,&stat)) {
+          result = -errno;
+        }
+        if ((stat.st_mode & S_IFREG) && 
+            (ftruncate(fd, total_size * 512) != 0)) {
             result = -errno;
         }
         if (close(fd) != 0) {

[-- Attachment #3: qemu-host_device.diff --]
[-- Type: text/x-diff, Size: 526 bytes --]

--- qemu-kvm-0.11.0.orig/qemu-img.texi
+++ qemu-kvm-0.11.0/qemu-img.texi
@@ -37,6 +37,12 @@
 space. Use @code{qemu-img info} to know the real size used by the
 image or @code{ls -ls} on Unix/Linux.
 
+@item host_device
+
+Host device format. This format should be used instead of raw when
+converting to block devices or other devices where "holes" are not
+supported.
+
 @item qcow2
 QEMU image format, the most versatile format. Use it to have smaller
 images (useful if your filesystem does not supports holes, for example

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-10-01 23:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-30 21:27 [Qemu-devel] qemu-img needs "-O host_device" describing Adrian Bridgett
2009-10-01  8:16 ` [Qemu-devel] " Adrian Bridgett
2009-10-01  9:57 ` [Qemu-devel] " Kevin Wolf
2009-10-01 10:48   ` Adrian Bridgett
2009-10-01 12:07     ` Kevin Wolf
2009-10-01 23:42       ` Jamie Lokier

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).