qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC] Using BlockdevRef in the block layer


From: Max Reitz
Subject: Re: [Qemu-devel] [RFC] Using BlockdevRef in the block layer
Date: Fri, 06 Dec 2013 12:02:43 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1

On 06.12.2013 11:45, Kevin Wolf wrote:
Am 05.12.2013 um 19:35 hat Max Reitz geschrieben:
On 05.12.2013 18:41, Max Reitz wrote:
[…]

Second, if specifying a reference to an existing device should
really be supported, bdrv_open() should ideally not call
bdrv_file_open() anymore, but a function bdrv_find_ref() instead
which resolves a BlockdevRef structure (for simplicity, it appears
to be easier to use a QDict equivalent to a BlockdevRef instead of
the latter itself (since that results in many effectively
redundant conversions to and from those representations)).
However, bdrv_file_open() supports parsing protocol filenames,
which bdrv_find_ref() would not. As a result, it is probably best
to call bdrv_find_ref() from bdrv_file_open() instead and leave
bdrv_open() generally the way it is right now – yes, this is a
question. ;-) (“Do you agree?”)
I noticed only just now that the current design does not seem to
allow nesting of files (i.e., driver=blkdebug-qmp,
file.driver=qcow2, file.file.driver=file). Perhaps I do have to call
bdrv_find_ref() in bdrv_open() and only resort to bdrv_file_open()
if a filename that must be parsed was given...?
This is supposed to work. If it doesn't work today, it is a bug or
missing implementation rather than a design decision.

The top level bdrv_open() will call bdrv_file_open() with {driver=qcow2, file.driver=file}. This in turn calls bdrv_open_common() with file=NULL which will fail, since qcow2 expects a file to be present (drv->bdrv_file_open == NULL && file == NULL). At least, that is what happened for me when I tried this.

Max



reply via email to

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