On 12/28/23 11:12, Alexander Ivanov wrote:
> All the checks were fixed to work with used bitmap. Create used bitmap in
> parallels_open() even if need_check is true.
>
> Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
> ---
> block/parallels.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/block/parallels.c b/block/parallels.c
> index 0ae06ec0b1..f38dd2309c 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -1421,13 +1421,11 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
> }
> need_check = need_check || s->data_end > file_nb_sectors;
>
> - if (!need_check) {
> - ret = parallels_fill_used_bitmap(bs);
> - if (ret == -ENOMEM) {
> - goto fail;
> - }
> - need_check = need_check || ret < 0; /* These are correctable errors */
> + ret = parallels_fill_used_bitmap(bs);
> + if (ret == -ENOMEM) {
> + goto fail;
> }
> + need_check = need_check || ret < 0; /* These are correctable errors */
>
> /*
> * We don't repair the image here if it's opened for checks. Also we don't
Why do we need it? Most likely we will have to recreate it
on a error. If there is some sense - we need a real motivation
why do we need used bitmap.
Here, at this point, we have already detected that there is
something very bad happened and we can have too long file
or something like that.