[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 15/21] parallels: update used bitmap in allocate_cluster
From: |
Denis V. Lunev |
Subject: |
[PATCH 15/21] parallels: update used bitmap in allocate_cluster |
Date: |
Fri, 15 Sep 2023 20:41:24 +0200 |
We should extend the bitmap ff the file is extended and set the bit in
the image used bitmap once the cluster is allocated. Sanity check at
that moment also looks like a good idea.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
block/parallels.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/block/parallels.c b/block/parallels.c
index a2ba5a9353..a6d2f05863 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -282,6 +282,8 @@ allocate_clusters(BlockDriverState *bs, int64_t sector_num,
return len;
}
if (s->data_end + space > (len >> BDRV_SECTOR_BITS)) {
+ uint32_t new_usedsize;
+
space += s->prealloc_size;
/*
* We require the expanded size to read back as zero. If the
@@ -305,6 +307,12 @@ allocate_clusters(BlockDriverState *bs, int64_t sector_num,
if (ret < 0) {
return ret;
}
+
+ new_usedsize = s->used_bmap_size +
+ (space << BDRV_SECTOR_BITS) / s->cluster_size;
+ s->used_bmap = bitmap_zero_extend(s->used_bmap, s->used_bmap_size,
+ new_usedsize);
+ s->used_bmap_size = new_usedsize;
}
/*
@@ -336,6 +344,12 @@ allocate_clusters(BlockDriverState *bs, int64_t sector_num,
}
}
+ ret = mark_used(bs, s->used_bmap, s->used_bmap_size,
+ s->data_end << BDRV_SECTOR_BITS, to_allocate);
+ if (ret < 0) {
+ /* Image consistency is broken. Alarm! */
+ return ret;
+ }
for (i = 0; i < to_allocate; i++) {
parallels_set_bat_entry(s, idx + i, s->data_end / s->off_multiplier);
s->data_end += s->tracks;
--
2.34.1
- [PATCH 21/21] tests: extend test 131 to cover availability of the write-zeroes, (continued)
- [PATCH 21/21] tests: extend test 131 to cover availability of the write-zeroes, Denis V. Lunev, 2023/09/15
- [PATCH 20/21] parallels: naive implementation of parallels_co_pwrite_zeroes, Denis V. Lunev, 2023/09/15
- [PATCH 13/21] tests: test self-cure of parallels image with duplicated clusters, Denis V. Lunev, 2023/09/15
- [PATCH 10/21] parallels: add test which will validate data_off fixes through repair, Denis V. Lunev, 2023/09/15
- [PATCH 18/21] parallels: naive implementation of parallels_co_pdiscard, Denis V. Lunev, 2023/09/15
- [PATCH 12/21] tests: fix broken deduplication check in parallels format test, Denis V. Lunev, 2023/09/15
- [PATCH 15/21] parallels: update used bitmap in allocate_cluster,
Denis V. Lunev <=
- [PATCH 11/21] parallels: collect bitmap of used clusters at open, Denis V. Lunev, 2023/09/15
- [PATCH 11/21] parallels: collect bitmap of used clusters at open, Denis V. Lunev, 2023/09/15
- [PATCH 17/21] parallels: improve readability of allocate_clusters, Denis V. Lunev, 2023/09/15