qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] How to introduce bs->node_name ?


From: Fam Zheng
Subject: Re: [Qemu-devel] How to introduce bs->node_name ?
Date: Mon, 04 Nov 2013 19:33:21 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0


On 11/04/2013 07:06 PM, Kevin Wolf wrote:
Am 04.11.2013 um 10:48 hat Fam Zheng geschrieben:
On 11/04/2013 05:31 PM, Stefan Hajnoczi wrote:
On Wed, Oct 30, 2013 at 02:49:32PM +0100, Markus Armbruster wrote:
The first proposal is to add another parameter, say "id".  Users can
then refer either to an arbitrary BDS by "id", or (for backward
compatibility) to the root BDS by "device".  When the code sees
"device", it'll look up the BB, then fetch its root BDS.

CON: Existing parameter "device" becomes compatibility cruft.

PRO: Clean and obvious semantics (in my opinion).
This proposal gets my vote.

The second proposal is to press the existing parameter "device" into
service for referring to BDS node_name.

To keep backward compatibility, we obviously need to ensure that
whenever the old code accepts a value of "device", the new code accepts
it as well, and both resolve it to the same BDS.
Different legacy commands given the same device name might need to
operate on different nodes.
Could you give an example for this?


Dynamic renaming does not solve this
problem, so I'm not convinced we can always choose a device name
matching a node name.

Device name commands are higher-level than graph node commands.  For
example, block_set_io_throttle makes sense on a device but less sense on
a graph node, unless we add the implicit assumption that the new
throttling node is created on top of the given node or updated in place
if the throttling node already exists (!!).
Throttling a node could be useful too, for example if we want to
throttle backing_hd which is on shared storage, but not to throttle
on the local image.

My ignorant question is: Why can't we just use one namespace, make
sure no name collision between node_name and device_name, or even
just drop device_name, so we treat the root node's node_name as
device_name? For commands that only accept a device, this can be
enforced in its implementation by checking against the whole graph
to verify this.
Markus described it somewhere in this thread: Live snapshots.
Currently, the device_name moves to the new BDS on the top (and
compatibility requires us to keep it that way), whereas a node name
should, of course, stay at its node.

When you consider this, the single namespace, as much as I would have
loved it, is pretty much dead.

Thanks for explaining (again). I get the reason now.

Fam



reply via email to

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