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