block.c (998cbd6a44cd96044f56713274bdf6a94cd721c0) block.c (180ca19ae02be70f9b158bfd7dec1ff123b9cf8c)
1/*
2 * QEMU System Emulator block driver
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 1105 unchanged lines hidden (view full) ---

1114 if (ret < 0) {
1115 if (local_err) {
1116 error_propagate(errp, local_err);
1117 } else if (bs->filename[0]) {
1118 error_setg_errno(errp, -ret, "Could not open '%s'", bs->filename);
1119 } else {
1120 error_setg_errno(errp, -ret, "Could not open image");
1121 }
1/*
2 * QEMU System Emulator block driver
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 1105 unchanged lines hidden (view full) ---

1114 if (ret < 0) {
1115 if (local_err) {
1116 error_propagate(errp, local_err);
1117 } else if (bs->filename[0]) {
1118 error_setg_errno(errp, -ret, "Could not open '%s'", bs->filename);
1119 } else {
1120 error_setg_errno(errp, -ret, "Could not open image");
1121 }
1122 goto free_and_fail;
1122 goto open_failed;
1123 }
1124
1125 ret = refresh_total_sectors(bs, bs->total_sectors);
1126 if (ret < 0) {
1127 error_setg_errno(errp, -ret, "Could not refresh total sector count");
1123 }
1124
1125 ret = refresh_total_sectors(bs, bs->total_sectors);
1126 if (ret < 0) {
1127 error_setg_errno(errp, -ret, "Could not refresh total sector count");
1128 goto free_and_fail;
1128 return ret;
1129 }
1130
1131 bdrv_refresh_limits(bs, &local_err);
1132 if (local_err) {
1133 error_propagate(errp, local_err);
1129 }
1130
1131 bdrv_refresh_limits(bs, &local_err);
1132 if (local_err) {
1133 error_propagate(errp, local_err);
1134 ret = -EINVAL;
1135 goto free_and_fail;
1134 return -EINVAL;
1136 }
1137
1138 assert(bdrv_opt_mem_align(bs) != 0);
1139 assert(bdrv_min_mem_align(bs) != 0);
1140 assert(is_power_of_2(bs->bl.request_alignment));
1141
1142 return 0;
1135 }
1136
1137 assert(bdrv_opt_mem_align(bs) != 0);
1138 assert(bdrv_min_mem_align(bs) != 0);
1139 assert(is_power_of_2(bs->bl.request_alignment));
1140
1141 return 0;
1143
1144free_and_fail:
1145 /* FIXME Close bs first if already opened*/
1142open_failed:
1143 bs->drv = NULL;
1144 if (bs->file != NULL) {
1145 bdrv_unref_child(bs, bs->file);
1146 bs->file = NULL;
1147 }
1146 g_free(bs->opaque);
1147 bs->opaque = NULL;
1148 g_free(bs->opaque);
1149 bs->opaque = NULL;
1148 bs->drv = NULL;
1149 return ret;
1150}
1151
1152BlockDriverState *bdrv_new_open_driver(BlockDriver *drv, const char *node_name,
1153 int flags, Error **errp)
1154{
1155 BlockDriverState *bs;
1156 int ret;

--- 4 unchanged lines hidden (view full) ---

1161 bs->options = qdict_new();
1162 bs->opaque = NULL;
1163
1164 update_options_from_flags(bs->options, flags);
1165
1166 ret = bdrv_open_driver(bs, drv, node_name, bs->options, flags, errp);
1167 if (ret < 0) {
1168 QDECREF(bs->explicit_options);
1150 return ret;
1151}
1152
1153BlockDriverState *bdrv_new_open_driver(BlockDriver *drv, const char *node_name,
1154 int flags, Error **errp)
1155{
1156 BlockDriverState *bs;
1157 int ret;

--- 4 unchanged lines hidden (view full) ---

1162 bs->options = qdict_new();
1163 bs->opaque = NULL;
1164
1165 update_options_from_flags(bs->options, flags);
1166
1167 ret = bdrv_open_driver(bs, drv, node_name, bs->options, flags, errp);
1168 if (ret < 0) {
1169 QDECREF(bs->explicit_options);
1170 bs->explicit_options = NULL;
1169 QDECREF(bs->options);
1171 QDECREF(bs->options);
1172 bs->options = NULL;
1170 bdrv_unref(bs);
1171 return NULL;
1172 }
1173
1174 return bs;
1175}
1176
1177QemuOptsList bdrv_runtime_opts = {

--- 1417 unchanged lines hidden (view full) ---

2595 bdrv_unref(bs);
2596 bs = snapshot_bs;
2597 }
2598
2599 return bs;
2600
2601fail:
2602 blk_unref(file);
1173 bdrv_unref(bs);
1174 return NULL;
1175 }
1176
1177 return bs;
1178}
1179
1180QemuOptsList bdrv_runtime_opts = {

--- 1417 unchanged lines hidden (view full) ---

2598 bdrv_unref(bs);
2599 bs = snapshot_bs;
2600 }
2601
2602 return bs;
2603
2604fail:
2605 blk_unref(file);
2603 if (bs->file != NULL) {
2604 bdrv_unref_child(bs, bs->file);
2605 }
2606 QDECREF(snapshot_options);
2607 QDECREF(bs->explicit_options);
2608 QDECREF(bs->options);
2609 QDECREF(options);
2610 bs->options = NULL;
2611 bs->explicit_options = NULL;
2612 bdrv_unref(bs);
2613 error_propagate(errp, local_err);

--- 2328 unchanged lines hidden ---
2606 QDECREF(snapshot_options);
2607 QDECREF(bs->explicit_options);
2608 QDECREF(bs->options);
2609 QDECREF(options);
2610 bs->options = NULL;
2611 bs->explicit_options = NULL;
2612 bdrv_unref(bs);
2613 error_propagate(errp, local_err);

--- 2328 unchanged lines hidden ---