[libvirt] [PATCH] virsh: support multifunction in attach-disk

Wen Congyang wency at cn.fujitsu.com
Tue Dec 13 06:51:58 UTC 2011


At 12/13/2011 02:12 PM, KAMEZAWA Hiroyuki Write:
> From: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
> 
> PCI <address...> can be specified by attach-disk but multifunction cannot
> be specified. add --multifunction support.

IIRC, libvirt does not support hot plugging multifunction PCI device. Why
do you need this feature?

Thanks
Wen Congyang

> ---
>  tools/virsh.c   |    7 ++++++-
>  tools/virsh.pod |    3 ++-
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/virsh.c b/tools/virsh.c
> index d58b827..346b440 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -12661,6 +12661,7 @@ static const vshCmdOptDef opts_attach_disk[] = {
>      {"serial", VSH_OT_STRING, 0, N_("serial of disk device")},
>      {"shareable", VSH_OT_BOOL, 0, N_("shareable between domains")},
>      {"address", VSH_OT_STRING, 0, N_("address of disk device")},
> +    {"multifunction", VSH_OT_BOOL, 0, N_("use multifunction pci under specified address")},
>      {NULL, 0, 0, NULL}
>  };
>  
> @@ -12916,9 +12917,13 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
>              if (diskAddr.type == DISK_ADDR_TYPE_PCI) {
>                  virBufferAsprintf(&buf,
>                                    "  <address type='pci' domain='0x%04x'"
> -                                  " bus ='0x%02x' slot='0x%02x' function='0x%0x' />\n",
> +                                  " bus ='0x%02x' slot='0x%02x' function='0x%0x'",
>                                    diskAddr.addr.pci.domain, diskAddr.addr.pci.bus,
>                                    diskAddr.addr.pci.slot, diskAddr.addr.pci.function);
> +                if (vshCommandOptBool(cmd, "multifunction"))
> +                    virBufferAsprintf(&buf, " multifunction='on' />\n");
> +                else
> +                    virBufferAsprintf(&buf, " />\n");
>              } else {
>                  vshError(ctl, "%s", _("expecting a pci:0000.00.00.00 address."));
>                  goto cleanup;
> diff --git a/tools/virsh.pod b/tools/virsh.pod
> index fe92714..1a778f9 100644
> --- a/tools/virsh.pod
> +++ b/tools/virsh.pod
> @@ -1273,7 +1273,7 @@ the device does not use managed mode.
>  =item B<attach-disk> I<domain-id> I<source> I<target>
>  [I<--driver driver>] [I<--subdriver subdriver>] [I<--cache cache>]
>  [I<--type type>] [I<--mode mode>] [I<--persistent>] [I<--sourcetype soucetype>]
> -[I<--serial serial>] [I<--shareable>] [I<--address address>]
> +[I<--serial serial>] [I<--shareable>] [I<--address address>] [I<--multifunction>]
>  
>  Attach a new disk device to the domain.
>  I<source> and I<target> are paths for the files and devices.
> @@ -1291,6 +1291,7 @@ I<serial> is the serial of disk device. I<shareable> indicates the disk device
>  is shareable between domains.
>  I<address> is the address of disk device in the form of pci:domain.bus.slot.function,
>  scsi:controller.bus.unit or ide:controller.bus.unit.
> +I<multifunction> indicates specified pci address is a multifunction pci device address.
>  
>  =item B<attach-interface> I<domain-id> I<type> I<source>
>  [I<--target target>] [I<--mac mac>] [I<--script script>] [I<--model model>]





More information about the libvir-list mailing list