diff mbox series

[v4,10/21] parallels: Create used bitmap even if checks needed

Message ID 20231228101232.372142-11-alexander.ivanov@virtuozzo.com (mailing list archive)
State New, archived
Headers show
Series parallels: Add full dirty bitmap support | expand

Commit Message

Alexander Ivanov Dec. 28, 2023, 10:12 a.m. UTC
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(-)

Comments

Denis V. Lunev Jan. 16, 2024, 2:37 p.m. UTC | #1
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.
diff mbox series

Patch

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