diff mbox series

[v9,08/12] parallels: Fix statistics calculation

Message ID 20230131102736.2127945-9-alexander.ivanov@virtuozzo.com (mailing list archive)
State New, archived
Headers show
Series parallels: Refactor the code of images checks and fix a bug | expand

Commit Message

Alexander Ivanov Jan. 31, 2023, 10:27 a.m. UTC
Exclude out-of-image clusters from allocated and fragmented clusters
calculation.

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

Comments

Denis V. Lunev Jan. 31, 2023, 3:34 p.m. UTC | #1
On 1/31/23 11:27, Alexander Ivanov wrote:
> Exclude out-of-image clusters from allocated and fragmented clusters
> calculation.
>
> 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 f9acee1fa8..7382c01191 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -510,7 +510,7 @@ static int coroutine_fn parallels_co_check(BlockDriverState *bs,
>       prev_off = 0;
>       for (i = 0; i < s->bat_size; i++) {
>           int64_t off = bat2sect(s, i) << BDRV_SECTOR_BITS;
> -        if (off == 0) {
> +        if (off == 0 || off + s->cluster_size > res->image_end_offset) {
>               prev_off = 0;
>               continue;
>           }
This requires explicit comment that the fix is applicable
for the case when BDRV_FIX_ERRORS is not set or
I am missed something in the context.

Den
diff mbox series

Patch

diff --git a/block/parallels.c b/block/parallels.c
index f9acee1fa8..7382c01191 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -510,7 +510,7 @@  static int coroutine_fn parallels_co_check(BlockDriverState *bs,
     prev_off = 0;
     for (i = 0; i < s->bat_size; i++) {
         int64_t off = bat2sect(s, i) << BDRV_SECTOR_BITS;
-        if (off == 0) {
+        if (off == 0 || off + s->cluster_size > res->image_end_offset) {
             prev_off = 0;
             continue;
         }