From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [RFC] Using BlockdevRef in the block layer
Date: Fri, 06 Dec 2013 12:02:43 +0100 [thread overview]
Message-ID: <52A1AED3.2030203@redhat.com> (raw)
In-Reply-To: <20131206104510.GB2911@dhcp-200-207.str.redhat.com>
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
next prev parent reply other threads:[~2013-12-06 11:02 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-05 17:41 [Qemu-devel] [RFC] Using BlockdevRef in the block layer Max Reitz
2013-12-05 18:35 ` Max Reitz
2013-12-05 19:04 ` Max Reitz
2013-12-06 10:45 ` Kevin Wolf
2013-12-06 11:02 ` Max Reitz [this message]
2013-12-06 10:43 ` Kevin Wolf
2013-12-06 11:00 ` Max Reitz
2013-12-06 11:14 ` Max Reitz
2013-12-06 11:18 ` Max Reitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52A1AED3.2030203@redhat.com \
--to=mreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.