[libvirt] [PATCH] util: vhost user: support for bootindex

Michal Privoznik mprivozn at redhat.com
Wed Mar 18 18:01:32 UTC 2015


On 13.03.2015 10:17, zhang bo wrote:
> Problem Description:
> When we set boot order for a vhost-user network interface, we found the boot index
> doesn't work.
> 
> Cause of the Problem:
> In the function qemuBuildVhostuserCommandLine(), it forcely set the arg bootindex of
> function qemuBuildNicDevStr() to 0. Thus, the bootindex parameter got missing.
> 
> Solution:
> Trans the arg bootindex down.
> 
> Signed-off-by: Gao Haifeng <gaohaifeng.gao at huawei.com>
> Signed-off-by: Zhang Bo <oscar.zhangbo at huawei.com>
> ---
>  src/qemu/qemu_command.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 5303de5..2f37812 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -7767,7 +7767,8 @@ static int
>  qemuBuildVhostuserCommandLine(virCommandPtr cmd,
>                                virDomainDefPtr def,
>                                virDomainNetDefPtr net,
> -                              virQEMUCapsPtr qemuCaps)
> +                              virQEMUCapsPtr qemuCaps,
> +                              int bootindex)
>  {
>      virBuffer chardev_buf = VIR_BUFFER_INITIALIZER;
>      virBuffer netdev_buf = VIR_BUFFER_INITIALIZER;
> @@ -7814,7 +7815,7 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
>      virCommandAddArg(cmd, "-netdev");
>      virCommandAddArgBuffer(cmd, &netdev_buf);
> 
> -    if (!(nic = qemuBuildNicDevStr(def, net, -1, 0, 0, qemuCaps))) {
> +    if (!(nic = qemuBuildNicDevStr(def, net, -1, bootindex, 0, qemuCaps))) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
>                         "%s", _("Error generating NIC -device string"));
>          goto error;
> @@ -7859,8 +7860,12 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
>      virNetDevBandwidthPtr actualBandwidth;
>      size_t i;
> 
> +
> +    if (!bootindex)
> +        bootindex = net->info.bootIndex;
> +
>      if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)
> -        return qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps);
> +        return qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps, bootindex);
> 
>      if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
>          /* NET_TYPE_HOSTDEV devices are really hostdev devices, so
> @@ -7869,9 +7874,6 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
>          return 0;
>      }
> 
> -    if (!bootindex)
> -        bootindex = net->info.bootIndex;
> -
>      /* Currently nothing besides TAP devices supports multiqueue. */
>      if (net->driver.virtio.queues > 0 &&
>          !(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
> 

ACKed and pushed.

Michal




More information about the libvir-list mailing list