mirror of https://github.com/xemu-project/xemu.git
block: acquire in bdrv_query_image_info
NFS calls aio_poll inside bdrv_get_allocated_size. This requires acquiring the AioContext. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 1450867706-19860-1-git-send-email-pbonzini@redhat.com Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
c78dc18295
commit
1963f8d52e
|
@ -211,11 +211,13 @@ void bdrv_query_image_info(BlockDriverState *bs,
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
ImageInfo *info;
|
ImageInfo *info;
|
||||||
|
|
||||||
|
aio_context_acquire(bdrv_get_aio_context(bs));
|
||||||
|
|
||||||
size = bdrv_getlength(bs);
|
size = bdrv_getlength(bs);
|
||||||
if (size < 0) {
|
if (size < 0) {
|
||||||
error_setg_errno(errp, -size, "Can't get size of device '%s'",
|
error_setg_errno(errp, -size, "Can't get size of device '%s'",
|
||||||
bdrv_get_device_name(bs));
|
bdrv_get_device_name(bs));
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
info = g_new0(ImageInfo, 1);
|
info = g_new0(ImageInfo, 1);
|
||||||
|
@ -283,10 +285,13 @@ void bdrv_query_image_info(BlockDriverState *bs,
|
||||||
default:
|
default:
|
||||||
error_propagate(errp, err);
|
error_propagate(errp, err);
|
||||||
qapi_free_ImageInfo(info);
|
qapi_free_ImageInfo(info);
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
*p_info = info;
|
*p_info = info;
|
||||||
|
|
||||||
|
out:
|
||||||
|
aio_context_release(bdrv_get_aio_context(bs));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @p_info will be set only on success. */
|
/* @p_info will be set only on success. */
|
||||||
|
|
Loading…
Reference in New Issue