Am 16.10.2015 um 10:57 hat Wen Congyang geschrieben: > +## > +# @ChangeOperation: > +# > +# An enumeration of block device change operation. > +# > +# @add: Add a new block driver state to a existed block driver state. > +# > +# @delete: Delete a block driver state's child. > +# > +# Since: 2.5 > +## > +{ 'enum': 'ChangeOperation', > + 'data': [ 'add', 'delete' ] }
What's the advantage of this enum compared to separate QMP commands? The way it is specified here, ChangeOperation is already implicit by whether or not child and node are given. > +## > +# @x-blockdev-change > +# > +# Dynamic reconfigure the block driver state graph. It can be used to > +# add, remove, insert, replace a block driver state. Currently only > +# the Quorum driver implements this feature to add and remove its child. > +# This is useful to fix a broken quorum child. > +# > +# @operation: the chanage operation. It can be add, delete. > +# > +# @parent: the id or node name of which node will be changed. > +# > +# @child: the child node-name which will be deleted. #optional Must be present for operation = delete, must not be present otherwise. > +# @node: the new node-name which will be added. #optional Must be present for operation = add, must not be present otherwise. > +# > +# Note: this command is experimental, and not a stable API. > +# > +# Since: 2.5 > +## > +{ 'command': 'x-blockdev-change', > + 'data' : { 'operation': 'ChangeOperation', > + 'parent': 'str', > + '*child': 'str', > + '*node': 'str' } } Let me suggest this alternative: { 'command': 'x-blockdev-change', 'data' : { 'parent': 'str', 'child': 'str', '*node': 'str' } } child doesn't describe a node name then, but a child name (adds a dependency on my patches which add a name to BdrvChild, though). Depending on whether node is given and whether the child already exists, this may add, remove or replace a child. Kevin