[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 for-2.7 6/8] block: Make bdrv_open() return a
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v2 for-2.7 6/8] block: Make bdrv_open() return a BDS |
Date: |
Thu, 7 Apr 2016 14:39:03 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 06.04.2016 um 19:57 hat Max Reitz geschrieben:
> There are no callers to bdrv_open() or bdrv_open_inherit() left that
> pass a pointer to a non-NULL BDS pointer as the first argument of these
> functions, so we can finally drop that parameter and just make them
> return the new BDS.
>
> Generally, the following pattern is applied:
>
> bs = NULL;
> ret = bdrv_open(&bs, ..., &local_err);
> if (ret < 0) {
> error_propagate(errp, local_err);
> ...
> }
>
> by
>
> bs = bdrv_open(..., errp);
> if (!bs) {
> ret = -EINVAL;
> ...
> }
>
> Of course, there are only a few instances where the pattern is really
> pure.
>
> Signed-off-by: Max Reitz <address@hidden>
> @@ -1527,32 +1524,21 @@ static int bdrv_open_inherit(BlockDriverState **pbs,
> const char *filename,
> bool options_non_empty = options ? qdict_size(options) : false;
> QDECREF(options);
>
> - if (*pbs) {
> - error_setg(errp, "Cannot reuse an existing BDS when referencing "
> - "another block device");
> - return -EINVAL;
> - }
> -
> if (filename || options_non_empty) {
> error_setg(errp, "Cannot reference an existing block device with
> "
> "additional options or a new filename");
> - return -EINVAL;
> + return NULL;
> }
>
> bs = bdrv_lookup_bs(reference, reference, errp);
> if (!bs) {
> - return -ENODEV;
> + return NULL;
> }
> bdrv_ref(bs);
> - *pbs = bs;
> - return 0;
> + return bs;
> }
>
> - if (*pbs) {
> - bs = *pbs;
> - } else {
> - bs = bdrv_new();
> - }
> + bs = bdrv_new();
>
> /* NULL means an empty set of options */
> if (options == NULL) {
While the following hunks remove the other instances, there's one
ret = -EINVAL left between here and the next hunk:
/* json: syntax counts as explicit options, as if in the QDict */
parse_json_protocol(options, &filename, &local_err);
if (local_err) {
ret = -EINVAL;
goto fail;
}
> @@ -1589,7 +1575,6 @@ static int bdrv_open_inherit(BlockDriverState **pbs,
> const char *filename,
> drv = bdrv_find_format(drvname);
> if (!drv) {
> error_setg(errp, "Unknown driver: '%s'", drvname);
> - ret = -EINVAL;
> goto fail;
> }
> }
With that fixed:
Reviewed-by: Kevin Wolf <address@hidden>
- Re: [Qemu-devel] [PATCH v2 for-2.7 2/8] block: Let bdrv_open_inherit() return the snapshot, (continued)
- [Qemu-devel] [PATCH v2 for-2.7 3/8] tests: Drop BDS from test-throttle.c, Max Reitz, 2016/04/06
- [Qemu-devel] [PATCH v2 for-2.7 4/8] block: Drop blk_new_with_bs(), Max Reitz, 2016/04/06
- [Qemu-devel] [PATCH v2 for-2.7 7/8] block: Assert !bs->refcnt in bdrv_close(), Max Reitz, 2016/04/06
- [Qemu-devel] [PATCH v2 for-2.7 5/8] block: Drop bdrv_new_root(), Max Reitz, 2016/04/06
- [Qemu-devel] [PATCH v2 for-2.7 6/8] block: Make bdrv_open() return a BDS, Max Reitz, 2016/04/06
- Re: [Qemu-devel] [PATCH v2 for-2.7 6/8] block: Make bdrv_open() return a BDS,
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 for-2.7 8/8] block: Drop bdrv_parent_cb_...() from bdrv_close(), Max Reitz, 2016/04/06