From: "Denis V. Lunev" <den@openvz.org>
Cc: "Denis V. Lunev" <den@openvz.org>,
Igor Redko <redkoi@virtuozzo.com>,
jsnow@redhat.com, qemu-devel@nongnu.org, annam@virtuozzo.com
Subject: [Qemu-devel] [PATCH 5/8] migration: add draft of new transport
Date: Wed, 7 Oct 2015 09:20:43 +0300 [thread overview]
Message-ID: <1444198846-5383-6-git-send-email-den@openvz.org> (raw)
In-Reply-To: <1444198846-5383-1-git-send-email-den@openvz.org>
From: Igor Redko <redkoi@virtuozzo.com>
In this patch transport test is added. It can be used to estimate
the possibility of live migration given downtime and bandwidth.
In this patch basic functionality is implemented to meet the
QEMUFile interface requirements.
This transport is write-only. Moreover, it saves only the size of
the transferred data and drops the data itself.
Also, the Makefile modification to link this file included.
Signed-off-by: Igor Redko <redkoi@virtuozzo.com>
Reviewed-by: Anna Melekhova <annam@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
include/migration/migration.h | 2 ++
migration/Makefile.objs | 2 +-
migration/test.c | 66 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 69 insertions(+), 1 deletion(-)
create mode 100644 migration/test.c
diff --git a/include/migration/migration.h b/include/migration/migration.h
index 8611750..555267b 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -108,6 +108,8 @@ void rdma_start_outgoing_migration(void *opaque, const char *host_port, Error **
void rdma_start_incoming_migration(const char *host_port, Error **errp);
+void test_start_migration(void *opaque, const char *host_port, Error **errp);
+
void migrate_fd_error(MigrationState *s);
void migrate_fd_connect(MigrationState *s);
diff --git a/migration/Makefile.objs b/migration/Makefile.objs
index d929e96..2da590b 100644
--- a/migration/Makefile.objs
+++ b/migration/Makefile.objs
@@ -1,4 +1,4 @@
-common-obj-y += migration.o tcp.o
+common-obj-y += migration.o tcp.o test.o
common-obj-y += vmstate.o
common-obj-y += qemu-file.o qemu-file-buf.o qemu-file-unix.o qemu-file-stdio.o
common-obj-y += xbzrle.o
diff --git a/migration/test.c b/migration/test.c
new file mode 100644
index 0000000..8d06988
--- /dev/null
+++ b/migration/test.c
@@ -0,0 +1,66 @@
+#include "qemu-common.h"
+#include "migration/migration.h"
+#include "migration/qemu-file.h"
+#include "exec/cpu-common.h"
+#include "qemu/error-report.h"
+#include "qemu/main-loop.h"
+#include "qemu/sockets.h"
+#include "qemu/bitmap.h"
+#include <stdio.h>
+#include <string.h>
+#include "qmp-commands.h"
+
+typedef struct QEMUFileTest {
+ MigrationState *s;
+ size_t len;
+ QEMUFile *file;
+} QEMUFileTest;
+
+static uint64_t transfered_bytes;
+static uint64_t initial_bytes;
+
+static ssize_t qemu_test_put_buffer(void *opaque, const uint8_t *buf,
+ int64_t pos, size_t size)
+{
+ transfered_bytes += size;
+ return size;
+}
+
+static int qemu_test_close(void *opaque)
+{
+ return 0;
+}
+
+static const QEMUFileOps test_write_ops = {
+ .put_buffer = qemu_test_put_buffer,
+ .close = qemu_test_close,
+};
+
+static void *qemu_fopen_test(MigrationState *s, const char *mode)
+{
+ QEMUFileTest *t;
+ transfered_bytes = 0;
+ initial_bytes = 0;
+ if (qemu_file_mode_is_not_valid(mode)) {
+ return NULL;
+ }
+
+ t = g_malloc0(sizeof(QEMUFileTest));
+ t->s = s;
+
+ if (mode[0] == 'w') {
+ t->file = qemu_fopen_ops(s, &test_write_ops);
+ } else {
+ return NULL;
+ }
+ qemu_file_set_rate_limit(t->file, -1);
+ return t->file;
+}
+
+void test_start_migration(void *opaque, const char *host_port, Error **errp)
+{
+ MigrationState *s = opaque;
+ s->file = qemu_fopen_test(s, "wb");
+ migrate_fd_connect(s);
+ return;
+}
--
2.1.4
next prev parent reply other threads:[~2015-10-07 6:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-06 18:46 [Qemu-devel] Debugging Migration John Snow
2015-10-06 19:00 ` Dr. David Alan Gilbert
2015-10-06 22:40 ` Denis V. Lunev
2015-10-06 23:02 ` John Snow
2015-10-07 6:20 ` [Qemu-devel] [RFC 0/8] QEMUFile-way to gather VM's memory statistics Denis V. Lunev
2015-10-07 6:20 ` [Qemu-devel] [PATCH 1/8] migration: fix expected_downtime Denis V. Lunev
2015-10-07 6:20 ` [Qemu-devel] [PATCH 2/8] qemu-file: new hook in qemu-file Denis V. Lunev
2015-10-07 6:20 ` [Qemu-devel] [PATCH 3/8] migration: add new capability test-only Denis V. Lunev
2015-10-07 15:05 ` Eric Blake
2015-10-08 14:54 ` Denis V. Lunev
2015-10-09 15:19 ` Dr. David Alan Gilbert
2015-10-07 6:20 ` [Qemu-devel] [PATCH 4/8] migration: add function for reseting migration bitmap Denis V. Lunev
2015-10-07 6:20 ` Denis V. Lunev [this message]
2015-10-07 6:20 ` [Qemu-devel] [PATCH 6/8] migration: implementation of hook_ram_sync Denis V. Lunev
2015-10-07 9:44 ` Paolo Bonzini
2015-10-08 16:51 ` Denis V. Lunev
2015-10-07 9:44 ` Paolo Bonzini
2015-10-08 16:39 ` Denis V. Lunev
2015-10-07 14:03 ` Dr. David Alan Gilbert
2015-10-07 6:20 ` [Qemu-devel] [PATCH 7/8] migration: new migration test mode Denis V. Lunev
2015-10-07 13:56 ` Dr. David Alan Gilbert
2015-10-07 15:08 ` Eric Blake
2015-10-08 17:01 ` Denis V. Lunev
2015-10-08 17:05 ` Dr. David Alan Gilbert
2015-10-08 17:05 ` Denis V. Lunev
2015-10-08 18:57 ` Dr. David Alan Gilbert
2015-10-07 6:20 ` [Qemu-devel] [PATCH 8/8] migration: add output of gathered statistics Denis V. Lunev
2015-10-07 14:19 ` [Qemu-devel] [RFC 0/8] QEMUFile-way to gather VM's memory statistics Dr. David Alan Gilbert
2015-10-07 6:38 ` [Qemu-devel] Debugging Migration Denis V. Lunev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1444198846-5383-6-git-send-email-den@openvz.org \
--to=den@openvz.org \
--cc=annam@virtuozzo.com \
--cc=jsnow@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=redkoi@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).