[libvirt] [PATCH] Using qemu with sheepdog pool

Eric Blake eblake at redhat.com
Sat Jan 25 00:06:55 UTC 2014


On 01/22/2014 08:21 AM, joel SIMOES wrote:
> From: Joel SIMOES <joel.simoes at laposte.net>

A bit more detail in the commit message body might be nice.

> 
> ---
>  src/qemu/qemu_conf.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 65 insertions(+), 6 deletions(-)
> 
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index ac53f6d..dfafcdc 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -1185,6 +1185,56 @@ int qemuDriverAllocateID(virQEMUDriverPtr driver)
>      return virAtomicIntInc(&driver->nextvmid);
>  }
>  
> +
> +static int
> +qemuAddSheepPoolSourceHost(virDomainDiskDefPtr def,
> +                           virStoragePoolDefPtr pooldef)
> +{
> +    int ret = -1;
> +    char **tokens = NULL;
> +
> +    /* Only support one host */
> +    if (pooldef->source.nhost != 1) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("Expected exactly 1 host for the storage pool"));
> +        goto cleanup;
> +    }
> +
> +    /* iscsi pool only supports one host */

Incorrect copy-and-paste?

> +    def->nhosts = 1;
> +
> +    if (VIR_ALLOC_N(def->hosts, def->nhosts) < 0)
> +        goto cleanup;
> +
> +    if (VIR_STRDUP(def->hosts[0].name, pooldef->source.hosts[0].name) < 0)
> +        goto cleanup;
> +
> +    if (virAsprintf(&def->hosts[0].port, "%d",
> +                    pooldef->source.hosts[0].port ?
> +                    pooldef->source.hosts[0].port :
> +                    7000) < 0)
> +        goto cleanup;
> +
> +    
> +
> +    
> +

Too much whitespace, including trailing whitespace.  Ah, _this_ is the
patch where you later posted an unthreaded cleanup patch; it's better to
squash that into this and post as a v2.


> -
> -    if (def->srcpool->mode && pooldef->type != VIR_STORAGE_POOL_ISCSI) {
> +    
> +    if (def->srcpool->mode && pooldef->type != VIR_STORAGE_POOL_ISCSI && !(def->srcpool->mode == VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT && pooldef->type == VIR_STORAGE_POOL_SHEEPDOG) ) {


Long line.  I'd wrap it as:

   if (def->srcpool->mode && pooldef->type != VIR_STORAGE_POOL_ISCSI &&
      !(def->srcpool->mode == VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT &&
        pooldef->type == VIR_STORAGE_POOL_SHEEPDOG)) {
> +     
>          virReportError(VIR_ERR_XML_ERROR, "%s",
>                         _("disk source mode is only valid when "
> -                         "storage pool is of iscsi type"));
> +                         "storage pool is of iscsi type or only direct for sheepdog "));

Trailing whitespace in the message printed to the user.

> -    case VIR_STORAGE_POOL_MPATH:
> -    case VIR_STORAGE_POOL_RBD:
>      case VIR_STORAGE_POOL_SHEEPDOG:
> +        def->srcpool->actualtype = VIR_DOMAIN_DISK_TYPE_NETWORK;
> +        // force direct mode

We prefer /**/ comments.

I think you're on the right track, and wish I knew more about sheepdog
to actually test these patches.  But hopefully this review has been
helpful, and I look forward to seeing a cleaner v2.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140124/d760108e/attachment-0001.sig>


More information about the libvir-list mailing list