On Thu 14 Jul 2016 03:28:05 PM CEST, Kevin Wolf wrote:
> -    blk = blk_by_name(device);
> -    if (!blk) {
> -        error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
> -                  "Device '%s' not found", device);
> +    bs = qmp_get_root_bs(device, &local_err);
> +    if (!bs) {
> +        bs = bdrv_lookup_bs(device, device, NULL);
> +        if (!bs) {
> +            error_free(local_err);
> +            error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
> +                      "Device '%s' not found", device);
> +        } else {
> +            error_propagate(errp, local_err);
> +        }
>          return;

It seems that you're calling bdrv_lookup_bs() here twice, once in
qmp_get_root_bs() and then again directly. If the purpose is to see
whether the error is "device not found" or "device is not a root node" I
think the code would be clearer if you do everything here.

On a related note, you're keeping the DeviceNotFound error here, but not
in block-stream. Wouldn't it be better to keep both APIs consistent?

Berto

Reply via email to