mirror of https://github.com/proxmox/mirror_qemu
block: do not use ->total_sectors in bdrv_co_is_allocated
This is more robust when the device has removable media. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>master
parent
bdad13b9de
commit
617ccb466e
8
block.c
8
block.c
|
@ -3065,9 +3065,15 @@ static int coroutine_fn bdrv_co_is_allocated(BlockDriverState *bs,
|
||||||
int64_t sector_num,
|
int64_t sector_num,
|
||||||
int nb_sectors, int *pnum)
|
int nb_sectors, int *pnum)
|
||||||
{
|
{
|
||||||
|
int64_t length;
|
||||||
int64_t n;
|
int64_t n;
|
||||||
|
|
||||||
if (sector_num >= bs->total_sectors) {
|
length = bdrv_getlength(bs);
|
||||||
|
if (length < 0) {
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sector_num >= (length >> BDRV_SECTOR_BITS)) {
|
||||||
*pnum = 0;
|
*pnum = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue