Revision 34b5d2c6 blockdev.c

b/blockdev.c
710 710
    }
711 711

  
712 712
    QINCREF(bs_opts);
713
    ret = bdrv_open(dinfo->bdrv, file, bs_opts, bdrv_flags, drv);
713
    ret = bdrv_open(dinfo->bdrv, file, bs_opts, bdrv_flags, drv, &error);
714 714

  
715 715
    if (ret < 0) {
716
        if (ret == -EMEDIUMTYPE) {
717
            error_report("could not open disk image %s: not in %s format",
718
                         file ?: dinfo->id, drv ? drv->format_name :
719
                         qdict_get_str(bs_opts, "driver"));
720
        } else {
721
            error_report("could not open disk image %s: %s",
722
                         file ?: dinfo->id, strerror(-ret));
723
        }
716
        error_report("could not open disk image %s: %s",
717
                     file ?: dinfo->id, error_get_pretty(error));
724 718
        goto err;
725 719
    }
726 720

  
......
1156 1150
    /* TODO Inherit bs->options or only take explicit options with an
1157 1151
     * extended QMP command? */
1158 1152
    ret = bdrv_open(state->new_bs, new_image_file, NULL,
1159
                    flags | BDRV_O_NO_BACKING, drv);
1153
                    flags | BDRV_O_NO_BACKING, drv, &local_err);
1160 1154
    if (ret != 0) {
1161
        error_setg_file_open(errp, -ret, new_image_file);
1155
        error_propagate(errp, local_err);
1162 1156
    }
1163 1157
}
1164 1158

  
......
1393 1387
                                    int bdrv_flags, BlockDriver *drv,
1394 1388
                                    const char *password, Error **errp)
1395 1389
{
1390
    Error *local_err = NULL;
1396 1391
    int ret;
1397 1392

  
1398
    ret = bdrv_open(bs, filename, NULL, bdrv_flags, drv);
1393
    ret = bdrv_open(bs, filename, NULL, bdrv_flags, drv, &local_err);
1399 1394
    if (ret < 0) {
1400
        error_setg_file_open(errp, -ret, filename);
1395
        error_propagate(errp, local_err);
1401 1396
        return;
1402 1397
    }
1403 1398

  
......
1817 1812
    }
1818 1813

  
1819 1814
    target_bs = bdrv_new("");
1820
    ret = bdrv_open(target_bs, target, NULL, flags, drv);
1815
    ret = bdrv_open(target_bs, target, NULL, flags, drv, &local_err);
1821 1816
    if (ret < 0) {
1822 1817
        bdrv_unref(target_bs);
1823
        error_setg_file_open(errp, -ret, target);
1818
        error_propagate(errp, local_err);
1824 1819
        return;
1825 1820
    }
1826 1821

  
......
1952 1947
     * file.
1953 1948
     */
1954 1949
    target_bs = bdrv_new("");
1955
    ret = bdrv_open(target_bs, target, NULL, flags | BDRV_O_NO_BACKING, drv);
1950
    ret = bdrv_open(target_bs, target, NULL, flags | BDRV_O_NO_BACKING, drv,
1951
                    &local_err);
1956 1952
    if (ret < 0) {
1957 1953
        bdrv_unref(target_bs);
1958
        error_setg_file_open(errp, -ret, target);
1954
        error_propagate(errp, local_err);
1959 1955
        return;
1960 1956
    }
1961 1957

  

Also available in: Unified diff