On 11/10/2015 12:04 AM, Kevin Wolf wrote: > 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).
Where is the patch? I don't find it. > Depending on whether node is given and whether the child already exists, > this may add, remove or replace a child. If the user wants to insert a filter driver between parent and child, we also needs three parameters: parent, child, node. So it is why I add the parameter operation. Thanks Wen Congyang > > Kevin > . >