Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/810531/?format=api
{ "id": 810531, "url": "http://patchwork.ozlabs.org/api/patches/810531/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170906115143.27451-7-quintela@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170906115143.27451-7-quintela@redhat.com>", "list_archive_url": null, "date": "2017-09-06T11:51:27", "name": "[v7,06/22] migration: Improve migration thread error handling", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "81f592bc2eaccad4375a981af1e2176365f080fe", "submitter": { "id": 2643, "url": "http://patchwork.ozlabs.org/api/people/2643/?format=api", "name": "Juan Quintela", "email": "quintela@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170906115143.27451-7-quintela@redhat.com/mbox/", "series": [ { "id": 1773, "url": "http://patchwork.ozlabs.org/api/series/1773/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1773", "date": "2017-09-06T11:51:21", "name": "Multifd", "version": 7, "mbox": "http://patchwork.ozlabs.org/series/1773/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/810531/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/810531/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)", "ext-mx07.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com", "ext-mx07.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=quintela@redhat.com" ], "Received": [ "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnMTV3vWyz9s8J\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 6 Sep 2017 21:55:10 +1000 (AEST)", "from localhost ([::1]:35584 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpYvE-0000vK-Ho\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 07:55:08 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:60183)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <quintela@redhat.com>) id 1dpYsG-0007Jc-Vv\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:52:06 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <quintela@redhat.com>) id 1dpYsF-0007xs-TU\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:52:05 -0400", "from mx1.redhat.com ([209.132.183.28]:41220)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <quintela@redhat.com>) id 1dpYsF-0007xI-Kg\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:52:03 -0400", "from smtp.corp.redhat.com\n\t(int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 9CB74C049D7F\n\tfor <qemu-devel@nongnu.org>; Wed, 6 Sep 2017 11:52:02 +0000 (UTC)", "from secure.mitica (ovpn-117-188.ams2.redhat.com [10.36.117.188])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 47BA35B818;\n\tWed, 6 Sep 2017 11:52:01 +0000 (UTC)" ], "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com 9CB74C049D7F", "From": "Juan Quintela <quintela@redhat.com>", "To": "qemu-devel@nongnu.org", "Date": "Wed, 6 Sep 2017 13:51:27 +0200", "Message-Id": "<20170906115143.27451-7-quintela@redhat.com>", "In-Reply-To": "<20170906115143.27451-1-quintela@redhat.com>", "References": "<20170906115143.27451-1-quintela@redhat.com>", "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.11", "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.31]);\n\tWed, 06 Sep 2017 11:52:02 +0000 (UTC)", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]", "X-Received-From": "209.132.183.28", "Subject": "[Qemu-devel] [PATCH v7 06/22] migration: Improve migration thread\n\terror handling", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.21", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "lvivier@redhat.com, dgilbert@redhat.com, peterx@redhat.com", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "We now report errors also when we finish migration, not only on info\nmigrate. We plan to use this error from several places, and we want\nthe first error to happen to win, so we add an mutex to order it.\n\nSigned-off-by: Juan Quintela <quintela@redhat.com>\n---\n migration/migration.c | 19 ++++++++++++++++---\n migration/migration.h | 7 ++++++-\n migration/ram.c | 2 +-\n migration/tls.c | 1 -\n 4 files changed, 23 insertions(+), 6 deletions(-)", "diff": "diff --git a/migration/migration.c b/migration/migration.c\nindex 3d57e5ee90..5e17168c1c 100644\n--- a/migration/migration.c\n+++ b/migration/migration.c\n@@ -1013,19 +1013,30 @@ static void migrate_fd_cleanup(void *opaque)\n MIGRATION_STATUS_CANCELLED);\n }\n \n+ if (s->error) {\n+ /* It is used on info migrate. We can't free it */\n+ error_report_err(error_copy(s->error));\n+ }\n notifier_list_notify(&migration_state_notifiers, s);\n block_cleanup_parameters(s);\n }\n \n+void migrate_set_error(MigrationState *s, const Error *error)\n+{\n+ qemu_mutex_lock(&s->error_mutex);\n+ if (!s->error) {\n+ s->error = error_copy(error);\n+ }\n+ qemu_mutex_unlock(&s->error_mutex);\n+}\n+\n void migrate_fd_error(MigrationState *s, const Error *error)\n {\n trace_migrate_fd_error(error_get_pretty(error));\n assert(s->to_dst_file == NULL);\n migrate_set_state(&s->state, MIGRATION_STATUS_SETUP,\n MIGRATION_STATUS_FAILED);\n- if (!s->error) {\n- s->error = error_copy(error);\n- }\n+ migrate_set_error(s, error);\n notifier_list_notify(&migration_state_notifiers, s);\n block_cleanup_parameters(s);\n }\n@@ -2244,6 +2255,7 @@ static void migration_instance_finalize(Object *obj)\n MigrationState *ms = MIGRATION_OBJ(obj);\n MigrationParameters *params = &ms->parameters;\n \n+ qemu_mutex_destroy(&ms->error_mutex);\n g_free(params->tls_hostname);\n g_free(params->tls_creds);\n }\n@@ -2256,6 +2268,7 @@ static void migration_instance_init(Object *obj)\n ms->state = MIGRATION_STATUS_NONE;\n ms->xbzrle_cache_size = DEFAULT_MIGRATE_CACHE_SIZE;\n ms->mbps = -1;\n+ qemu_mutex_init(&ms->error_mutex);\n \n params->tls_hostname = g_strdup(\"\");\n params->tls_creds = g_strdup(\"\");\ndiff --git a/migration/migration.h b/migration/migration.h\nindex 1881e4a754..9a81b8a70a 100644\n--- a/migration/migration.h\n+++ b/migration/migration.h\n@@ -129,8 +129,12 @@ struct MigrationState\n int64_t colo_checkpoint_time;\n QEMUTimer *colo_delay_timer;\n \n- /* The last error that occurred */\n+ /* The first error that has occurred.\n+ We used the mutex to be able to return the 1st error message */\n Error *error;\n+ /* mutex to protect errp */\n+ QemuMutex error_mutex;\n+\n /* Do we have to clean up -b/-i from old migrate parameters */\n /* This feature is deprecated and will be removed */\n bool must_remove_block_options;\n@@ -159,6 +163,7 @@ bool migration_has_all_channels(void);\n \n uint64_t migrate_max_downtime(void);\n \n+void migrate_set_error(MigrationState *s, const Error *error);\n void migrate_fd_error(MigrationState *s, const Error *error);\n \n void migrate_fd_connect(MigrationState *s);\ndiff --git a/migration/ram.c b/migration/ram.c\nindex e18b3e2d4f..e0179fc838 100644\n--- a/migration/ram.c\n+++ b/migration/ram.c\n@@ -1789,7 +1789,7 @@ int ram_discard_range(const char *rbname, uint64_t start, size_t length)\n RAMBlock *rb = qemu_ram_block_by_name(rbname);\n \n if (!rb) {\n- error_report(\"ram_discard_range: Failed to find block '%s'\", rbname);\n+ error_report(\"ram_discard_rang0e: Failed to find block '%s'\", rbname);\n goto err;\n }\n \ndiff --git a/migration/tls.c b/migration/tls.c\nindex 596e8790bd..026a008667 100644\n--- a/migration/tls.c\n+++ b/migration/tls.c\n@@ -119,7 +119,6 @@ static void migration_tls_outgoing_handshake(QIOTask *task,\n if (qio_task_propagate_error(task, &err)) {\n trace_migration_tls_outgoing_handshake_error(error_get_pretty(err));\n migrate_fd_error(s, err);\n- error_free(err);\n } else {\n trace_migration_tls_outgoing_handshake_complete();\n migration_channel_connect(s, ioc, NULL);\n", "prefixes": [ "v7", "06/22" ] }