diff options
author | Maxim Levitsky <mlevitsk@redhat.com> | 2020-12-17 19:09:03 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2021-02-15 15:10:14 +0100 |
commit | a890f08e586fd81946c51dae6a878d64486b1364 (patch) | |
tree | 8a35618d720e9e07f7f063ef2431a3898a999cac /block.c | |
parent | dcb6699512b6235eac383fc84e8e27302e08d7e3 (diff) | |
download | qemu-a890f08e586fd81946c51dae6a878d64486b1364.zip qemu-a890f08e586fd81946c51dae6a878d64486b1364.tar.gz qemu-a890f08e586fd81946c51dae6a878d64486b1364.tar.bz2 |
block: add bdrv_co_delete_file_noerr
This function wraps bdrv_co_delete_file for the common case of removing a file,
which was just created by format driver, on an error condition.
It hides the -ENOTSUPP error, and reports all other errors otherwise.
Use it in luks driver
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-Id: <20201217170904.946013-3-mlevitsk@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block.c')
-rw-r--r-- | block.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -706,6 +706,28 @@ int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp) return ret; } +void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs) +{ + Error *local_err = NULL; + int ret; + + if (!bs) { + return; + } + + ret = bdrv_co_delete_file(bs, &local_err); + /* + * ENOTSUP will happen if the block driver doesn't support + * the 'bdrv_co_delete_file' interface. This is a predictable + * scenario and shouldn't be reported back to the user. + */ + if (ret == -ENOTSUP) { + error_free(local_err); + } else if (ret < 0) { + error_report_err(local_err); + } +} + /** * Try to get @bs's logical and physical block size. * On success, store them in @bsz struct and return 0. |