[libvirt] [PATCH] conf: Resolve corner case on fc_host deletion
John Ferlan
jferlan at redhat.com
Wed May 17 10:56:43 UTC 2017
ping^2
Tks,
John
On 04/29/2017 11:36 AM, John Ferlan wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=1420740
>
> Testing found an inventive way to cause an error at shutdown by providing the
> parent name for the fc host creation using the "same name" as the HBA. Since
> the code thus assumed the parent host name provided was the parent HBA and
> just extracted out the host number and sent that along to the vport_destroy
> this avoided checks made for equality.
>
> So just add the equality check to that path to resolve.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> src/conf/node_device_conf.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
> index 85cfd83..3f995da 100644
> --- a/src/conf/node_device_conf.c
> +++ b/src/conf/node_device_conf.c
> @@ -2127,17 +2127,25 @@ virNodeDeviceDeleteVport(virConnectPtr conn,
> goto cleanup;
> }
>
> + if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0)
> + goto cleanup;
> +
> /* If at startup time we provided a parent, then use that to
> * get the parent_host value; otherwise, we have to determine
> * the parent scsi_host which we did not save at startup time
> */
> if (fchost->parent) {
> + /* Someone provided a parent string at startup time that
> + * was the same as the scsi_host - meaning we have a pool
> + * backed to an HBA, so there won't be a vHBA to delete */
> + if (STREQ(scsi_host_name, fchost->parent)) {
> + ret = 0;
> + goto cleanup;
> + }
> +
> if (virSCSIHostGetNumber(fchost->parent, &parent_host) < 0)
> goto cleanup;
> } else {
> - if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0)
> - goto cleanup;
> -
> if (!(vhba_parent = virNodeDeviceGetParentName(conn, scsi_host_name)))
> goto cleanup;
>
>
More information about the libvir-list
mailing list