qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 13/35] hostmem-file: use whole file size if p


From: Xiao Guangrong
Subject: Re: [Qemu-devel] [PATCH v7 13/35] hostmem-file: use whole file size if possible
Date: Tue, 3 Nov 2015 22:51:47 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0



On 11/03/2015 01:09 AM, Vladimir Sementsov-Ogievskiy wrote:
On 02.11.2015 12:13, Xiao Guangrong wrote:
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 <address@hidden>
---
  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)),

why not just

It look like it is a common style used in whole QEMU code.


+    if (!backend->size) {
+        /*
+         * use the whole file size if @size is not specified.
+         */
+        backend->size = qemu_file_getlength(fb->mem_path, errp);
+        if (*errp) {
+            return;
+        }
+    }



But i think your way is better. :)

what the purpose of propagating?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]