diff options
author | Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> | 2021-02-02 15:49:54 +0300 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2021-03-08 16:03:27 -0600 |
commit | e6247c9c9f9e4d01b00036f017da53d130981727 (patch) | |
tree | 18257d1dea98c57408e7e34ffee0e13bbe44cb56 /block/qcow2.c | |
parent | 772c4cad13b97b8e8ef8592228707f7a5557f939 (diff) | |
download | qemu-e6247c9c9f9e4d01b00036f017da53d130981727.zip qemu-e6247c9c9f9e4d01b00036f017da53d130981727.tar.gz qemu-e6247c9c9f9e4d01b00036f017da53d130981727.tar.bz2 |
block/qcow2: simplify qcow2_co_invalidate_cache()
qcow2_do_open correctly sets errp on each failure path. So, we can
simplify code in qcow2_co_invalidate_cache() and drop explicit error
propagation.
Add ERRP_GUARD() as mandated by the documentation in
include/qapi/error.h so that error_prepend() is actually called even if
errp is &error_fatal.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Message-Id: <20210202124956.63146-13-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'block/qcow2.c')
-rw-r--r-- | block/qcow2.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/block/qcow2.c b/block/qcow2.c index 4aa0890..a1dee95 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2716,11 +2716,11 @@ static void qcow2_close(BlockDriverState *bs) static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs, Error **errp) { + ERRP_GUARD(); BDRVQcow2State *s = bs->opaque; int flags = s->flags; QCryptoBlock *crypto = NULL; QDict *options; - Error *local_err = NULL; int ret; /* @@ -2738,16 +2738,11 @@ static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs, flags &= ~BDRV_O_INACTIVE; qemu_co_mutex_lock(&s->lock); - ret = qcow2_do_open(bs, options, flags, &local_err); + ret = qcow2_do_open(bs, options, flags, errp); qemu_co_mutex_unlock(&s->lock); qobject_unref(options); - if (local_err) { - error_propagate_prepend(errp, local_err, - "Could not reopen qcow2 layer: "); - bs->drv = NULL; - return; - } else if (ret < 0) { - error_setg_errno(errp, -ret, "Could not reopen qcow2 layer"); + if (ret < 0) { + error_prepend(errp, "Could not reopen qcow2 layer: "); bs->drv = NULL; return; } |