From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:34014) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiBpu-0008EW-LK for qemu-devel@nongnu.org; Tue, 03 Jan 2012 16:23:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RiBpt-0006rk-MN for qemu-devel@nongnu.org; Tue, 03 Jan 2012 16:23:58 -0500 Received: from dsl212-143-172-188.bb.netvision.net.il ([212.143.172.188]:42111 helo=dhcp-1-120.tlv.redhat.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiBps-0006rY-JR for qemu-devel@nongnu.org; Tue, 03 Jan 2012 16:23:57 -0500 From: Orit Wasserman Date: Tue, 3 Jan 2012 15:35:43 +0200 Message-Id: <1325597745-29293-8-git-send-email-owasserm@redhat.com> In-Reply-To: <1325597745-29293-1-git-send-email-owasserm@redhat.com> References: <1325597745-29293-1-git-send-email-owasserm@redhat.com> Subject: [Qemu-devel] [PATCH v5 7/9] Add set_cachesize to change XBRLE cache size List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: blauwirbel@gmail.com, stefanha@gmail.com, Orit Wasserman , quintela@redhat.com Signed-off-by: Orit Wasserman --- migration.c | 25 ++++++++++++++++++++++++- migration.h | 7 +++++++ 2 files changed, 31 insertions(+), 1 deletions(-) diff --git a/migration.c b/migration.c index ed47958..3d88cdd 100644 --- a/migration.c +++ b/migration.c @@ -380,7 +380,30 @@ void migrate_fd_connect(MigrationState *s) migrate_fd_put_ready(s); } -static MigrationState *migrate_init(Monitor *mon, int detach, int blk, int inc) +void do_migrate_set_cachesize(Monitor *mon, const QDict *qdict) +{ + ssize_t bytes; + const char *value = qdict_get_str(qdict, "value"); + + bytes = strtosz(value, NULL); + if (bytes < 0) { + monitor_printf(mon, "invalid cache size: %s\n", value); + return; + } + + /* On 32-bit hosts, QEMU is limited by virtual address space */ + if (bytes > (2047 << 20) && HOST_LONG_BITS == 32) { + monitor_printf(mon, "cache can't exceed 2047 MB RAM limit on host\n"); + return; + } + if (bytes != (uint64_t) bytes) { + monitor_printf(mon, "cache size too large\n"); + return; + } + + migrate_cache_size = bytes; +} + static MigrationState *migrate_init(Monitor *mon, int detach, int blk, int inc, int use_xbrle, int64_t xbrle_cache_size) { diff --git a/migration.h b/migration.h index 592af6a..6de09c8 100644 --- a/migration.h +++ b/migration.h @@ -98,4 +98,11 @@ void migrate_add_blocker(Error *reason); */ void migrate_del_blocker(Error *reason); +void do_migrate_set_cachesize(Monitor *mon, const QDict *qdict); + +void arch_set_params(int blk_enable, int shared_base, + int use_xbrle, int64_t xbrle_cache_size, void *opaque); + +int xbrle_mig_active(void); + #endif -- 1.7.6.5