Hi,

the attached patch is an attempt to fix support of
virtual FAT disk images when used with -snapshot
option.
This combination doesn't work anymore in 0.9.0,
and the reason seems to be that code in block.c
that handles -snapshot, completely disregards
the different "filename" format used for vvfat.

The patch only restores the -hdX fat:dirname
functionality, while additional options such
as :rw:, :floppy: :32: etc, still fail, as some
functions (e.g. path_combine() and path_is_absolute())
only support the "fat:" prefix.

I'm not sure the fix is correct (I doubt code in
block.c should know specific issues of different
drivers), but it works for my needs, and maybe
somebody else is interested.

The patch is agains 0.9.0.

Best Regards,
Lorenzo
--- qemu-0.9.0/block.c.orig	2007-03-10 12:53:27.000000000 +0100
+++ qemu-0.9.0/block.c	2007-03-10 16:22:51.000000000 +0100
@@ -331,6 +331,7 @@
 
     if (flags & BDRV_O_SNAPSHOT) {
         BlockDriverState *bs1;
+        BlockDriver *drv1; 
         int64_t total_size;
         
         /* if snapshot, we create a temporary backing file and open it
@@ -346,10 +347,22 @@
             return -1;
         }
         total_size = bdrv_getlength(bs1) >> SECTOR_BITS;
+        drv1 = bs1->drv;
         bdrv_delete(bs1);
         
         get_tmp_filename(tmp_filename, sizeof(tmp_filename));
-        realpath(filename, backing_filename);
+        /*
+         * for vvfat protocol the string "fat:<options>:" should remain
+         * the prefix of the filename even after realpath() call ...
+         */
+        if (drv1 == &bdrv_vvfat) {
+            int i = strrchr(filename, ':') - filename + 1;
+
+            strncpy(backing_filename, filename, i);
+            realpath(filename + i, backing_filename + i);
+        } else {
+            realpath(filename, backing_filename);
+        }
         if (bdrv_create(&bdrv_qcow2, tmp_filename, 
                         total_size, backing_filename, 0) < 0) {
             return -1;
_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel

Reply via email to