Sorry for this stupid mistake. Thank you for reviewing. On Mon, Jul 9, 2018 at 11:20 PM, Michal Privoznik <mpriv...@redhat.com> wrote:
> On 07/04/2018 05:04 AM, Han Han wrote: > > Adding usb bus address support to the optional address parameter of virsh > > attach-disk. The address is used as bus:port. e.g. > > usb:1:1 > > > > Signed-off-by: Han Han <h...@redhat.com> > > --- > > tools/virsh-domain.c | 38 +++++++++++++++++++++++++++++++++++++- > > tools/virsh.pod | 2 +- > > 2 files changed, 38 insertions(+), 2 deletions(-) > > > > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c > > index e9b88f0013..5a445eff44 100644 > > --- a/tools/virsh-domain.c > > +++ b/tools/virsh-domain.c > > @@ -319,6 +319,7 @@ enum { > > DISK_ADDR_TYPE_SCSI, > > DISK_ADDR_TYPE_IDE, > > DISK_ADDR_TYPE_CCW, > > + DISK_ADDR_TYPE_USB, > > }; > > > > struct PCIAddress { > > @@ -346,6 +347,11 @@ struct CCWAddress { > > unsigned int devno; > > }; > > > > +struct USBAddress { > > + unsigned int bus; > > + unsigned int port; > > +}; > > + > > struct DiskAddress { > > int type; > > union { > > @@ -353,6 +359,7 @@ struct DiskAddress { > > struct SCSIAddress scsi; > > struct IDEAddress ide; > > struct CCWAddress ccw; > > + struct USBAddress usb; > > } addr; > > }; > > > > @@ -460,10 +467,32 @@ static int str2CCWAddress(const char *str, struct > CCWAddress *ccwAddr) > > return 0; > > } > > > > +static int str2USBAddress(const char *str, struct USBAddress *usbAddr) > > +{ > > + char *bus, *port; > > + > > + if (!usbAddr) > > + return -1; > > + if (!str) > > + return -1; > > + > > + bus = (char *)str; > > + > > + if (virStrToLong_uip(bus, &port, 10, &usbAddr->bus) != 0) > > + return -1; > > + > > + port++; > > + if (virStrToLong_uip(port, NULL, 10, &usbAddr->port) != 0) > > + return -1; > > + > > + return 0; > > +} > > + > > /* pci address pci:0000.00.0x0a.0 (domain:bus:slot:function) > > * ide disk address: ide:00.00.0 (controller:bus:unit) > > * scsi disk address: scsi:00.00.0 (controller:bus:unit) > > * ccw disk address: ccw:0xfe.0.0000 (cssid:ssid:devno) > > + * usb disk address: usb:00.00 (bus:port) > > */ > > > > static int str2DiskAddress(const char *str, struct DiskAddress > *diskAddr) > > @@ -492,6 +521,9 @@ static int str2DiskAddress(const char *str, struct > DiskAddress *diskAddr) > > } else if (STREQLEN(type, "ccw", addr - type)) { > > diskAddr->type = DISK_ADDR_TYPE_CCW; > > return str2CCWAddress(addr + 1, &diskAddr->addr.ccw); > > + } else if (STREQLEN(type, "usb", addr - type)) { > > + diskAddr->type = DISK_ADDR_TYPE_USB; > > + return str2USBAddress(addr + 1, &diskAddr->addr.usb); > > } > > > > return -1; > > @@ -648,8 +680,12 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd) > > " bus='%u' unit='%llu' />\n", > > diskAddr.addr.scsi.controller, > diskAddr.addr.scsi.bus, > > diskAddr.addr.scsi.unit); > > + } else if (diskAddr.type == DISK_ADDR_TYPE_USB) { > > + virBufferAsprintf(&buf, > > + "<address type='usb' bus='%u' > port='%u' />\n", > > + diskAddr.addr.usb.bus, > diskAddr.addr.usb.port); > > } else { > > - vshError(ctl, "%s", _("expecting a scsi:00.00.00 > address.")); > > + vshError(ctl, "%s", _("expecting a scsi:00.00.00 or > usb:00.00 address.")); > > goto cleanup; > > } > > } else if (STRPREFIX((const char *)target, "hd")) { > > diff --git a/tools/virsh.pod b/tools/virsh.pod > > index dc100db9f3..2ca1b8f7a2 100644 > > --- a/tools/virsh.pod > > +++ b/tools/virsh.pod > > @@ -3060,7 +3060,7 @@ this disk may be attached (QEMU only). > > I<serial> is the serial of disk device. I<wwn> is the wwn of disk > device. > > I<rawio> indicates the disk needs rawio capability. > > I<address> is the address of disk device in the form of > pci:domain.bus.slot.function, > > -scsi:controller.bus.unit, ide:controller.bus.unit or > ccw:cssid.ssid.devno. > > +scsi:controller.bus.unit, ide:controller.bus.unit, usb:bus:port or > ccw:cssid.ssid.devno. > > Actually, it's usb:bus.port ;-) And also I'm breaking this long line > (which gets even longer after next patch). > > Fixed and ACKed. > > Michal > -- Best regards, ----------------------------------- Han Han Quality Engineer Redhat. Email: h...@redhat.com Phone: +861065339333
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list