[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 1/1] Add trigger of host rescan



On Fri, Apr 03, 2009 at 04:53:07PM -0400, David Allan wrote:
> The scsi host code does not currently rescan for new LUs when refreshing
> a pool.  This patch causes a scan for new LUs on all targets.  It does
> not cause a LIP.

 LIP ?

>  static int
> +virStorageBackendSCSIStartPool(virConnectPtr conn ATTRIBUTE_UNUSED,
> +                               virStoragePoolObjPtr pool ATTRIBUTE_UNUSED)
> +{
> +    int retval = 0;
> +
> +    return retval;
> +}
> +
> +
> +static int
> +virStorageBackendSCSIStopPool(virConnectPtr conn ATTRIBUTE_UNUSED,
> +                              virStoragePoolObjPtr pool ATTRIBUTE_UNUSED)
> +{
> +    int retval = 0;
> +
> +    return retval;
> +}

  Is that really better than suggesting the operation is not supported ?

[...]
> +    if (virAsprintf(&path, "/sys/class/scsi_host/host%u/scan", host) < 0) {
> +        virReportOOMError(conn);
> +        retval = -1;
> +        goto out;
> +    }
> +
> +    VIR_DEBUG(_("Scan trigger path is '%s'"), path);
> +
> +    fd = open(path, O_WRONLY);
> +
> +    if (fd < 0) {
> +        virReportSystemError(conn, errno,
> +                             _("Could not open '%s' to trigger host scan"),
> +                             path);
> +        retval = -1;
> +        goto cleanup;
> +    }
> +
> +    if (write(fd,
> +              LINUX_SYSFS_SCSI_HOST_SCAN_STRING,
> +              sizeof(LINUX_SYSFS_SCSI_HOST_SCAN_STRING)) < 0) {
> +
> +        virReportSystemError(conn, errno,
> +                             _("Write to '%s' to trigger host scan failed"),
> +                             path);
> +        retval = -1;
> +        goto cleanup;
> +    }
> +
> +    goto out;

  Seems to me that goto should be suppressed, it just generate a leak of path
On the other hand fd is leaked for sure ... This really need some
double-checking ;-)

> +cleanup:
> +    VIR_FREE(path);
> +
> +out:
> +    VIR_DEBUG(_("Rescan of host %d complete"), host);
> +    return retval;
> +}

  Otherwise, sounds fine, as long as this doesn't generate a bus reset.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel veillard com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]