Hi, > >> Subject: Re: [Qemu-devel] [PATCH v2 5/7] qmp: add set-bootindex command > >> > >> On Fri, Jul 25, 2014 at 02:52:50PM +0800, arei.gong...@huawei.com wrote: > >> > From: Gonglei <arei.gong...@huawei.com> > >> > > >> > Adds "set-bootindex id=xx,bootindex=xx,suffix=xx" QMP command. > >> > > >> > Example QMP command: > >> > -> { "execute": "set-bootindex", "arguments": { "id": "ide0-0-1", > >> > "bootindex": > >> 1, "suffix": "/disk@0"}} > >> > <- { "return": {} } > >> > > >> > Signed-off-by: Gonglei <arei.gong...@huawei.com> > >> > Signed-off-by: Chenliang <chenlian...@huawei.com> > >> > --- > >> > qapi-schema.json | 16 ++++++++++++++++ > >> > qmp-commands.hx | 24 ++++++++++++++++++++++++ > >> > qmp.c | 17 +++++++++++++++++ > >> > 3 files changed, 57 insertions(+) > >> > > >> > diff --git a/qapi-schema.json b/qapi-schema.json > >> > index b11aad2..a9ef0be 100644 > >> > --- a/qapi-schema.json > >> > +++ b/qapi-schema.json > >> > @@ -1704,6 +1704,22 @@ > >> > { 'command': 'device_del', 'data': {'id': 'str'} } > >> > > >> > ## > >> > +# @set-bootindex: > >> > +# > >> > +# set bootindex of a devcie > >> > +# > >> > +# @id: the name of the device > >> > +# @bootindex: the bootindex of the device > >> > +# @suffix: #optional a suffix of the device > >> > +# > >> > +# Returns: Nothing on success > >> > +# If @id is not a valid device, DeviceNotFound > >> > +# > >> > +# Since: 2.2 > >> > +## > >> > +{ 'command': 'set-bootindex', 'data': {'id': 'str', 'bootindex': > >> > int', '*suffix': > >> 'str'} } > >> > + > >> > +## > >> > >> I wonder if we could simply use qom-set for that. How many devices > >> actually support having multiple bootindex entries with different > >> suffixes? > >> > > AFAICT, the floppy device support two bootindex with different suffixes. > > Block device models commonly a single block device. By convention, > property "drive" is the backend, and property "bootindex" the bootindex, > if the device model supports that. > > The device ID suffices to identify a block device for such device > models. > > The floppy device model is an exception. It folds multiple real-world > objects into one: the controller and the actual drives. Have a look at > -device isa-fdc,help: > > isa-fdc.iobase=uint32 > isa-fdc.irq=uint32 > isa-fdc.dma=uint32 > isa-fdc.driveA=drive > isa-fdc.driveB=drive > isa-fdc.bootindexA=int32 > isa-fdc.bootindexB=int32 > isa-fdc.check_media_rate=on/off > > The properties ending with 'A' or 'B' apply to the first and the second > drive, the others to the controller. > > Unfortunately, this means the device ID by itself doesn't identify the > floppy device. > Yes.
> Arguably, this is lousy modeling --- we really should model separate > real-world objects as separate objects. But making floppies pretty (or > even sane) isn't anyone's priority nowadays. > Hmm... Agreed. > Since qom-set works on *properties*, I can't see why it couldn't be used > for changing bootindexes. There is no ambiguity even with floppy. Sorry? > You either set bootindexA or bootindexB. No need to fuzz around with > suffixes. Or am I missing something? Your mean that we just need to think about change one bootindex? Either set bootindexA or bootindexB, do not need pass suffix for identifying? Best regards, -Gonglei