block/qcow2-bitmap: return status from qcow2_store_persistent_dirty_bitmaps
It's better to return status together with setting errp. It makes possible to avoid error propagation. While being here, put ERRP_GUARD() to fix error_prepend(errp, ...) usage inside qcow2_store_persistent_dirty_bitmaps() (see the comment above ERRP_GUARD() definition in include/qapi/error.h) Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Greg Kurz <groug@kaod.org> Reviewed-by: Alberto Garcia <berto@igalia.com> Message-Id: <20210202124956.63146-11-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
0c1e9d2a9a
commit
526e31de99
@ -1531,9 +1531,10 @@ out:
|
||||
* readonly to begin with, and whether we opened directly or reopened to that
|
||||
* state shouldn't matter for the state we get afterward.
|
||||
*/
|
||||
void qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs,
|
||||
bool qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs,
|
||||
bool release_stored, Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
BdrvDirtyBitmap *bitmap;
|
||||
BDRVQcow2State *s = bs->opaque;
|
||||
uint32_t new_nb_bitmaps = s->nb_bitmaps;
|
||||
@ -1553,7 +1554,7 @@ void qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs,
|
||||
bm_list = bitmap_list_load(bs, s->bitmap_directory_offset,
|
||||
s->bitmap_directory_size, errp);
|
||||
if (bm_list == NULL) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1668,7 +1669,7 @@ success:
|
||||
}
|
||||
|
||||
bitmap_list_free(bm_list);
|
||||
return;
|
||||
return true;
|
||||
|
||||
fail:
|
||||
QSIMPLEQ_FOREACH(bm, bm_list, entry) {
|
||||
@ -1686,16 +1687,14 @@ fail:
|
||||
}
|
||||
|
||||
bitmap_list_free(bm_list);
|
||||
return false;
|
||||
}
|
||||
|
||||
int qcow2_reopen_bitmaps_ro(BlockDriverState *bs, Error **errp)
|
||||
{
|
||||
BdrvDirtyBitmap *bitmap;
|
||||
Error *local_err = NULL;
|
||||
|
||||
qcow2_store_persistent_dirty_bitmaps(bs, false, &local_err);
|
||||
if (local_err != NULL) {
|
||||
error_propagate(errp, local_err);
|
||||
if (!qcow2_store_persistent_dirty_bitmaps(bs, false, errp)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -984,7 +984,7 @@ bool qcow2_get_bitmap_info_list(BlockDriverState *bs,
|
||||
Qcow2BitmapInfoList **info_list, Error **errp);
|
||||
int qcow2_reopen_bitmaps_rw(BlockDriverState *bs, Error **errp);
|
||||
int qcow2_truncate_bitmaps_check(BlockDriverState *bs, Error **errp);
|
||||
void qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs,
|
||||
bool qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs,
|
||||
bool release_stored, Error **errp);
|
||||
int qcow2_reopen_bitmaps_ro(BlockDriverState *bs, Error **errp);
|
||||
bool qcow2_co_can_store_new_dirty_bitmap(BlockDriverState *bs,
|
||||
|
Loading…
Reference in New Issue
Block a user