[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug 1870098] Re: [block/vpc] cynamic disk header: off-by-one error for
From: |
Kevin Wolf |
Subject: |
[Bug 1870098] Re: [block/vpc] cynamic disk header: off-by-one error for "num_bat_entries" |
Date: |
Wed, 01 Apr 2020 13:22:24 -0000 |
Is there any actual bug resulting from this that you're observing? As I
read the spec, having a longer BAT is merely unconventional, not
strictly wrong. So if another application fails to deal with such
images, it's probably a bug in that application.
Of course, I can't see a reason for making the BAT longer than necessary
either. We do, however, need to round up if the disk size is not a
multiple of the image block size. So I think what it really should be
is:
num_bat_entries = DIV_ROUND_UP(total_sectors, block_size / 512)
If you agree, please let me know if I should submit a patch or if you
would like to do that yourself. (See
https://wiki.qemu.org/Contribute/SubmitAPatch)
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1870098
Title:
[block/vpc] cynamic disk header: off-by-one error for
"num_bat_entries"
Status in QEMU:
New
Bug description:
In current qemu versions (observed in 5.0.0-rc1 as well as
2833ad487cfff7dc33703e4731b75facde1c561e), disk headers for dynamic
VPCs are written with an incorrect "block allocation table entries"
value.
https://www.microsoft.com/en-us/download/details.aspx?id=23850 (the
corresponding spec) states that:
"Max Table Entries
This field holds the maximum entries present in the BAT. This should be equal
to the number of blocks in the disk (that is, the disk size divided by the
block size)."
Inside the qemu code, the value is "disk size divided by the block
size *plus one*".
Calculating "num_bat_entries" as "total_sectors/(block_size / 512)"
*should* fix the issue.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1870098/+subscriptions