* [PATCH 0/2] migration: add vsock channel support
@ 2020-08-06 7:40 Longpeng(Mike)
2020-08-06 7:40 ` [PATCH 1/2] migration: unify the framework of socket-type channel Longpeng(Mike)
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Longpeng(Mike) @ 2020-08-06 7:40 UTC (permalink / raw)
To: quintela, dgilbert; +Cc: longpeng2, arei.gonglei, qemu-devel
Longpeng (Mike) (2):
migration: unify the framework of socket-type channel
migration: add vsock as data channel support
migration/migration.c | 20 +++++++-------
migration/socket.c | 72 +++++++++++----------------------------------------
migration/socket.h | 11 +++-----
3 files changed, 28 insertions(+), 75 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] migration: unify the framework of socket-type channel
2020-08-06 7:40 [PATCH 0/2] migration: add vsock channel support Longpeng(Mike)
@ 2020-08-06 7:40 ` Longpeng(Mike)
2020-08-12 9:43 ` Dr. David Alan Gilbert
2020-08-06 7:40 ` [PATCH 2/2] migration: add vsock as data channel support Longpeng(Mike)
2020-08-27 17:15 ` [PATCH 0/2] migration: add vsock " Dr. David Alan Gilbert
2 siblings, 1 reply; 7+ messages in thread
From: Longpeng(Mike) @ 2020-08-06 7:40 UTC (permalink / raw)
To: quintela, dgilbert; +Cc: longpeng2, arei.gonglei, qemu-devel
Currently, the only difference of tcp channel and unix channel in
migration/socket.c is the way to build SocketAddress, but socket_parse()
can handle these two types, so use it to instead of tcp_build_address()
and unix_build_address().
The socket-type channel can be further unified based on the up, this
would be helpful for us to add other socket-type channels.
Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
---
migration/migration.c | 18 ++++++-------
migration/socket.c | 72 +++++++++++----------------------------------------
migration/socket.h | 11 +++-----
3 files changed, 26 insertions(+), 75 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 8fe3633..3160b95 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -377,21 +377,20 @@ void migrate_add_address(SocketAddress *address)
void qemu_start_incoming_migration(const char *uri, Error **errp)
{
- const char *p;
+ const char *p = NULL;
qapi_event_send_migration(MIGRATION_STATUS_SETUP);
if (!strcmp(uri, "defer")) {
deferred_incoming_migration(errp);
- } else if (strstart(uri, "tcp:", &p)) {
- tcp_start_incoming_migration(p, errp);
+ } else if (strstart(uri, "tcp:", &p) ||
+ strstart(uri, "unix:", NULL)) {
+ socket_start_incoming_migration(p ? p : uri, errp);
#ifdef CONFIG_RDMA
} else if (strstart(uri, "rdma:", &p)) {
rdma_start_incoming_migration(p, errp);
#endif
} else if (strstart(uri, "exec:", &p)) {
exec_start_incoming_migration(p, errp);
- } else if (strstart(uri, "unix:", &p)) {
- unix_start_incoming_migration(p, errp);
} else if (strstart(uri, "fd:", &p)) {
fd_start_incoming_migration(p, errp);
} else {
@@ -2064,7 +2063,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
{
Error *local_err = NULL;
MigrationState *s = migrate_get_current();
- const char *p;
+ const char *p = NULL;
if (!migrate_prepare(s, has_blk && blk, has_inc && inc,
has_resume && resume, errp)) {
@@ -2072,16 +2071,15 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
return;
}
- if (strstart(uri, "tcp:", &p)) {
- tcp_start_outgoing_migration(s, p, &local_err);
+ if (strstart(uri, "tcp:", &p) ||
+ strstart(uri, "unix:", NULL)) {
+ socket_start_outgoing_migration(s, p ? p : uri, &local_err);
#ifdef CONFIG_RDMA
} else if (strstart(uri, "rdma:", &p)) {
rdma_start_outgoing_migration(s, p, &local_err);
#endif
} else if (strstart(uri, "exec:", &p)) {
exec_start_outgoing_migration(s, p, &local_err);
- } else if (strstart(uri, "unix:", &p)) {
- unix_start_outgoing_migration(s, p, &local_err);
} else if (strstart(uri, "fd:", &p)) {
fd_start_outgoing_migration(s, p, &local_err);
} else {
diff --git a/migration/socket.c b/migration/socket.c
index 97c9efd..6016642 100644
--- a/migration/socket.c
+++ b/migration/socket.c
@@ -50,34 +50,6 @@ int socket_send_channel_destroy(QIOChannel *send)
return 0;
}
-static SocketAddress *tcp_build_address(const char *host_port, Error **errp)
-{
- SocketAddress *saddr;
-
- saddr = g_new0(SocketAddress, 1);
- saddr->type = SOCKET_ADDRESS_TYPE_INET;
-
- if (inet_parse(&saddr->u.inet, host_port, errp)) {
- qapi_free_SocketAddress(saddr);
- return NULL;
- }
-
- return saddr;
-}
-
-
-static SocketAddress *unix_build_address(const char *path)
-{
- SocketAddress *saddr;
-
- saddr = g_new0(SocketAddress, 1);
- saddr->type = SOCKET_ADDRESS_TYPE_UNIX;
- saddr->u.q_unix.path = g_strdup(path);
-
- return saddr;
-}
-
-
struct SocketConnectData {
MigrationState *s;
char *hostname;
@@ -109,9 +81,10 @@ static void socket_outgoing_migration(QIOTask *task,
object_unref(OBJECT(sioc));
}
-static void socket_start_outgoing_migration(MigrationState *s,
- SocketAddress *saddr,
- Error **errp)
+static void
+socket_start_outgoing_migration_internal(MigrationState *s,
+ SocketAddress *saddr,
+ Error **errp)
{
QIOChannelSocket *sioc = qio_channel_socket_new();
struct SocketConnectData *data = g_new0(struct SocketConnectData, 1);
@@ -135,27 +108,18 @@ static void socket_start_outgoing_migration(MigrationState *s,
NULL);
}
-void tcp_start_outgoing_migration(MigrationState *s,
- const char *host_port,
- Error **errp)
+void socket_start_outgoing_migration(MigrationState *s,
+ const char *str,
+ Error **errp)
{
Error *err = NULL;
- SocketAddress *saddr = tcp_build_address(host_port, &err);
+ SocketAddress *saddr = socket_parse(str, &err);
if (!err) {
- socket_start_outgoing_migration(s, saddr, &err);
+ socket_start_outgoing_migration_internal(s, saddr, &err);
}
error_propagate(errp, err);
}
-void unix_start_outgoing_migration(MigrationState *s,
- const char *path,
- Error **errp)
-{
- SocketAddress *saddr = unix_build_address(path);
- socket_start_outgoing_migration(s, saddr, errp);
-}
-
-
static void socket_accept_incoming_migration(QIONetListener *listener,
QIOChannelSocket *cioc,
gpointer opaque)
@@ -173,8 +137,9 @@ static void socket_accept_incoming_migration(QIONetListener *listener,
}
-static void socket_start_incoming_migration(SocketAddress *saddr,
- Error **errp)
+static void
+socket_start_incoming_migration_internal(SocketAddress *saddr,
+ Error **errp)
{
QIONetListener *listener = qio_net_listener_new();
size_t i;
@@ -207,20 +172,13 @@ static void socket_start_incoming_migration(SocketAddress *saddr,
}
}
-void tcp_start_incoming_migration(const char *host_port, Error **errp)
+void socket_start_incoming_migration(const char *str, Error **errp)
{
Error *err = NULL;
- SocketAddress *saddr = tcp_build_address(host_port, &err);
+ SocketAddress *saddr = socket_parse(str, &err);
if (!err) {
- socket_start_incoming_migration(saddr, &err);
+ socket_start_incoming_migration_internal(saddr, &err);
}
qapi_free_SocketAddress(saddr);
error_propagate(errp, err);
}
-
-void unix_start_incoming_migration(const char *path, Error **errp)
-{
- SocketAddress *saddr = unix_build_address(path);
- socket_start_incoming_migration(saddr, errp);
- qapi_free_SocketAddress(saddr);
-}
diff --git a/migration/socket.h b/migration/socket.h
index 528c3b0..891dbcc 100644
--- a/migration/socket.h
+++ b/migration/socket.h
@@ -23,13 +23,8 @@
void socket_send_channel_create(QIOTaskFunc f, void *data);
int socket_send_channel_destroy(QIOChannel *send);
-void tcp_start_incoming_migration(const char *host_port, Error **errp);
+void socket_start_incoming_migration(const char *str, Error **errp);
-void tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
- Error **errp);
-
-void unix_start_incoming_migration(const char *path, Error **errp);
-
-void unix_start_outgoing_migration(MigrationState *s, const char *path,
- Error **errp);
+void socket_start_outgoing_migration(MigrationState *s, const char *str,
+ Error **errp);
#endif
--
1.8.3.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] migration: add vsock as data channel support
2020-08-06 7:40 [PATCH 0/2] migration: add vsock channel support Longpeng(Mike)
2020-08-06 7:40 ` [PATCH 1/2] migration: unify the framework of socket-type channel Longpeng(Mike)
@ 2020-08-06 7:40 ` Longpeng(Mike)
2020-08-12 9:52 ` Dr. David Alan Gilbert
2020-08-27 17:15 ` [PATCH 0/2] migration: add vsock " Dr. David Alan Gilbert
2 siblings, 1 reply; 7+ messages in thread
From: Longpeng(Mike) @ 2020-08-06 7:40 UTC (permalink / raw)
To: quintela, dgilbert; +Cc: longpeng2, arei.gonglei, qemu-devel
The vsock channel is more widely use in some new features, for example,
the Nitro/Enclave. It can also be used as the migration channel.
Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
---
migration/migration.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 3160b95..fcf7974 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -383,7 +383,8 @@ void qemu_start_incoming_migration(const char *uri, Error **errp)
if (!strcmp(uri, "defer")) {
deferred_incoming_migration(errp);
} else if (strstart(uri, "tcp:", &p) ||
- strstart(uri, "unix:", NULL)) {
+ strstart(uri, "unix:", NULL) ||
+ strstart(uri, "vsock:", NULL)) {
socket_start_incoming_migration(p ? p : uri, errp);
#ifdef CONFIG_RDMA
} else if (strstart(uri, "rdma:", &p)) {
@@ -2072,7 +2073,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
}
if (strstart(uri, "tcp:", &p) ||
- strstart(uri, "unix:", NULL)) {
+ strstart(uri, "unix:", NULL) ||
+ strstart(uri, "vsock:", NULL)) {
socket_start_outgoing_migration(s, p ? p : uri, &local_err);
#ifdef CONFIG_RDMA
} else if (strstart(uri, "rdma:", &p)) {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] migration: unify the framework of socket-type channel
2020-08-06 7:40 ` [PATCH 1/2] migration: unify the framework of socket-type channel Longpeng(Mike)
@ 2020-08-12 9:43 ` Dr. David Alan Gilbert
0 siblings, 0 replies; 7+ messages in thread
From: Dr. David Alan Gilbert @ 2020-08-12 9:43 UTC (permalink / raw)
To: Longpeng(Mike); +Cc: arei.gonglei, qemu-devel, quintela
* Longpeng(Mike) (longpeng2@huawei.com) wrote:
> Currently, the only difference of tcp channel and unix channel in
> migration/socket.c is the way to build SocketAddress, but socket_parse()
> can handle these two types, so use it to instead of tcp_build_address()
> and unix_build_address().
>
> The socket-type channel can be further unified based on the up, this
> would be helpful for us to add other socket-type channels.
>
> Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
Nice; this saves a chunk of code.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> migration/migration.c | 18 ++++++-------
> migration/socket.c | 72 +++++++++++----------------------------------------
> migration/socket.h | 11 +++-----
> 3 files changed, 26 insertions(+), 75 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 8fe3633..3160b95 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -377,21 +377,20 @@ void migrate_add_address(SocketAddress *address)
>
> void qemu_start_incoming_migration(const char *uri, Error **errp)
> {
> - const char *p;
> + const char *p = NULL;
>
> qapi_event_send_migration(MIGRATION_STATUS_SETUP);
> if (!strcmp(uri, "defer")) {
> deferred_incoming_migration(errp);
> - } else if (strstart(uri, "tcp:", &p)) {
> - tcp_start_incoming_migration(p, errp);
> + } else if (strstart(uri, "tcp:", &p) ||
> + strstart(uri, "unix:", NULL)) {
> + socket_start_incoming_migration(p ? p : uri, errp);
> #ifdef CONFIG_RDMA
> } else if (strstart(uri, "rdma:", &p)) {
> rdma_start_incoming_migration(p, errp);
> #endif
> } else if (strstart(uri, "exec:", &p)) {
> exec_start_incoming_migration(p, errp);
> - } else if (strstart(uri, "unix:", &p)) {
> - unix_start_incoming_migration(p, errp);
> } else if (strstart(uri, "fd:", &p)) {
> fd_start_incoming_migration(p, errp);
> } else {
> @@ -2064,7 +2063,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
> {
> Error *local_err = NULL;
> MigrationState *s = migrate_get_current();
> - const char *p;
> + const char *p = NULL;
>
> if (!migrate_prepare(s, has_blk && blk, has_inc && inc,
> has_resume && resume, errp)) {
> @@ -2072,16 +2071,15 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
> return;
> }
>
> - if (strstart(uri, "tcp:", &p)) {
> - tcp_start_outgoing_migration(s, p, &local_err);
> + if (strstart(uri, "tcp:", &p) ||
> + strstart(uri, "unix:", NULL)) {
> + socket_start_outgoing_migration(s, p ? p : uri, &local_err);
> #ifdef CONFIG_RDMA
> } else if (strstart(uri, "rdma:", &p)) {
> rdma_start_outgoing_migration(s, p, &local_err);
> #endif
> } else if (strstart(uri, "exec:", &p)) {
> exec_start_outgoing_migration(s, p, &local_err);
> - } else if (strstart(uri, "unix:", &p)) {
> - unix_start_outgoing_migration(s, p, &local_err);
> } else if (strstart(uri, "fd:", &p)) {
> fd_start_outgoing_migration(s, p, &local_err);
> } else {
> diff --git a/migration/socket.c b/migration/socket.c
> index 97c9efd..6016642 100644
> --- a/migration/socket.c
> +++ b/migration/socket.c
> @@ -50,34 +50,6 @@ int socket_send_channel_destroy(QIOChannel *send)
> return 0;
> }
>
> -static SocketAddress *tcp_build_address(const char *host_port, Error **errp)
> -{
> - SocketAddress *saddr;
> -
> - saddr = g_new0(SocketAddress, 1);
> - saddr->type = SOCKET_ADDRESS_TYPE_INET;
> -
> - if (inet_parse(&saddr->u.inet, host_port, errp)) {
> - qapi_free_SocketAddress(saddr);
> - return NULL;
> - }
> -
> - return saddr;
> -}
> -
> -
> -static SocketAddress *unix_build_address(const char *path)
> -{
> - SocketAddress *saddr;
> -
> - saddr = g_new0(SocketAddress, 1);
> - saddr->type = SOCKET_ADDRESS_TYPE_UNIX;
> - saddr->u.q_unix.path = g_strdup(path);
> -
> - return saddr;
> -}
> -
> -
> struct SocketConnectData {
> MigrationState *s;
> char *hostname;
> @@ -109,9 +81,10 @@ static void socket_outgoing_migration(QIOTask *task,
> object_unref(OBJECT(sioc));
> }
>
> -static void socket_start_outgoing_migration(MigrationState *s,
> - SocketAddress *saddr,
> - Error **errp)
> +static void
> +socket_start_outgoing_migration_internal(MigrationState *s,
> + SocketAddress *saddr,
> + Error **errp)
> {
> QIOChannelSocket *sioc = qio_channel_socket_new();
> struct SocketConnectData *data = g_new0(struct SocketConnectData, 1);
> @@ -135,27 +108,18 @@ static void socket_start_outgoing_migration(MigrationState *s,
> NULL);
> }
>
> -void tcp_start_outgoing_migration(MigrationState *s,
> - const char *host_port,
> - Error **errp)
> +void socket_start_outgoing_migration(MigrationState *s,
> + const char *str,
> + Error **errp)
> {
> Error *err = NULL;
> - SocketAddress *saddr = tcp_build_address(host_port, &err);
> + SocketAddress *saddr = socket_parse(str, &err);
> if (!err) {
> - socket_start_outgoing_migration(s, saddr, &err);
> + socket_start_outgoing_migration_internal(s, saddr, &err);
> }
> error_propagate(errp, err);
> }
>
> -void unix_start_outgoing_migration(MigrationState *s,
> - const char *path,
> - Error **errp)
> -{
> - SocketAddress *saddr = unix_build_address(path);
> - socket_start_outgoing_migration(s, saddr, errp);
> -}
> -
> -
> static void socket_accept_incoming_migration(QIONetListener *listener,
> QIOChannelSocket *cioc,
> gpointer opaque)
> @@ -173,8 +137,9 @@ static void socket_accept_incoming_migration(QIONetListener *listener,
> }
>
>
> -static void socket_start_incoming_migration(SocketAddress *saddr,
> - Error **errp)
> +static void
> +socket_start_incoming_migration_internal(SocketAddress *saddr,
> + Error **errp)
> {
> QIONetListener *listener = qio_net_listener_new();
> size_t i;
> @@ -207,20 +172,13 @@ static void socket_start_incoming_migration(SocketAddress *saddr,
> }
> }
>
> -void tcp_start_incoming_migration(const char *host_port, Error **errp)
> +void socket_start_incoming_migration(const char *str, Error **errp)
> {
> Error *err = NULL;
> - SocketAddress *saddr = tcp_build_address(host_port, &err);
> + SocketAddress *saddr = socket_parse(str, &err);
> if (!err) {
> - socket_start_incoming_migration(saddr, &err);
> + socket_start_incoming_migration_internal(saddr, &err);
> }
> qapi_free_SocketAddress(saddr);
> error_propagate(errp, err);
> }
> -
> -void unix_start_incoming_migration(const char *path, Error **errp)
> -{
> - SocketAddress *saddr = unix_build_address(path);
> - socket_start_incoming_migration(saddr, errp);
> - qapi_free_SocketAddress(saddr);
> -}
> diff --git a/migration/socket.h b/migration/socket.h
> index 528c3b0..891dbcc 100644
> --- a/migration/socket.h
> +++ b/migration/socket.h
> @@ -23,13 +23,8 @@
> void socket_send_channel_create(QIOTaskFunc f, void *data);
> int socket_send_channel_destroy(QIOChannel *send);
>
> -void tcp_start_incoming_migration(const char *host_port, Error **errp);
> +void socket_start_incoming_migration(const char *str, Error **errp);
>
> -void tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
> - Error **errp);
> -
> -void unix_start_incoming_migration(const char *path, Error **errp);
> -
> -void unix_start_outgoing_migration(MigrationState *s, const char *path,
> - Error **errp);
> +void socket_start_outgoing_migration(MigrationState *s, const char *str,
> + Error **errp);
> #endif
> --
> 1.8.3.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] migration: add vsock as data channel support
2020-08-06 7:40 ` [PATCH 2/2] migration: add vsock as data channel support Longpeng(Mike)
@ 2020-08-12 9:52 ` Dr. David Alan Gilbert
2020-08-14 0:31 ` Longpeng (Mike, Cloud Infrastructure Service Product Dept.)
0 siblings, 1 reply; 7+ messages in thread
From: Dr. David Alan Gilbert @ 2020-08-12 9:52 UTC (permalink / raw)
To: Longpeng(Mike); +Cc: arei.gonglei, qemu-devel, quintela
* Longpeng(Mike) (longpeng2@huawei.com) wrote:
> The vsock channel is more widely use in some new features, for example,
> the Nitro/Enclave. It can also be used as the migration channel.
>
> Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
OK; it might be worth adding some tests for this.
Can I ask what your use case is - is this migrating an L2 inside an L1
or what?
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> migration/migration.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 3160b95..fcf7974 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -383,7 +383,8 @@ void qemu_start_incoming_migration(const char *uri, Error **errp)
> if (!strcmp(uri, "defer")) {
> deferred_incoming_migration(errp);
> } else if (strstart(uri, "tcp:", &p) ||
> - strstart(uri, "unix:", NULL)) {
> + strstart(uri, "unix:", NULL) ||
> + strstart(uri, "vsock:", NULL)) {
> socket_start_incoming_migration(p ? p : uri, errp);
> #ifdef CONFIG_RDMA
> } else if (strstart(uri, "rdma:", &p)) {
> @@ -2072,7 +2073,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
> }
>
> if (strstart(uri, "tcp:", &p) ||
> - strstart(uri, "unix:", NULL)) {
> + strstart(uri, "unix:", NULL) ||
> + strstart(uri, "vsock:", NULL)) {
> socket_start_outgoing_migration(s, p ? p : uri, &local_err);
> #ifdef CONFIG_RDMA
> } else if (strstart(uri, "rdma:", &p)) {
> --
> 1.8.3.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] migration: add vsock as data channel support
2020-08-12 9:52 ` Dr. David Alan Gilbert
@ 2020-08-14 0:31 ` Longpeng (Mike, Cloud Infrastructure Service Product Dept.)
0 siblings, 0 replies; 7+ messages in thread
From: Longpeng (Mike, Cloud Infrastructure Service Product Dept.) @ 2020-08-14 0:31 UTC (permalink / raw)
To: Dr. David Alan Gilbert; +Cc: arei.gonglei, qemu-devel, quintela
在 2020/8/12 17:52, Dr. David Alan Gilbert 写道:
> * Longpeng(Mike) (longpeng2@huawei.com) wrote:
>> The vsock channel is more widely use in some new features, for example,
>> the Nitro/Enclave. It can also be used as the migration channel.
>>
>> Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
>
> OK; it might be worth adding some tests for this.
>
OK, I'll try when I'm free.
> Can I ask what your use case is - is this migrating an L2 inside an L1
> or what?
>
Yes, L2 migrationg is a potential use case for this. However, our use
case is still focusing on the L1 migration.
There is no network stack in our platform ( [1] ), so we use the vsock
channel to communicate between the QEMU (on x86/ARM) and an Agent (on a
PCIe card), the source Agent will transport the data to the destination.
Links:
[1]
https://kvmforum2019.sched.com/event/Tmzh/zero-next-generation-virtualization-platform-for-huawei-cloud-jinsong-liu-zhichao-huang-huawei
>
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
>
Thanks.
>> ---
>> migration/migration.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/migration/migration.c b/migration/migration.c
>> index 3160b95..fcf7974 100644
>> --- a/migration/migration.c
>> +++ b/migration/migration.c
>> @@ -383,7 +383,8 @@ void qemu_start_incoming_migration(const char *uri, Error **errp)
>> if (!strcmp(uri, "defer")) {
>> deferred_incoming_migration(errp);
>> } else if (strstart(uri, "tcp:", &p) ||
>> - strstart(uri, "unix:", NULL)) {
>> + strstart(uri, "unix:", NULL) ||
>> + strstart(uri, "vsock:", NULL)) {
>> socket_start_incoming_migration(p ? p : uri, errp);
>> #ifdef CONFIG_RDMA
>> } else if (strstart(uri, "rdma:", &p)) {
>> @@ -2072,7 +2073,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
>> }
>>
>> if (strstart(uri, "tcp:", &p) ||
>> - strstart(uri, "unix:", NULL)) {
>> + strstart(uri, "unix:", NULL) ||
>> + strstart(uri, "vsock:", NULL)) {
>> socket_start_outgoing_migration(s, p ? p : uri, &local_err);
>> #ifdef CONFIG_RDMA
>> } else if (strstart(uri, "rdma:", &p)) {
>> --
>> 1.8.3.1
>>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] migration: add vsock channel support
2020-08-06 7:40 [PATCH 0/2] migration: add vsock channel support Longpeng(Mike)
2020-08-06 7:40 ` [PATCH 1/2] migration: unify the framework of socket-type channel Longpeng(Mike)
2020-08-06 7:40 ` [PATCH 2/2] migration: add vsock as data channel support Longpeng(Mike)
@ 2020-08-27 17:15 ` Dr. David Alan Gilbert
2 siblings, 0 replies; 7+ messages in thread
From: Dr. David Alan Gilbert @ 2020-08-27 17:15 UTC (permalink / raw)
To: Longpeng(Mike); +Cc: arei.gonglei, qemu-devel, quintela
* Longpeng(Mike) (longpeng2@huawei.com) wrote:
Queued
> Longpeng (Mike) (2):
> migration: unify the framework of socket-type channel
> migration: add vsock as data channel support
>
> migration/migration.c | 20 +++++++-------
> migration/socket.c | 72 +++++++++++----------------------------------------
> migration/socket.h | 11 +++-----
> 3 files changed, 28 insertions(+), 75 deletions(-)
>
> --
> 1.8.3.1
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-08-27 17:16 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-06 7:40 [PATCH 0/2] migration: add vsock channel support Longpeng(Mike)
2020-08-06 7:40 ` [PATCH 1/2] migration: unify the framework of socket-type channel Longpeng(Mike)
2020-08-12 9:43 ` Dr. David Alan Gilbert
2020-08-06 7:40 ` [PATCH 2/2] migration: add vsock as data channel support Longpeng(Mike)
2020-08-12 9:52 ` Dr. David Alan Gilbert
2020-08-14 0:31 ` Longpeng (Mike, Cloud Infrastructure Service Product Dept.)
2020-08-27 17:15 ` [PATCH 0/2] migration: add vsock " Dr. David Alan Gilbert
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).