mirror of https://gitee.com/openkylin/qemu.git
virtio-mem: Fix the bitmap index of the section offset
vmem->bitmap indexes the memory region of the virtio-mem backend at a granularity of block_size. To calculate the index of target section offset, the block_size should be divided instead of the bitmap_size. Fixes:2044969f0b
("virtio-mem: Implement RamDiscardManager interface") Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com> Message-Id: <20221216062231.11181-1-chenyi.qiang@intel.com> Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Cc: qemu-stable@nongnu.org Signed-off-by: David Hildenbrand <david@redhat.com> (cherry picked from commitb11cf32e07
) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
74ab70084c
commit
277a972b13
|
@ -235,7 +235,7 @@ static int virtio_mem_for_each_plugged_section(const VirtIOMEM *vmem,
|
||||||
uint64_t offset, size;
|
uint64_t offset, size;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
first_bit = s->offset_within_region / vmem->bitmap_size;
|
first_bit = s->offset_within_region / vmem->block_size;
|
||||||
first_bit = find_next_bit(vmem->bitmap, vmem->bitmap_size, first_bit);
|
first_bit = find_next_bit(vmem->bitmap, vmem->bitmap_size, first_bit);
|
||||||
while (first_bit < vmem->bitmap_size) {
|
while (first_bit < vmem->bitmap_size) {
|
||||||
MemoryRegionSection tmp = *s;
|
MemoryRegionSection tmp = *s;
|
||||||
|
@ -267,7 +267,7 @@ static int virtio_mem_for_each_unplugged_section(const VirtIOMEM *vmem,
|
||||||
uint64_t offset, size;
|
uint64_t offset, size;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
first_bit = s->offset_within_region / vmem->bitmap_size;
|
first_bit = s->offset_within_region / vmem->block_size;
|
||||||
first_bit = find_next_zero_bit(vmem->bitmap, vmem->bitmap_size, first_bit);
|
first_bit = find_next_zero_bit(vmem->bitmap, vmem->bitmap_size, first_bit);
|
||||||
while (first_bit < vmem->bitmap_size) {
|
while (first_bit < vmem->bitmap_size) {
|
||||||
MemoryRegionSection tmp = *s;
|
MemoryRegionSection tmp = *s;
|
||||||
|
|
Loading…
Reference in New Issue