From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xx9SF-0001SF-HP for qemu-devel@nongnu.org; Sat, 06 Dec 2014 02:07:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xx9S6-0000Vq-Hs for qemu-devel@nongnu.org; Sat, 06 Dec 2014 02:06:59 -0500 Received: from szxga02-in.huawei.com ([119.145.14.65]:32358) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xx9S5-0000VN-Uj for qemu-devel@nongnu.org; Sat, 06 Dec 2014 02:06:50 -0500 From: zhanghailiang Date: Sat, 6 Dec 2014 14:59:17 +0800 Message-ID: <1417849159-6568-5-git-send-email-zhang.zhanghailiang@huawei.com> In-Reply-To: <1417849159-6568-1-git-send-email-zhang.zhanghailiang@huawei.com> References: <1417849159-6568-1-git-send-email-zhang.zhanghailiang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH RFC for-2.3 4/6] qga: implement qmp_guest_set_memory_blocks() for Linux with sysfs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: zhanghailiang , mdroth@linux.vnet.ibm.com, peter.huangpeng@huawei.com Signed-off-by: zhanghailiang --- 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