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

Re: [Xen-devel] [PATCH v10 4/5] libxl: add support for vscsi



Olaf Hering writes ("[PATCH v10 4/5] libxl: add support for vscsi"):
> Port pvscsi support from xend to libxl:
> 
>  vscsi=['pdev,vdev{,options}']
>  xl scsi-attach
>  xl scsi-detach
>  xl scsi-list

Thanks for this contribution.  I have tried to review it, although I
don't fully understand the underlying vscsi subsystem.  The public API
looks reasonably good.


> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 59b183c..b670997 100644
> --- a/tools/libxl/libxl_types.idl
...
> +libxl_vscsiinfo = Struct("vscsiinfo", [
> +    ("backend", string),
> +    ("backend_id", uint32),
> +    ("frontend", string),
> +    ("frontend_id", uint32),
> +    ("devid", libxl_devid),
> +    ("pdev", libxl_vscsi_pdev),
> +    ("vdev", libxl_vscsi_hctl),
> +    ("idx", libxl_devid),
> +    ("vscsidev_id", libxl_devid),
> +    ("scsi_raw_cmds", bool),
> +    ("vscsictrl_state", integer),
> +    ("vscsidev_state", integer),
> +    ("evtch", integer),
> +    ("rref", integer),

I don't think the event channel and ring ref belong here.  (That they
are present in some other devices is a mistake.)


> +static int xlu__vscsi_parse_dev(XLU_Config *cfg, char *pdev, 
> libxl_vscsi_hctl *hctl)
> +{
> +    struct stat dentry;
> +    char *sysfs = NULL;
> +    const char *type;
> +    int rc, found = 0;
> +    DIR *dirp;
> +    struct dirent *de;
...
> +    /* /sys/dev/type/major:minor symlink added in 2.6.27 */
> +    if (asprintf(&sysfs, "/sys/dev/%s/%u:%u/device/scsi_device", type,
> +                 major(dentry.st_rdev), minor(dentry.st_rdev)) < 0) {
> +        sysfs = NULL;
> +        rc = ERROR_NOMEM;
> +        goto out;
> +    }

I'm not sure that this sysfs parsing ought to be in xl rather than
libxl.  Also, this is Linux-specific code.  So it needs to be made
conditional somehow.

It seems to me that the contents of xlu__vscsi_target should be much
closer to vscsi_pdev_type (unless I have misunderstood).

Perhaps the libxl_types.idl API needs to change.  In general, the
libxl API ought to be close enough in semantics to the xl config API
that the correspondence is obvious.  I don't think that's the case
here.



Thanks,
Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.