From: Hailiang Zhang <zhang.zhanghailiang@huawei.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: aarcange@redhat.com, Benoit Canet <benoit.canet@gmail.com>,
quintela@redhat.com, hanweidong@huawei.com,
peter.huangpeng@huawei.com, qemu-devel@nongnu.org,
amit.shah@redhat.com
Subject: Re: [Qemu-devel] [RFC 03/13] migration: Allow -incoming to work on file: urls
Date: Tue, 12 Jan 2016 21:04:13 +0800 [thread overview]
Message-ID: <5694F9CD.5040807@huawei.com> (raw)
In-Reply-To: <20160111200219.GJ2477@work-vm>
On 2016/1/12 4:02, Dr. David Alan Gilbert wrote:
> * zhanghailiang (zhang.zhanghailiang@huawei.com) wrote:
>> Usage:
>> -incoming file:/path/to/vm_statefile
>>
>> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
>> Signed-off-by: Benoit Canet <benoit.canet@gmail.com>
>
> This could again be split out of this series; however I have some comments.
>
>> ---
>> - Rebase on qemu 2.5
>> - Use qemu_strtol instead of strtol
>> ---
>> include/migration/migration.h | 4 +++-
>> migration/fd.c | 28 +++++++++++++++++++++++++---
>> migration/migration.c | 4 +++-
>> 3 files changed, 31 insertions(+), 5 deletions(-)
>>
>> diff --git a/include/migration/migration.h b/include/migration/migration.h
>> index bf4f8e9..3f372a5 100644
>> --- a/include/migration/migration.h
>> +++ b/include/migration/migration.h
>> @@ -191,7 +191,9 @@ void unix_start_incoming_migration(const char *path, Error **errp);
>>
>> void unix_start_outgoing_migration(MigrationState *s, const char *path, Error **errp);
>>
>> -void fd_start_incoming_migration(const char *path, Error **errp);
>> +void fd_start_incoming_migration(const char *path, int fd, Error **errp);
>> +
>> +void file_start_incoming_migration(const char *filename, Error **errp);
>>
>> void fd_start_outgoing_migration(MigrationState *s, const char *fdname,
>> int outfd, Error **errp);
>> diff --git a/migration/fd.c b/migration/fd.c
>> index b62161f..ac38256 100644
>> --- a/migration/fd.c
>> +++ b/migration/fd.c
>> @@ -81,14 +81,24 @@ static void fd_accept_incoming_migration(void *opaque)
>> process_incoming_migration(f);
>> }
>>
>> -void fd_start_incoming_migration(const char *infd, Error **errp)
>> +void fd_start_incoming_migration(const char *infd, int fd, Error **errp)
>> {
>> - int fd;
>> QEMUFile *f;
>> + int err;
>> + long in_fd;
>>
>> DPRINTF("Attempting to start an incoming migration via fd\n");
>>
>> - fd = strtol(infd, NULL, 0);
>> + if (infd) {
>> + err = qemu_strtol(infd, NULL, 0, &in_fd);
>> + if (err < 0) {
>> + error_setg_errno(errp, -err, "Failed to convert string '%s'"
>> + " to number", infd);
>> + return;
>> + }
>> + fd = (int)in_fd;
>> + }
>> +
>> if (fd_is_socket(fd)) {
>> f = qemu_fopen_socket(fd, "rb");
>> } else {
>
> I think I'd prefer to see something like:
> void fd_start_incoming_migration_core(int fd, Error **errp)
>
> void fd_start_incoming_migration(const char *infd, Error **errp)
> {
> qemu_strtol
> fd_start_incoming_migration_core
> ...
> }
>
Hmm, good idea, it avoids changing the define of this function. I will fix it.
Thanks,
Hailiang
> (I've always done -incoming "exec:cat file" but this is neater)
>
> Dave
>
>> @@ -101,3 +111,15 @@ void fd_start_incoming_migration(const char *infd, Error **errp)
>>
>> qemu_set_fd_handler(fd, fd_accept_incoming_migration, NULL, f);
>> }
>> +
>> +void file_start_incoming_migration(const char *filename, Error **errp)
>> +{
>> + int fd;
>> +
>> + fd = qemu_open(filename, O_RDONLY);
>> + if (fd < 0) {
>> + error_setg_errno(errp, errno, "Failed to open file:%s", filename);
>> + return;
>> + }
>> + fd_start_incoming_migration(NULL, fd, NULL);
>> +}
>> diff --git a/migration/migration.c b/migration/migration.c
>> index 3ec3b85..e54910d 100644
>> --- a/migration/migration.c
>> +++ b/migration/migration.c
>> @@ -314,7 +314,9 @@ void qemu_start_incoming_migration(const char *uri, Error **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);
>> + fd_start_incoming_migration(p, -1, errp);
>> + } else if (strstart(uri, "file:", &p)) {
>> + file_start_incoming_migration(p, errp);
>> #endif
>> } else {
>> error_setg(errp, "unknown migration protocol: %s", uri);
>> --
>> 1.8.3.1
>>
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
> .
>
next prev parent reply other threads:[~2016-01-12 13:04 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-07 12:19 [Qemu-devel] [RFC 00/13] Live memory snapshot based on userfaultfd zhanghailiang
2016-01-07 12:19 ` [Qemu-devel] [RFC 01/13] postcopy/migration: Split fault related state into struct UserfaultState zhanghailiang
2016-01-07 12:19 ` [Qemu-devel] [RFC 02/13] migration: Allow the migrate command to work on file: urls zhanghailiang
2016-07-13 16:12 ` Dr. David Alan Gilbert
2016-07-14 5:27 ` Hailiang Zhang
2016-01-07 12:19 ` [Qemu-devel] [RFC 03/13] migration: Allow -incoming " zhanghailiang
2016-01-11 20:02 ` Dr. David Alan Gilbert
2016-01-12 13:04 ` Hailiang Zhang [this message]
2016-01-07 12:19 ` [Qemu-devel] [RFC 04/13] migration: Create a snapshot thread to realize saving memory snapshot zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 05/13] migration: implement initialization work for snapshot zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 06/13] QEMUSizedBuffer: Introduce two help functions for qsb zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 07/13] savevm: Split qemu_savevm_state_complete_precopy() into two helper functions zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 08/13] snapshot: Save VM's device state into snapshot file zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 09/13] migration/postcopy-ram: fix some helper functions to support userfaultfd write-protect zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 10/13] snapshot: Enable the write-protect notification capability for VM's RAM zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 11/13] snapshot/migration: Save VM's RAM into snapshot file zhanghailiang
2016-01-07 12:20 ` [Qemu-devel] [RFC 12/13] migration/ram: Fix some helper functions' parameter to use PageSearchStatus zhanghailiang
2016-01-11 17:55 ` Dr. David Alan Gilbert
2016-01-12 12:59 ` Hailiang Zhang
2016-01-07 12:20 ` [Qemu-devel] [RFC 13/13] snapshot: Remove page's write-protect and copy the content during setup stage zhanghailiang
2016-07-13 17:52 ` Dr. David Alan Gilbert
2016-07-14 8:02 ` Hailiang Zhang
2016-07-04 12:22 ` [Qemu-devel] [RFC 00/13] Live memory snapshot based on userfaultfd Baptiste Reynal
2016-07-05 1:49 ` Hailiang Zhang
2016-07-05 9:57 ` Baptiste Reynal
2016-07-05 10:27 ` Hailiang Zhang
2016-08-18 15:56 ` Andrea Arcangeli
2016-08-20 6:31 ` Hailiang Zhang
2017-02-27 15:37 ` Christian Pinto
2017-02-28 1:48 ` Hailiang Zhang
2017-02-28 8:30 ` Christian Pinto
2017-02-28 16:14 ` Andrea Arcangeli
2017-03-01 1:08 ` Hailiang Zhang
2017-03-09 11:34 ` [Qemu-devel] [RFC PATCH 0/4] ARM/ARM64 fixes for live " Christian Pinto
2017-03-09 11:34 ` [Qemu-devel] [RFC PATCH 1/4] migration/postcopy-ram: check pagefault flags in userfaultfd thread Christian Pinto
2017-03-09 11:34 ` [Qemu-devel] [RFC PATCH 2/4] migration/ram: Fix for ARM/ARM64 page size Christian Pinto
2017-03-09 11:34 ` [Qemu-devel] [RFC PATCH 3/4] migration: snapshot thread Christian Pinto
2017-03-09 11:34 ` [Qemu-devel] [RFC PATCH 4/4] migration/postcopy-ram: ram_set_pages_wp fix Christian Pinto
2017-03-09 17:46 ` [Qemu-devel] [RFC PATCH 0/4] ARM/ARM64 fixes for live memory snapshot based on userfaultfd Dr. David Alan Gilbert
2017-03-10 8:15 ` Christian Pinto
2016-09-06 3:39 ` [Qemu-devel] [RFC 00/13] Live " Hailiang Zhang
2016-09-18 2:14 ` Hailiang Zhang
2016-12-08 12:45 ` Hailiang Zhang
2016-07-05 14:59 ` Andrea Arcangeli
2016-07-13 18:02 ` Dr. David Alan Gilbert
2016-07-14 10:24 ` Hailiang Zhang
2016-07-14 11:43 ` Dr. David Alan Gilbert
2016-07-19 6:53 ` Hailiang Zhang
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=5694F9CD.5040807@huawei.com \
--to=zhang.zhanghailiang@huawei.com \
--cc=aarcange@redhat.com \
--cc=amit.shah@redhat.com \
--cc=benoit.canet@gmail.com \
--cc=dgilbert@redhat.com \
--cc=hanweidong@huawei.com \
--cc=peter.huangpeng@huawei.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.