@@ -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)
{
@@ -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
Signed-off-by: Orit Wasserman <owasserm@redhat.com> --- migration.c | 25 ++++++++++++++++++++++++- migration.h | 7 +++++++ 2 files changed, 31 insertions(+), 1 deletions(-)