aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2020-04-02 11:36:03 +0200
committerMichael Roth <mdroth@linux.vnet.ibm.com>2020-06-22 12:52:50 -0500
commitecdb0d5651eb9a9604c23e342cfd993a49140309 (patch)
tree65e6ef36e2634843608e57796084a4b1497eeb91
parent9c2e242077f7ea6a558ed5828a83f26098077990 (diff)
downloadqemu-ecdb0d5651eb9a9604c23e342cfd993a49140309.zip
qemu-ecdb0d5651eb9a9604c23e342cfd993a49140309.tar.gz
qemu-ecdb0d5651eb9a9604c23e342cfd993a49140309.tar.bz2
vpc: Don't round up already aligned BAT sizes
As reported on Launchpad, Azure apparently doesn't accept images for upload that are not both aligned to 1 MB blocks and have a BAT size that matches the image size exactly. As far as I can tell, there is no real reason why we create a BAT that is one entry longer than necessary for aligned image sizes, so change that. (Even though the condition is only mentioned as "should" in the spec and previous products accepted larger BATs - but we'll try to maintain compatibility with as many of Microsoft's ever-changing interpretations of the VHD spec as possible.) Fixes: https://bugs.launchpad.net/bugs/1870098 Reported-by: Tobias Witek Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20200402093603.2369-1-kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> (cherry picked from commit 3f6de653b946fe849330208becf79d6af7e876cb) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--block/vpc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/vpc.c b/block/vpc.c
index a655502..21b0803 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -835,7 +835,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
/* Write the footer (twice: at the beginning and at the end) */
block_size = 0x200000;
- num_bat_entries = (total_sectors + block_size / 512) / (block_size / 512);
+ num_bat_entries = DIV_ROUND_UP(total_sectors, block_size / 512);
ret = blk_pwrite(blk, offset, buf, HEADER_SIZE, 0);
if (ret < 0) {