diff mbox series

[8/9] parallels: Replace bdrv_co_pwrite_sync by bdrv_co_flush for BAT flushing

Message ID 20220808120734.1168314-9-alexander.ivanov@virtuozzo.com
State New
Headers show
Series parallels: Refactor the code of images checks and fix a bug | expand

Commit Message

Alexander Ivanov Aug. 8, 2022, 12:07 p.m. UTC
It's too costly to write all the BAT to the disk. Let the flush function
write only dirty blocks.

Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
---
 block/parallels.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Denis V. Lunev Aug. 8, 2022, 12:24 p.m. UTC | #1
On 08.08.2022 14:07, Alexander Ivanov wrote:
> It's too costly to write all the BAT to the disk. Let the flush function
> write only dirty blocks.
>
> Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
> ---
>   block/parallels.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/block/parallels.c b/block/parallels.c
> index 72cf7499c1..38b1482e81 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -469,7 +469,7 @@ static int parallels_check_outside_image(BlockDriverState *bs,
>       }
>   
>       if (flush_bat) {
> -        ret = bdrv_co_pwrite_sync(bs->file, 0, s->header_size, s->header, 0);
> +        ret = bdrv_co_flush(bs);
>           if (ret < 0) {
>               res->check_errors++;
>               return ret;
no-no-no, absolutely no.

Please drop ALL flush_bat dances. We do not need them once we have switched
to parallels_set_bat_entry. We do NOT need to track this anymore, this is
handled inside and thus flush should be made OUTSIDE of helpers in the
generic code of the parallels_co_check
diff mbox series

Patch

diff --git a/block/parallels.c b/block/parallels.c
index 72cf7499c1..38b1482e81 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -469,7 +469,7 @@  static int parallels_check_outside_image(BlockDriverState *bs,
     }
 
     if (flush_bat) {
-        ret = bdrv_co_pwrite_sync(bs->file, 0, s->header_size, s->header, 0);
+        ret = bdrv_co_flush(bs);
         if (ret < 0) {
             res->check_errors++;
             return ret;