56 lines
2.1 KiB
Diff
56 lines
2.1 KiB
Diff
|
|
From af7d805a06677a4fdf55799c080b06483adafc9f Mon Sep 17 00:00:00 2001
|
||
|
|
From: Luo Yifan <luoyifan_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Wed, 20 Nov 2024 11:23:29 +0800
|
||
|
|
Subject: [PATCH] vvfat: Fix size of temporary qcow file
|
||
|
|
|
||
|
|
cherry picked from commit 2db9b9e96f0b57ceaa49666d9b8a573290114fdf
|
||
|
|
|
||
|
|
The size of the qcow size was calculated so that only the FAT partition
|
||
|
|
would fit on it, but not the whole disk. However, offsets relative to
|
||
|
|
the whole disk are used to access it, so increase its size to be large
|
||
|
|
enough for that.
|
||
|
|
|
||
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||
|
|
Message-Id: <20211209151815.23495-1-kwolf@redhat.com>
|
||
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||
|
|
Signed-off-by: Luo Yifan <luoyifan_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
block/vvfat.c | 7 +++----
|
||
|
|
1 file changed, 3 insertions(+), 4 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/block/vvfat.c b/block/vvfat.c
|
||
|
|
index 58692133c1..3691c4774e 100644
|
||
|
|
--- a/block/vvfat.c
|
||
|
|
+++ b/block/vvfat.c
|
||
|
|
@@ -1230,6 +1230,7 @@ static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
|
||
|
|
dirname, cyls, heads, secs));
|
||
|
|
|
||
|
|
s->sector_count = cyls * heads * secs - s->offset_to_bootsector;
|
||
|
|
+ bs->total_sectors = cyls * heads * secs;
|
||
|
|
|
||
|
|
if (qemu_opt_get_bool(opts, "rw", false)) {
|
||
|
|
if (!bdrv_is_read_only(bs)) {
|
||
|
|
@@ -1250,8 +1251,6 @@ static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
- bs->total_sectors = cyls * heads * secs;
|
||
|
|
-
|
||
|
|
if (init_directories(s, dirname, heads, secs, errp)) {
|
||
|
|
ret = -EIO;
|
||
|
|
goto fail;
|
||
|
|
@@ -3149,8 +3148,8 @@ static int enable_write_target(BlockDriverState *bs, Error **errp)
|
||
|
|
}
|
||
|
|
|
||
|
|
opts = qemu_opts_create(bdrv_qcow->create_opts, NULL, 0, &error_abort);
|
||
|
|
- qemu_opt_set_number(opts, BLOCK_OPT_SIZE, s->sector_count * 512,
|
||
|
|
- &error_abort);
|
||
|
|
+ qemu_opt_set_number(opts, BLOCK_OPT_SIZE,
|
||
|
|
+ bs->total_sectors * BDRV_SECTOR_SIZE, &error_abort);
|
||
|
|
qemu_opt_set(opts, BLOCK_OPT_BACKING_FILE, "fat:", &error_abort);
|
||
|
|
|
||
|
|
ret = bdrv_create(bdrv_qcow, s->qcow_filename, opts, errp);
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|