Skip to content

Commit

Permalink
qga-win: Fix guest-get-fsinfo multi-disks collection
Browse files Browse the repository at this point in the history
When a volume has more than one disk, all disks cannot be
returned correctly because there is not enough malloced memory
for disk extents, so before executing DeviceIoControl for the
second time, get the correct size of the required memory space
to store all disk extents.

Details:
https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ns-winioctl-volume_disk_extents

Signed-off-by: Peng Ji <peng.ji@smartx.com>
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
Signed-off-by: Konstantin Kostiuk <kkostiuk@redhat.com>
  • Loading branch information
Peng Ji authored and kostyanf14 committed Jan 30, 2024
1 parent 8c72e19 commit 7c44863
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions qga/commands-win32.c
Original file line number Diff line number Diff line change
Expand Up @@ -935,6 +935,8 @@ static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **errp)
DWORD last_err = GetLastError();
if (last_err == ERROR_MORE_DATA) {
/* Try once more with big enough buffer */
size = sizeof(VOLUME_DISK_EXTENTS) +
(sizeof(DISK_EXTENT) * (extents->NumberOfDiskExtents - 1));
g_free(extents);
extents = g_malloc0(size);
if (!DeviceIoControl(
Expand Down

0 comments on commit 7c44863

Please sign in to comment.