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 --- |