qemu-io: fix the alloc command
Because sector_num is not updated, the loop would either go on forever or return garbage. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
8655d2de0a
commit
cc785c349d
10
qemu-io.c
10
qemu-io.c
@ -1560,7 +1560,7 @@ out:
|
||||
|
||||
static int alloc_f(int argc, char **argv)
|
||||
{
|
||||
int64_t offset;
|
||||
int64_t offset, sector_num;
|
||||
int nb_sectors, remaining;
|
||||
char s1[64];
|
||||
int num, sum_alloc;
|
||||
@ -1581,12 +1581,18 @@ static int alloc_f(int argc, char **argv)
|
||||
|
||||
remaining = nb_sectors;
|
||||
sum_alloc = 0;
|
||||
sector_num = offset >> 9;
|
||||
while (remaining) {
|
||||
ret = bdrv_is_allocated(bs, offset >> 9, nb_sectors, &num);
|
||||
ret = bdrv_is_allocated(bs, sector_num, remaining, &num);
|
||||
sector_num += num;
|
||||
remaining -= num;
|
||||
if (ret) {
|
||||
sum_alloc += num;
|
||||
}
|
||||
if (num == 0) {
|
||||
nb_sectors -= remaining;
|
||||
remaining = 0;
|
||||
}
|
||||
}
|
||||
|
||||
cvtstr(offset, s1, sizeof(s1));
|
||||
|
Loading…
Reference in New Issue
Block a user