[libvirt] [PATCHv1.5 08/27] qemu: Migrate sheepdog source generation into common function

Michal Privoznik mprivozn at redhat.com
Wed Nov 27 11:16:01 UTC 2013


On 26.11.2013 17:48, Peter Krempa wrote:
> ---
>  src/qemu/qemu_command.c | 37 ++++++++++++++++++++++++-------------
>  1 file changed, 24 insertions(+), 13 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 09ebd00..6ba8df9 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -3754,6 +3754,29 @@ qemuBuildNetworkDriveURI(int protocol,
>              break;
> 
>          case VIR_DOMAIN_DISK_PROTOCOL_SHEEPDOG:
> +            if (!src) {
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("missing disk source for 'sheepdog' protocol"));
> +                goto cleanup;
> +            }
> +
> +            if (nhosts == 0) {
> +                if (virAsprintf(&ret, "sheepdog:%s", src) < 0)
> +                    goto cleanup;
> +            } else if (nhosts == 1) {
> +                if (virAsprintf(&ret, "sheepdog:%s:%s:%s",
> +                                hosts->name,
> +                                hosts->port ? hosts->port : "7000",
> +                                src) < 0)
> +                    goto cleanup;
> +            } else {
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("protocol 'sheepdog' accepts up to one host"));
> +                goto cleanup;
> +            }
> +
> +            break;
> +
>          case VIR_DOMAIN_DISK_PROTOCOL_RBD:
>          case VIR_DOMAIN_DISK_PROTOCOL_LAST:
>              virReportError(VIR_ERR_INTERNAL_ERROR,
> @@ -4001,6 +4024,7 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
>                  virBufferAddChar(&opt, ',');
>                  break;
> 
> +            case VIR_DOMAIN_DISK_PROTOCOL_SHEEPDOG:
>              case VIR_DOMAIN_DISK_PROTOCOL_TFTP:
>              case VIR_DOMAIN_DISK_PROTOCOL_FTPS:
>              case VIR_DOMAIN_DISK_PROTOCOL_FTP:
> @@ -4011,19 +4035,6 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
>                  if (qemuBuildDriveURIString(conn, disk, &opt) < 0)
>                      goto error;
>                  break;
> -
> -            case VIR_DOMAIN_DISK_PROTOCOL_SHEEPDOG:
> -                if (disk->nhosts == 0) {
> -                    virBufferEscape(&opt, ',', ",", "file=sheepdog:%s,",
> -                                    disk->src);
> -                } else {
> -                    /* only one host is supported now */
> -                    virBufferAsprintf(&opt, "file=sheepdog:%s:%s:",
> -                                      disk->hosts->name,
> -                                      disk->hosts->port ? disk->hosts->port : "7000");
> -                    virBufferEscape(&opt, ',', ",", "%s,", disk->src);
> -                }
> -                break;
>              }
>          } else {
>              if ((actualType == VIR_DOMAIN_DISK_TYPE_BLOCK) &&
> 

ACK

Michal




More information about the libvir-list mailing list