Message ID | 20230915184130.403366-7-den@openvz.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | implement discard operation for Parallels images | expand |
On 9/15/23 20:41, Denis V. Lunev wrote: > At the beginning of the function we can return immediately until we > really allocate s->header. > > Signed-off-by: Denis V. Lunev <den@openvz.org> > --- > block/parallels.c | 14 +++++--------- > 1 file changed, 5 insertions(+), 9 deletions(-) > > diff --git a/block/parallels.c b/block/parallels.c > index 0f127427bf..8f223bfd89 100644 > --- a/block/parallels.c > +++ b/block/parallels.c > @@ -1084,7 +1084,7 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, > > ret = bdrv_pread(bs->file, 0, sizeof(ph), &ph, 0); > if (ret < 0) { > - goto fail; > + return ret; > } > > bs->total_sectors = le64_to_cpu(ph.nb_sectors); > @@ -1104,13 +1104,11 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, > s->tracks = le32_to_cpu(ph.tracks); > if (s->tracks == 0) { > error_setg(errp, "Invalid image: Zero sectors per track"); > - ret = -EINVAL; > - goto fail; > + return -EINVAL; > } > if (s->tracks > INT32_MAX/513) { > error_setg(errp, "Invalid image: Too big cluster"); > - ret = -EFBIG; > - goto fail; > + return -EFBIG; > } > s->prealloc_size = MAX(s->tracks, s->prealloc_size); > s->cluster_size = s->tracks << BDRV_SECTOR_BITS; > @@ -1118,16 +1116,14 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, > s->bat_size = le32_to_cpu(ph.bat_entries); > if (s->bat_size > INT_MAX / sizeof(uint32_t)) { > error_setg(errp, "Catalog too large"); > - ret = -EFBIG; > - goto fail; > + return -EFBIG; > } > > size = bat_entry_off(s->bat_size); > s->header_size = ROUND_UP(size, bdrv_opt_mem_align(bs->file->bs)); > s->header = qemu_try_blockalign(bs->file->bs, s->header_size); > if (s->header == NULL) { > - ret = -ENOMEM; > - goto fail; > + return -ENOMEM; > } > > ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0); Reviewed-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
diff --git a/block/parallels.c b/block/parallels.c index 0f127427bf..8f223bfd89 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -1084,7 +1084,7 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, ret = bdrv_pread(bs->file, 0, sizeof(ph), &ph, 0); if (ret < 0) { - goto fail; + return ret; } bs->total_sectors = le64_to_cpu(ph.nb_sectors); @@ -1104,13 +1104,11 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, s->tracks = le32_to_cpu(ph.tracks); if (s->tracks == 0) { error_setg(errp, "Invalid image: Zero sectors per track"); - ret = -EINVAL; - goto fail; + return -EINVAL; } if (s->tracks > INT32_MAX/513) { error_setg(errp, "Invalid image: Too big cluster"); - ret = -EFBIG; - goto fail; + return -EFBIG; } s->prealloc_size = MAX(s->tracks, s->prealloc_size); s->cluster_size = s->tracks << BDRV_SECTOR_BITS; @@ -1118,16 +1116,14 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, s->bat_size = le32_to_cpu(ph.bat_entries); if (s->bat_size > INT_MAX / sizeof(uint32_t)) { error_setg(errp, "Catalog too large"); - ret = -EFBIG; - goto fail; + return -EFBIG; } size = bat_entry_off(s->bat_size); s->header_size = ROUND_UP(size, bdrv_opt_mem_align(bs->file->bs)); s->header = qemu_try_blockalign(bs->file->bs, s->header_size); if (s->header == NULL) { - ret = -ENOMEM; - goto fail; + return -ENOMEM; } ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0);
At the beginning of the function we can return immediately until we really allocate s->header. Signed-off-by: Denis V. Lunev <den@openvz.org> --- block/parallels.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)