qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Review of monitor commands identifying BDS / BB by name


From: Markus Armbruster
Subject: Re: [Qemu-devel] Review of monitor commands identifying BDS / BB by name
Date: Thu, 04 Dec 2014 16:59:09 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Fam Zheng <address@hidden> writes:

> On Tue, 12/02 20:06, Markus Armbruster wrote:
>> == block-core.json ==
>> 
>> * block-commit
>> 
>>   @device names a backend, @top and @base each name one of its nodes via
>>   file name matching.
>> 
>>   TODO: support specifying the two nodes via node name.
>> 
>>   Why do we need @device when a top node is specified?
>> 
>>   * We currently need the backend to set op blockers, and finding a
>>     node's backend isn't easy.  Implementation detail shows through the
>>     interface, blech.
>> 
>>   * We need to know whether the top node is the active layer.
>> 
>>     Complication: if it's shared by multiple backends, it may be the
>>     active layer in one but not the other.  Specifying the backend
>>     resolves the ambiguity.  Whether that makes sense I don't know.
>> 
>> * block-stream
>> 
>>   @device names a backend, @base names a node via file name matching.
>> 
>>   TODO: support specifying the node via node name.
>> 
>>   I think backend is inappropriate here, we should support streaming up
>>   to a node, just like block-commit supports committing down from a
>>   node.
>
> Agreed.
>
>> 
>> * block_passwd
>> * block_resize
>> 
>>   @node-name names a node.
>> 
>>   @device names a backend, and references its root node, for
>>   compatibility.
>> 
>>   Either @device or @node-name must be given.
>> 
>>   TODO: should have single mandatory parameter instead of two optionals.
>> 
>> * blockdev-snapshot-sync
>> 
>>   @node-name and @device as for block_passwd, including TODO.
>> 
>>   @snapshot-node-name defines the new node's node name.
>> 
>> * block_set_io_throttle
>> 
>>   @device names a backend.
>> 
>>   TODO: support nodes.
>> 
>>   Note: we'd like to redo throttling as a block filter node, so maybe
>>   we'll have a completely different command instead.
>
> Whether it's implemented in core block layer or as a block filter node is
> implementation detail from user's PoV, so it shouldn't matter unless we use a
> "general" block filter configuration command.

Yes.  Nevertheless, we can generalize the existing command to filters,
or create a new one.  Wait and see.

>> 
>> * blockdev-add
>> 
>>   This command defines a backend and its node tree, where sub-trees may
>>   be references to existing nodes.
>> 
>>   @id defines the backend's name.
>> 
>>   @node-name defines its root node's node name.
>> 
>>   Note: blockdev-add always defines a backend.  When you build up a
>>   backend bottom-up with several commands, you get a bunch of unwanted
>>   backends "in the middle".  I'd like to make @id optional, and omit the
>>   backend when it's missing.
>> 
>> * change-backing-file
>> 
>>   @device names a backend, @image-node-name names a node.
>> 
>>   As far as I can tell, we need the backend only to set op blockers.
>>   Implementation detail shows through the interface.
>> 
>> * drive-backup
>> 
>>   @device names a backend.
>> 
>>   Do we want to be able to back up any node, or only a backend?
>> 
>>   Note: documentation of @target sounds like it could somehow name a
>>   backend, but as far as I can tell it's always interpreted as file
>>   name.
>> 
>> * drive-mirror
>> 
>>   @device names a backend, @replaces names a node, and @node-name
>>   defines the name of the new node.
>> 
>>   Do we want to be able to mirror any node, or only a backend?
>> 
>>   Note: documentation of @target sounds like it could somehow name a
>>   backend, but as far as I can tell it's always interpreted as file
>>   name.
>> 
>>   Note: drive-mirror supports @replaces, but drive-backup doesn't.  Odd.
>
> It's only asymmetric, not odd: @target has the same data in drive-mirror, so
> "replaces" doesn't surprise @device's user. That's not true for drive-backup.

Okay, now I see.

>> * query-blockstats
>> 
>>   Returns some stats for all backends as array of BlockStats.
>>   BlockStats member @device is the backend name.  Member @stats contains
>>   the stats for the backend's root node.  Member @parent is BlockStats
>>   for the child node that is stored in BDS member file.  Member @backing
>>   is BlockStats for the chold node that is stored in BDS member
>>   backing_hd.  Stats for other children aren't returned.
>> 
>>   TODO: generalize this to the full tree, include node names.
>> 
>> * query-block-jobs
>> 
>>   Returns information on block jobs as array of BlockJobInfo.  A block
>>   job is always tied to a backend, and BlockJobInfo member @device is
>>   its name.
>> 
>>   The question whether we need a node name here is moot; see
>>   block-job-cancel above.
>> 
>
> We are not internally ready to untie block job from backend yet, once we get
> there, we should start giving names to block jobs, add support some kind of
> default naming/querying to be backward compatible.

Kevin pointed out that we can fix the interface before the
implementation.



reply via email to

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