[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 01/14] block: return status from bdrv_append and friends
From: |
Alberto Garcia |
Subject: |
Re: [PATCH v5 01/14] block: return status from bdrv_append and friends |
Date: |
Tue, 12 Jan 2021 18:27:13 +0100 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu) |
On Sat 09 Jan 2021 01:57:58 PM CET, Vladimir Sementsov-Ogievskiy wrote:
> -void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd,
> +int bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd,
> Error **errp)
The indentation of the second line should be adjusted, shouldn't it?
> {
> + int ret;
> bool update_inherits_from = bdrv_chain_contains(bs, backing_hd) &&
> bdrv_inherits_from_recursive(backing_hd, bs);
>
> if (bdrv_is_backing_chain_frozen(bs, child_bs(bs->backing), errp)) {
> - return;
> + return -EPERM;
> }
>
> if (backing_hd) {
> @@ -2853,15 +2854,24 @@ void bdrv_set_backing_hd(BlockDriverState *bs,
> BlockDriverState *backing_hd,
>
> bs->backing = bdrv_attach_child(bs, backing_hd, "backing", &child_of_bds,
> bdrv_backing_role(bs), errp);
> + if (!bs->backing) {
> + ret = -EPERM;
> + goto out;
> + }
This is not visible in the patch, but before the bdrv_attach_child()
call there's this:
if (!backing_hd) {
goto out;
}
But in this case 'ret' is still uninitialized.
> out:
> bdrv_refresh_limits(bs, NULL);
> +
> + return ret;
> }
> -static void bdrv_replace_node_common(BlockDriverState *from,
> - BlockDriverState *to,
> - bool auto_skip, Error **errp)
> +static int bdrv_replace_node_common(BlockDriverState *from,
> + BlockDriverState *to,
> + bool auto_skip, Error **errp)
> {
> BdrvChild *c, *next;
> GSList *list = NULL, *p;
> @@ -4562,6 +4572,7 @@ static void bdrv_replace_node_common(BlockDriverState
> *from,
> goto out;
> }
> if (c->frozen) {
> + ret = -EPERM;
> error_setg(errp, "Cannot change '%s' link to '%s'",
> c->name, from->node_name);
> goto out;
Same here, you set 'ret' in the second 'goto out' but not in the first.
Berto
- [PATCH v5 00/14] block: deal with errp: part I, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 02/14] block: use return status of bdrv_append(), Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 01/14] block: return status from bdrv_append and friends, Vladimir Sementsov-Ogievskiy, 2021/01/09
- Re: [PATCH v5 01/14] block: return status from bdrv_append and friends,
Alberto Garcia <=
- [PATCH v5 03/14] block: check return value of bdrv_open_child and drop error propagation, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 05/14] block: drop extra error propagation for bdrv_set_backing_hd, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 04/14] blockdev: fix drive_backup_prepare() missed error, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 06/14] block/mirror: drop extra error propagation in commit_active_start(), Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 07/14] blockjob: return status from block_job_set_speed(), Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 08/14] block/qcow2: qcow2_get_specific_info(): drop error propagation, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 09/14] block/qcow2-bitmap: improve qcow2_load_dirty_bitmaps() interface, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 11/14] block/qcow2: read_cache_sizes: return status value, Vladimir Sementsov-Ogievskiy, 2021/01/09
- [PATCH v5 10/14] block/qcow2-bitmap: return status from qcow2_store_persistent_dirty_bitmaps, Vladimir Sementsov-Ogievskiy, 2021/01/09