Commit 1963f8d5 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Max Reitz
Browse files

block: acquire in bdrv_query_image_info



NFS calls aio_poll inside bdrv_get_allocated_size.  This requires
acquiring the AioContext.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Message-id: 1450867706-19860-1-git-send-email-pbonzini@redhat.com
Reviewed-by: default avatarFam Zheng <famz@redhat.com>
Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
parent c78dc182
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -211,11 +211,13 @@ void bdrv_query_image_info(BlockDriverState *bs,
    Error *err = NULL;
    ImageInfo *info;

    aio_context_acquire(bdrv_get_aio_context(bs));

    size = bdrv_getlength(bs);
    if (size < 0) {
        error_setg_errno(errp, -size, "Can't get size of device '%s'",
                         bdrv_get_device_name(bs));
        return;
        goto out;
    }

    info = g_new0(ImageInfo, 1);
@@ -283,10 +285,13 @@ void bdrv_query_image_info(BlockDriverState *bs,
    default:
        error_propagate(errp, err);
        qapi_free_ImageInfo(info);
        return;
        goto out;
    }

    *p_info = info;

out:
    aio_context_release(bdrv_get_aio_context(bs));
}

/* @p_info will be set only on success. */