From nobody Fri May 3 07:40:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=126.com Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547388686044902.3640447040557; Sun, 13 Jan 2019 06:11:26 -0800 (PST) Received: from localhost ([127.0.0.1]:43741 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigTr-00047b-9w for importer@patchew.org; Sun, 13 Jan 2019 09:11:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39995) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRj-0002tz-Kg for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gigRi-000300-Rc for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:03 -0500 Received: from m50-110.126.com ([123.125.50.110]:42735) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRi-0002vO-8o for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:02 -0500 Received: from localhost.localdomain (unknown [122.14.241.95]) by smtp4 (Coremail) with SMTP id jdKowABnTrN1RjtcH+piAA--.2722S3; Sun, 13 Jan 2019 22:08:55 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=Kz5NxOCzp7/OTsthmX pF+ZwhUkC92qWGhdhWtetvfvQ=; b=bWmqQ7AVRhYfHGW3/qeh4m6i4YqhVPxd91 nDPmRvrY9zNASkxFwsI7/wECgffjsP+AYcee/zEoHFGiBga4iW5DaGPk6lSH1gXM /TLmfBgXgG1/joeU1sIqrYrpq/mEMQZluI8Zx845XQW4YouXAs+/Ez7canW67ejN 2UQx3+h7M= From: Fei Li To: qemu-devel@nongnu.org, shirley17fei@gmail.com Date: Sun, 13 Jan 2019 22:08:45 +0800 Message-Id: <20190113140849.38339-2-lifei1214@126.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) In-Reply-To: <20190113140849.38339-1-lifei1214@126.com> References: <20190113140849.38339-1-lifei1214@126.com> X-CM-TRANSID: jdKowABnTrN1RjtcH+piAA--.2722S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7ZF1rKF1xtFWftw13ur1fXrb_yoW8WF4rpr WDW34vkFW5JrZ7Cr1DAw10kFy7KrZ7G3y7Wr4xKw109r4UWr1rXr4xtryFgFn5GrZYvay5 ZFWkZr1xZw4DAF7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jvYLkUUUUU= X-Originating-IP: [122.14.241.95] X-CM-SenderInfo: 5olivxarsrkqqrswhudrp/1tbi6xc7IVpD7gm3XwAAsw X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 123.125.50.110 Subject: [Qemu-devel] [PATCH for-4.0 1/5] Fix segmentation fault when qemu_signal_init fails X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fei Li , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Fei Li When qemu_signal_init() fails in qemu_init_main_loop(), we return without setting an error. Its callers crash then when they try to report the error with error_report_err(). To avoid such segmentation fault, add a new Error parameter to make the call trace to propagate the err to the final caller. Fixes: 2f78e491d7b46542158ce0b8132ee4e05bc0ade4 Cc: Paolo Bonzini Signed-off-by: Fei Li Reviewed-by: Fam Zheng Reviewed-by: Markus Armbruster --- util/main-loop.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/util/main-loop.c b/util/main-loop.c index affe0403c5..443cb4cfe8 100644 --- a/util/main-loop.c +++ b/util/main-loop.c @@ -71,7 +71,7 @@ static void sigfd_handler(void *opaque) } } =20 -static int qemu_signal_init(void) +static int qemu_signal_init(Error **errp) { int sigfd; sigset_t set; @@ -96,7 +96,7 @@ static int qemu_signal_init(void) sigdelset(&set, SIG_IPI); sigfd =3D qemu_signalfd(&set); if (sigfd =3D=3D -1) { - fprintf(stderr, "failed to create signalfd\n"); + error_setg_errno(errp, errno, "failed to create signalfd"); return -errno; } =20 @@ -109,7 +109,7 @@ static int qemu_signal_init(void) =20 #else /* _WIN32 */ =20 -static int qemu_signal_init(void) +static int qemu_signal_init(Error **errp) { return 0; } @@ -148,7 +148,7 @@ int qemu_init_main_loop(Error **errp) =20 init_clocks(qemu_timer_notify_cb); =20 - ret =3D qemu_signal_init(); + ret =3D qemu_signal_init(errp); if (ret) { return ret; } --=20 2.17.2 (Apple Git-113) From nobody Fri May 3 07:40:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=126.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547388847576798.0578052100082; Sun, 13 Jan 2019 06:14:07 -0800 (PST) Received: from localhost ([127.0.0.1]:44387 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigWc-0006Fs-Ga for importer@patchew.org; Sun, 13 Jan 2019 09:14:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRj-0002u1-LN for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gigRi-0002zc-D5 for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:03 -0500 Received: from m50-110.126.com ([123.125.50.110]:42739) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRh-0002vM-7P for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:02 -0500 Received: from localhost.localdomain (unknown [122.14.241.95]) by smtp4 (Coremail) with SMTP id jdKowABnTrN1RjtcH+piAA--.2722S4; Sun, 13 Jan 2019 22:08:55 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=J2H1ohG4d0tr6eVNdF WgVDD64QLBLVnl/Yf2o3kKM3o=; b=gmvLiReUelrASezXxkB0jLAGOqy06l5umm mODmzkGpZnu1YnDUKPRh9sTndpGKOyYQli84Sy9McIO5Pgw+IHLMLHhhyw5MUDkD IhlR7T28bnvX4A+k5p89SIajPoPO3+S6MpSbusNSfeb6mA/Rp18nNtYaBQltqKAa BG1DQFt/M= From: Fei Li To: qemu-devel@nongnu.org, shirley17fei@gmail.com Date: Sun, 13 Jan 2019 22:08:46 +0800 Message-Id: <20190113140849.38339-3-lifei1214@126.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) In-Reply-To: <20190113140849.38339-1-lifei1214@126.com> References: <20190113140849.38339-1-lifei1214@126.com> X-CM-TRANSID: jdKowABnTrN1RjtcH+piAA--.2722S4 X-Coremail-Antispam: 1Uf129KBjvJXoW3XF15KryfGFyDCFyktw43KFg_yoW7tFy3pF 4xXas7WayxWF13JasxArWxAr1rZ34rGw47GrZ0qw1Sv39xJrnIyw15K3WY93Z5Jr4jyw4Y vFn0qw17u3WDZa7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jtSdgUUUUU= X-Originating-IP: [122.14.241.95] X-CM-SenderInfo: 5olivxarsrkqqrswhudrp/1tbiaRc7IVpD7hFXEwAAsG X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 123.125.50.110 Subject: [Qemu-devel] [PATCH for-4.0 2/5] migration: fix the multifd code when receiving less channels X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fei Li , "Dr . David Alan Gilbert" , Peter Xu , Markus Armbruster Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Fei Li In our current code, when multifd is used during migration, if there is an error before the destination receives all new channels, the source keeps running, however the destination does not exit but keeps waiting until the source is killed deliberately. Fix this by dumping the specific error and let users decide whether to quit from the destination side when failing to receive packet via some channel. And update the comment for multifd_recv_new_channel(). Cc: Dr. David Alan Gilbert Cc: Peter Xu Cc: Markus Armbruster Signed-off-by: Fei Li Reviewed-by: Peter Xu --- migration/channel.c | 11 ++++++----- migration/migration.c | 9 +++++++-- migration/migration.h | 2 +- migration/ram.c | 17 ++++++++++++++--- migration/ram.h | 2 +- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/migration/channel.c b/migration/channel.c index 33e0e9b82f..20e4c8e2dc 100644 --- a/migration/channel.c +++ b/migration/channel.c @@ -30,6 +30,7 @@ void migration_channel_process_incoming(QIOChannel *ioc) { MigrationState *s =3D migrate_get_current(); + Error *local_err =3D NULL; =20 trace_migration_set_incoming_channel( ioc, object_get_typename(OBJECT(ioc))); @@ -38,13 +39,13 @@ void migration_channel_process_incoming(QIOChannel *ioc) *s->parameters.tls_creds && !object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_TLS)) { - Error *local_err =3D NULL; migration_tls_channel_process_incoming(s, ioc, &local_err); - if (local_err) { - error_report_err(local_err); - } } else { - migration_ioc_process_incoming(ioc); + migration_ioc_process_incoming(ioc, &local_err); + } + + if (local_err) { + error_report_err(local_err); } } =20 diff --git a/migration/migration.c b/migration/migration.c index ffc4d9e556..24cb4b9d0d 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -541,7 +541,7 @@ void migration_fd_process_incoming(QEMUFile *f) migration_incoming_process(); } =20 -void migration_ioc_process_incoming(QIOChannel *ioc) +void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp) { MigrationIncomingState *mis =3D migration_incoming_get_current(); bool start_migration; @@ -563,9 +563,14 @@ void migration_ioc_process_incoming(QIOChannel *ioc) */ start_migration =3D !migrate_use_multifd(); } else { + Error *local_err =3D NULL; /* Multiple connections */ assert(migrate_use_multifd()); - start_migration =3D multifd_recv_new_channel(ioc); + start_migration =3D multifd_recv_new_channel(ioc, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } } =20 if (start_migration) { diff --git a/migration/migration.h b/migration/migration.h index e413d4d8b6..02b7304610 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -229,7 +229,7 @@ struct MigrationState void migrate_set_state(int *state, int old_state, int new_state); =20 void migration_fd_process_incoming(QEMUFile *f); -void migration_ioc_process_incoming(QIOChannel *ioc); +void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp); void migration_incoming_process(void); =20 bool migration_has_all_channels(void); diff --git a/migration/ram.c b/migration/ram.c index 1849979fed..47c7ab2229 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1322,8 +1322,13 @@ bool multifd_recv_all_channels_created(void) return thread_count =3D=3D atomic_read(&multifd_recv_state->count); } =20 -/* Return true if multifd is ready for the migration, otherwise false */ -bool multifd_recv_new_channel(QIOChannel *ioc) +/* + * Try to receive all multifd channels to get ready for the migration. + * - Return true and do not set @errp when correctly receving all channels; + * - Return false and do not set @errp when correctly receiving the curren= t one; + * - Return false and set @errp when failing to receive the current channe= l. + */ +bool multifd_recv_new_channel(QIOChannel *ioc, Error **errp) { MultiFDRecvParams *p; Error *local_err =3D NULL; @@ -1332,6 +1337,10 @@ bool multifd_recv_new_channel(QIOChannel *ioc) id =3D multifd_recv_initial_packet(ioc, &local_err); if (id < 0) { multifd_recv_terminate_threads(local_err); + error_propagate_prepend(errp, local_err, + "failed to receive packet" + " via multifd channel %d: ", + atomic_read(&multifd_recv_state->count)); return false; } =20 @@ -1340,6 +1349,7 @@ bool multifd_recv_new_channel(QIOChannel *ioc) error_setg(&local_err, "multifd: received id '%d' already setup'", id); multifd_recv_terminate_threads(local_err); + error_propagate(errp, local_err); return false; } p->c =3D ioc; @@ -1351,7 +1361,8 @@ bool multifd_recv_new_channel(QIOChannel *ioc) qemu_thread_create(&p->thread, p->name, multifd_recv_thread, p, QEMU_THREAD_JOINABLE); atomic_inc(&multifd_recv_state->count); - return multifd_recv_state->count =3D=3D migrate_multifd_channels(); + return atomic_read(&multifd_recv_state->count) =3D=3D + migrate_multifd_channels(); } =20 /** diff --git a/migration/ram.h b/migration/ram.h index 83ff1bc11a..046d3074be 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -47,7 +47,7 @@ int multifd_save_cleanup(Error **errp); int multifd_load_setup(void); int multifd_load_cleanup(Error **errp); bool multifd_recv_all_channels_created(void); -bool multifd_recv_new_channel(QIOChannel *ioc); +bool multifd_recv_new_channel(QIOChannel *ioc, Error **errp); =20 uint64_t ram_pagesize_summary(void); int ram_save_queue_pages(const char *rbname, ram_addr_t start, ram_addr_t = len); --=20 2.17.2 (Apple Git-113) From nobody Fri May 3 07:40:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=126.com Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547388686084469.8391579787186; Sun, 13 Jan 2019 06:11:26 -0800 (PST) Received: from localhost ([127.0.0.1]:43752 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigTs-00048w-1n for importer@patchew.org; Sun, 13 Jan 2019 09:11:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39984) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRj-0002ty-AI for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gigRi-0002zP-By for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:03 -0500 Received: from m50-110.126.com ([123.125.50.110]:42741) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRh-0002vP-9U for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:02 -0500 Received: from localhost.localdomain (unknown [122.14.241.95]) by smtp4 (Coremail) with SMTP id jdKowABnTrN1RjtcH+piAA--.2722S5; Sun, 13 Jan 2019 22:08:55 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=mPCxj5pNF4IEFDsm3H zUABwusUVLoY8emOqfllXSX4Y=; b=NGorPrQY77AarYHDP4za1DUSMsUU3ufnx+ xob71xJ3Fbn7ZUhCC0+ZK6eeKw8TfoehHit26vzWPRztUJc7BhYDoE1VP5KWuHq7 HZJlBk2IaRInCvtMwKqAJEbGucW/sR+Ku2vbXXyr5L0aAWfXzoPhjAW6r9fj2+Fv aslkOO104= From: Fei Li To: qemu-devel@nongnu.org, shirley17fei@gmail.com Date: Sun, 13 Jan 2019 22:08:47 +0800 Message-Id: <20190113140849.38339-4-lifei1214@126.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) In-Reply-To: <20190113140849.38339-1-lifei1214@126.com> References: <20190113140849.38339-1-lifei1214@126.com> X-CM-TRANSID: jdKowABnTrN1RjtcH+piAA--.2722S5 X-Coremail-Antispam: 1Uf129KBjvJXoWxAryxKrWUXr4UJFW5WryfZwb_yoW5AF45pr WxW3ZF9ws5W3W8ta1xA39rAr1rZw45Ww13WrWkZa4IvrZ8JrnFyw1UKasa9FZ5JrWvyw4F vrZYqw1fXF1DCFDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j9SdgUUUUU= X-Originating-IP: [122.14.241.95] X-CM-SenderInfo: 5olivxarsrkqqrswhudrp/1tbiExc7IVpD4bXMGgAAsF X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 123.125.50.110 Subject: [Qemu-devel] [PATCH for-4.0 3/5] migration: multifd_save_cleanup() can't fail, simplify X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fei Li , "Dr . David Alan Gilbert" , Markus Armbruster Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Fei Li multifd_save_cleanup() takes an Error ** argument and returns an error code even though it can't actually fail. Its callers dutifully check for failure. Remove the useless argument and return value, and simplify the callers. Cc: Dr. David Alan Gilbert Cc: Markus Armbruster Signed-off-by: Fei Li Reviewed-by: Juan Quintela --- migration/migration.c | 5 +---- migration/ram.c | 11 ++++------- migration/ram.h | 2 +- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 24cb4b9d0d..5d322eb9d6 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1386,7 +1386,6 @@ static void migrate_fd_cleanup(void *opaque) qemu_savevm_state_cleanup(); =20 if (s->to_dst_file) { - Error *local_err =3D NULL; QEMUFile *tmp; =20 trace_migrate_fd_cleanup(); @@ -1397,9 +1396,7 @@ static void migrate_fd_cleanup(void *opaque) } qemu_mutex_lock_iothread(); =20 - if (multifd_save_cleanup(&local_err) !=3D 0) { - error_report_err(local_err); - } + multifd_save_cleanup(); qemu_mutex_lock(&s->qemu_file_lock); tmp =3D s->to_dst_file; s->to_dst_file =3D NULL; diff --git a/migration/ram.c b/migration/ram.c index 47c7ab2229..43c2b442af 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -917,13 +917,12 @@ static void multifd_send_terminate_threads(Error *err) } } =20 -int multifd_save_cleanup(Error **errp) +void multifd_save_cleanup(void) { int i; - int ret =3D 0; =20 if (!migrate_use_multifd()) { - return 0; + return; } multifd_send_terminate_threads(NULL); for (i =3D 0; i < migrate_multifd_channels(); i++) { @@ -953,7 +952,6 @@ int multifd_save_cleanup(Error **errp) multifd_send_state->pages =3D NULL; g_free(multifd_send_state); multifd_send_state =3D NULL; - return ret; } =20 static void multifd_send_sync_main(void) @@ -1071,9 +1069,8 @@ static void multifd_new_send_channel_async(QIOTask *t= ask, gpointer opaque) Error *local_err =3D NULL; =20 if (qio_task_propagate_error(task, &local_err)) { - if (multifd_save_cleanup(&local_err) !=3D 0) { - migrate_set_error(migrate_get_current(), local_err); - } + migrate_set_error(migrate_get_current(), local_err); + multifd_save_cleanup(); } else { p->c =3D QIO_CHANNEL(sioc); qio_channel_set_delay(p->c, false); diff --git a/migration/ram.h b/migration/ram.h index 046d3074be..936177b3e9 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -43,7 +43,7 @@ uint64_t ram_bytes_remaining(void); uint64_t ram_bytes_total(void); =20 int multifd_save_setup(void); -int multifd_save_cleanup(Error **errp); +void multifd_save_cleanup(void); int multifd_load_setup(void); int multifd_load_cleanup(Error **errp); bool multifd_recv_all_channels_created(void); --=20 2.17.2 (Apple Git-113) From nobody Fri May 3 07:40:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=126.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547388845136927.4176437416916; Sun, 13 Jan 2019 06:14:05 -0800 (PST) Received: from localhost ([127.0.0.1]:44366 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigWW-0006A9-VP for importer@patchew.org; Sun, 13 Jan 2019 09:14:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39997) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRj-0002u0-L6 for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gigRi-000307-UQ for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:03 -0500 Received: from m50-110.126.com ([123.125.50.110]:42738) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRi-0002vL-Bm for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:02 -0500 Received: from localhost.localdomain (unknown [122.14.241.95]) by smtp4 (Coremail) with SMTP id jdKowABnTrN1RjtcH+piAA--.2722S6; Sun, 13 Jan 2019 22:08:55 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=iO3bX/NA+OD62eTEiS kmBiT3ffZtzZ3tIc9QH9C5rYU=; b=EtcQXtolvdh73SmOP0NaQW6YrAfcsoCVjw ts5T1xNWUVzmblOhlDEH9Bd4y4ZK+5c3eRMMNaVnTtkSlgrSkgY9/qFQWHGFRPEX 7RUeFJsgInD/brEnEK9Xty7wtTc+mVP5mWguiMbz3UJZTP82zwgRkrRtPpvaRLDO Y8XQjdV4E= From: Fei Li To: qemu-devel@nongnu.org, shirley17fei@gmail.com Date: Sun, 13 Jan 2019 22:08:48 +0800 Message-Id: <20190113140849.38339-5-lifei1214@126.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) In-Reply-To: <20190113140849.38339-1-lifei1214@126.com> References: <20190113140849.38339-1-lifei1214@126.com> X-CM-TRANSID: jdKowABnTrN1RjtcH+piAA--.2722S6 X-Coremail-Antispam: 1Uf129KBjvJXoW7ArWxKr43Cr4UKF4xZr17Awb_yoW8GF1Upa yrGa4vgayIq34xJF42qa48ZryYvFn7Wr47XrWqvFyvv398G3WfZwnrtF1FqFs8Xrs2yF4Y qF1Fq34fXr1DArDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jP9NsUUUUU= X-Originating-IP: [122.14.241.95] X-CM-SenderInfo: 5olivxarsrkqqrswhudrp/1tbiFhc7IVpD8IcCrwAAsY X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 123.125.50.110 Subject: [Qemu-devel] [PATCH for-4.0 4/5] migration: add more error handling for postcopy_ram_enable_notify X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fei Li , "Dr . David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Fei Li Call postcopy_ram_incoming_cleanup() to do the cleanup when postcopy_ram_enable_notify fails. Besides, report the error message when qemu_ram_foreach_migratable_block() fails. Cc: Dr. David Alan Gilbert Signed-off-by: Fei Li Reviewed-by: Dr. David Alan Gilbert --- migration/postcopy-ram.c | 1 + migration/savevm.c | 1 + 2 files changed, 2 insertions(+) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index e5c02a32c5..fa09dba534 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -1117,6 +1117,7 @@ int postcopy_ram_enable_notify(MigrationIncomingState= *mis) =20 /* Mark so that we get notified of accesses to unwritten areas */ if (qemu_ram_foreach_migratable_block(ram_block_enable_notify, mis)) { + error_report("ram_block_enable_notify failed"); return -1; } =20 diff --git a/migration/savevm.c b/migration/savevm.c index 9e45fb4f3f..d784e8aa40 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1729,6 +1729,7 @@ static int loadvm_postcopy_handle_listen(MigrationInc= omingState *mis) */ if (migrate_postcopy_ram()) { if (postcopy_ram_enable_notify(mis)) { + postcopy_ram_incoming_cleanup(mis); return -1; } } --=20 2.17.2 (Apple Git-113) From nobody Fri May 3 07:40:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=126.com Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547388690009373.3557647206212; Sun, 13 Jan 2019 06:11:30 -0800 (PST) Received: from localhost ([127.0.0.1]:43771 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigTz-0004Ba-Ti for importer@patchew.org; Sun, 13 Jan 2019 09:11:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40024) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRk-0002uJ-Mc for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gigRj-00031A-Vl for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:04 -0500 Received: from m50-110.126.com ([123.125.50.110]:42736) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gigRj-0002vN-D5 for qemu-devel@nongnu.org; Sun, 13 Jan 2019 09:09:03 -0500 Received: from localhost.localdomain (unknown [122.14.241.95]) by smtp4 (Coremail) with SMTP id jdKowABnTrN1RjtcH+piAA--.2722S7; Sun, 13 Jan 2019 22:08:55 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=OfoeFZ3vl0gm+RMwHg rYS6AGK5vOmNAlVqpLbeEcNIE=; b=Ak6IaKMLFY8AKHWHlgPMoh1o62rBnUp/4X Y2qnpPcuY+/iUl61DIweoHLorcCurulolP9JVPXon+FHTXetgrPuXhkLFlBy7umH qQn8XLdZqvquKIpOQuFv0/+iwrBgt+Odo6c4DHeJvQ13ungSrVoT4zI7QY/mFfVN AsXhLoCMM= From: Fei Li To: qemu-devel@nongnu.org, shirley17fei@gmail.com Date: Sun, 13 Jan 2019 22:08:49 +0800 Message-Id: <20190113140849.38339-6-lifei1214@126.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) In-Reply-To: <20190113140849.38339-1-lifei1214@126.com> References: <20190113140849.38339-1-lifei1214@126.com> X-CM-TRANSID: jdKowABnTrN1RjtcH+piAA--.2722S7 X-Coremail-Antispam: 1Uf129KBjvJXoW7Zr47KF1UCrWrWw4xJF43ZFb_yoW8tFW7pF yxW3s7Wa97WFy2qa13A397Zrn5Zw18Wa9rZrZxJr1SkrsxJF1jyw1UKryxXFZ5tr95t3yF 9FyqgasrGF4DArJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jB0P-UUUUU= X-Originating-IP: [122.14.241.95] X-CM-SenderInfo: 5olivxarsrkqqrswhudrp/1tbi6xc7IVpD7gm3YgAAsN X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 123.125.50.110 Subject: [Qemu-devel] [PATCH for-4.0 5/5] migration: unify error handling for process_incoming_migration_co X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fei Li , "Dr . David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Fei Li In the current code, if process_incoming_migration_co() fails we do the same error handing: set the error state, close the source file, do the cleanup for multifd, and then exit(EXIT_FAILURE). To make the code clearer, add a "goto fail" to unify the error handling. Cc: Dr. David Alan Gilbert Signed-off-by: Fei Li Reviewed-by: Dr. David Alan Gilbert --- migration/migration.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 5d322eb9d6..ded151b1bf 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -438,15 +438,13 @@ static void process_incoming_migration_co(void *opaqu= e) /* Make sure all file formats flush their mutable metadata */ bdrv_invalidate_cache_all(&local_err); if (local_err) { - migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, - MIGRATION_STATUS_FAILED); error_report_err(local_err); - exit(EXIT_FAILURE); + goto fail; } =20 if (colo_init_ram_cache() < 0) { error_report("Init ram cache failed"); - exit(EXIT_FAILURE); + goto fail; } =20 qemu_thread_create(&mis->colo_incoming_thread, "COLO incoming", @@ -461,20 +459,22 @@ static void process_incoming_migration_co(void *opaqu= e) } =20 if (ret < 0) { - Error *local_err =3D NULL; - - migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, - MIGRATION_STATUS_FAILED); error_report("load of migration failed: %s", strerror(-ret)); - qemu_fclose(mis->from_src_file); - if (multifd_load_cleanup(&local_err) !=3D 0) { - error_report_err(local_err); - } - exit(EXIT_FAILURE); + goto fail; } mis->bh =3D qemu_bh_new(process_incoming_migration_bh, mis); qemu_bh_schedule(mis->bh); mis->migration_incoming_co =3D NULL; + return; +fail: + local_err =3D NULL; + migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, + MIGRATION_STATUS_FAILED); + qemu_fclose(mis->from_src_file); + if (multifd_load_cleanup(&local_err) !=3D 0) { + error_report_err(local_err); + } + exit(EXIT_FAILURE); } =20 static void migration_incoming_setup(QEMUFile *f) --=20 2.17.2 (Apple Git-113)