Use the whole file size if @size is not specified which is useful if we want to directly pass a file to guest Signed-off-by: Xiao Guangrong <guangrong.xiao@xxxxxxxxxxxxxxx> --- backends/hostmem-file.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c index 9097a57..ea355c1 100644 --- a/backends/hostmem-file.c +++ b/backends/hostmem-file.c @@ -38,15 +38,29 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) { HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(backend); - if (!backend->size) { - error_setg(errp, "can't create backend with size 0"); - return; - } if (!fb->mem_path) { error_setg(errp, "mem-path property not set"); return; } + if (!backend->size) { + Error *local_err = NULL; + + /* + * use the whole file size if @size is not specified. + */ + backend->size = qemu_file_getlength(fb->mem_path, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + } + + if (!backend->size) { + error_setg(errp, "can't create backend on the file whose size is 0"); + return; + } + backend->force_prealloc = mem_prealloc; memory_region_init_ram_from_file(&backend->mr, OBJECT(backend), object_get_canonical_path(OBJECT(backend)), -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html