qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH RFC for-2.3 4/6] qga: implement qmp_guest_set_memory


From: zhanghailiang
Subject: [Qemu-devel] [PATCH RFC for-2.3 4/6] qga: implement qmp_guest_set_memory_blocks() for Linux with sysfs
Date: Sat, 6 Dec 2014 14:59:17 +0800

Signed-off-by: zhanghailiang <address@hidden>
---
 qga/commands-posix.c | 42 +++++++++++++++++++++++++++++++++++-------
 1 file changed, 35 insertions(+), 7 deletions(-)

diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index d3f7d4f..1010e86 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -2059,6 +2059,34 @@ GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error 
**errp)
     error_propagate(errp, local_err);
     return NULL;
 }
+
+int64_t qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks,
+                                    Error **errp)
+{
+    int64_t processed;
+    Error *local_err = NULL;
+
+    processed = 0;
+    while (mem_blks != NULL) {
+        transfer_memory_block(mem_blks->value, false, &local_err);
+        if (local_err) {
+            break;
+        }
+        ++processed;
+        mem_blks = mem_blks->next;
+    }
+
+    if (local_err) {
+        if (processed == 0) {
+            error_propagate(errp, local_err);
+        } else {
+            error_free(local_err);
+        }
+    }
+
+    return processed;
+}
+
 #else /* defined(__linux__) */
 
 void qmp_guest_suspend_disk(Error **errp)
@@ -2100,6 +2128,13 @@ GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error 
**errp)
     return NULL;
 }
 
+int64_t qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks,
+                                    Error **errp)
+{
+    error_set(errp, QERR_UNSUPPORTED);
+    return -1;
+}
+
 #endif
 
 #if !defined(CONFIG_FSFREEZE)
@@ -2186,13 +2221,6 @@ GList *ga_command_blacklist_init(GList *blacklist)
     return blacklist;
 }
 
-int64_t qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks,
-                                    Error **errp)
-{
-    error_set(errp, QERR_UNSUPPORTED);
-    return -1;
-}
-
 int64_t qmp_guest_get_memory_block_size(Error **errp)
 {
     error_set(errp, QERR_UNSUPPORTED);
-- 
1.7.12.4





reply via email to

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