qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [PATCH 2/3] block-nbd: fix use of protocols in back


From: Anthony Liguori
Subject: Re: [Qemu-devel] Re: [PATCH 2/3] block-nbd: fix use of protocols in backing files and nbd probing
Date: Thu, 16 Sep 2010 10:40:31 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100826 Lightning/1.0b1 Thunderbird/3.0.7

On 09/15/2010 11:06 AM, Juan Quintela wrote:
Anthony Liguori<address@hidden>  wrote:
The use of protocols in backing_files is currently broken because of some
checks for adjusting relative pathnames.

Additionally, there's a spurious read when using an nbd protocol that can be
quite destructive when using copy-on-read.  Potentially, this can lead to
probing an image file over top of NBD but this is completely wrong as NBD
devices are not growable.

Signed-off-by: Anthony Liguori<address@hidden>
---
NB: this is absolutely not ideal.  A more elegant suggestion would be
appreciated.  I don't think NBD cleanly fits the model of a protocol as it
stands today.
Bad, bad boy, you fixed two things in a single patch.

You're not supposed to notice that :-) It was an RFC series, I was really just looking to start a conversation.

@@ -603,10 +610,16 @@ int bdrv_open(BlockDriverState *bs, const char *filename, 
int flags,
          BlockDriver *back_drv = NULL;

          bs->backing_hd = bdrv_new("");
-        path_combine(backing_filename, sizeof(backing_filename),
-                     filename, bs->backing_file);
-        if (bs->backing_format[0] != '\0')
-            back_drv = bdrv_find_format(bs->backing_format);
+        back_drv = bdrv_find_protocol(bs->backing_file);
+        if (!back_drv) {
+            path_combine(backing_filename, sizeof(backing_filename),
+                         filename, bs->backing_file);
+            if (bs->backing_format[0] != '\0')
+                back_drv = bdrv_find_format(bs->backing_format);
+        } else {
+            pstrcpy(backing_filename, sizeof(backing_filename),
+                    bs->backing_file);
+        }

          /* backing files always opened read-only */
          back_flags =
But this one breaks my setup, I have to backout this patch to be able to
launch guests with qcow2 file images.

Kevin, do you have an opinion about the best way to resolve this?

The relative/absolute path is broken for non-file URIs. I think we could mark a protocol as having a file URI type or we could push the absolute/relative conversion down to the file/phys_dev protocol.

I think the former approach is probably the least invasive.

Regards,

Anthony LIguori

Later, Juan.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]