[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 3/8] qemu-img: rebase: use backing files' BlockBackend for buf
From: |
Andrey Drobyshev |
Subject: |
[PATCH v3 3/8] qemu-img: rebase: use backing files' BlockBackend for buffer alignment |
Date: |
Tue, 19 Sep 2023 19:57:59 +0300 |
Since commit bb1c05973cf ("qemu-img: Use qemu_blockalign"), buffers for
the data read from the old and new backing files are aligned using
BlockDriverState (or BlockBackend later on) referring to the target image.
However, this isn't quite right, because buf_new is only being used for
reading from the new backing, while buf_old is being used for both reading
from the old backing and writing to the target. Let's take that into account
and use more appropriate values as alignments.
Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
---
qemu-img.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index 50660ba920..4dc91505bf 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -3750,8 +3750,13 @@ static int img_rebase(int argc, char **argv)
int64_t n;
float local_progress = 0;
- buf_old = blk_blockalign(blk, IO_BUF_SIZE);
- buf_new = blk_blockalign(blk, IO_BUF_SIZE);
+ if (blk_old_backing && bdrv_opt_mem_align(blk_bs(blk_old_backing)) >
+ bdrv_opt_mem_align(blk_bs(blk))) {
+ buf_old = blk_blockalign(blk_old_backing, IO_BUF_SIZE);
+ } else {
+ buf_old = blk_blockalign(blk, IO_BUF_SIZE);
+ }
+ buf_new = blk_blockalign(blk_new_backing, IO_BUF_SIZE);
size = blk_getlength(blk);
if (size < 0) {
--
2.39.3
- [PATCH v3 0/8] qemu-img: rebase: add compression support, Andrey Drobyshev, 2023/09/19
- [PATCH v3 2/8] qemu-iotests: 024: add rebasing test case for overlay_size > backing_size, Andrey Drobyshev, 2023/09/19
- [PATCH v3 7/8] qemu-img: add compression option to rebase subcommand, Andrey Drobyshev, 2023/09/19
- [PATCH v3 3/8] qemu-img: rebase: use backing files' BlockBackend for buffer alignment,
Andrey Drobyshev <=
- [PATCH v3 6/8] iotests/{024, 271}: add testcases for qemu-img rebase, Andrey Drobyshev, 2023/09/19
- [PATCH v3 4/8] qemu-img: add chunk size parameter to compare_buffers(), Andrey Drobyshev, 2023/09/19
- [PATCH v3 1/8] qemu-img: rebase: stop when reaching EOF of old backing file, Andrey Drobyshev, 2023/09/19
- [PATCH v3 5/8] qemu-img: rebase: avoid unnecessary COW operations, Andrey Drobyshev, 2023/09/19
- [PATCH v3 8/8] iotests: add tests for "qemu-img rebase" with compression, Andrey Drobyshev, 2023/09/19