get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/985233/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 985233,
    "url": "http://patchwork.ozlabs.org/api/patches/985233/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20181017082702.5581-16-armbru@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": "<20181017082702.5581-16-armbru@redhat.com>",
    "list_archive_url": null,
    "date": "2018-10-17T08:26:39",
    "name": "[v4,15/38] numa: Fix QMP command set-numa-node error handling",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "274a4b80170ed5a795c89cb4acc5c7a515c25519",
    "submitter": {
        "id": 2645,
        "url": "http://patchwork.ozlabs.org/api/people/2645/?format=api",
        "name": "Markus Armbruster",
        "email": "armbru@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20181017082702.5581-16-armbru@redhat.com/mbox/",
    "series": [
        {
            "id": 71196,
            "url": "http://patchwork.ozlabs.org/api/series/71196/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=71196",
            "date": "2018-10-17T08:26:36",
            "name": "Replace some unwise uses of error_report() & friends",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/71196/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/985233/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/985233/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>)",
            "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=redhat.com"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 42Zm161xMNz9s47\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 17 Oct 2018 19:43:38 +1100 (AEDT)",
            "from localhost ([::1]:34581 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 1gChQV-0005Ju-R2\n\tfor incoming@patchwork.ozlabs.org; Wed, 17 Oct 2018 04:43:35 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:51111)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <armbru@redhat.com>) id 1gChAd-000866-HC\n\tfor qemu-devel@nongnu.org; Wed, 17 Oct 2018 04:27:12 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <armbru@redhat.com>) id 1gChAc-00015l-1F\n\tfor qemu-devel@nongnu.org; Wed, 17 Oct 2018 04:27:11 -0400",
            "from mx1.redhat.com ([209.132.183.28]:52528)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <armbru@redhat.com>) id 1gChAb-00011f-9I\n\tfor qemu-devel@nongnu.org; Wed, 17 Oct 2018 04:27:09 -0400",
            "from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\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 E359D30015DA\n\tfor <qemu-devel@nongnu.org>; Wed, 17 Oct 2018 08:27:07 +0000 (UTC)",
            "from blackfin.pond.sub.org (ovpn-116-50.ams2.redhat.com\n\t[10.36.116.50])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 8682080FEB;\n\tWed, 17 Oct 2018 08:27:07 +0000 (UTC)",
            "by blackfin.pond.sub.org (Postfix, from userid 1000)\n\tid 4B3E3113274F; Wed, 17 Oct 2018 10:27:02 +0200 (CEST)"
        ],
        "From": "Markus Armbruster <armbru@redhat.com>",
        "To": "qemu-devel@nongnu.org",
        "Date": "Wed, 17 Oct 2018 10:26:39 +0200",
        "Message-Id": "<20181017082702.5581-16-armbru@redhat.com>",
        "In-Reply-To": "<20181017082702.5581-1-armbru@redhat.com>",
        "References": "<20181017082702.5581-1-armbru@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.14",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.43]);\n\tWed, 17 Oct 2018 08:27:07 +0000 (UTC)",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]",
        "X-Received-From": "209.132.183.28",
        "Subject": "[Qemu-devel] [PATCH v4 15/38] numa: Fix QMP command set-numa-node\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": "Igor Mammedov <imammedo@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": "Calling error_report() in a function that takes an Error ** argument\nis suspicious.  parse_numa_node() does that, and then exit()s.  It\nalso passes &error_fatal to machine_set_cpu_numa_node().  Both wrong.\nAttempting to configure numa when the machine doesn't support it kills\nthe VM:\n\n    $ qemu-system-x86_64 -nodefaults -S -display none -M none -preconfig -qmp stdio\n    {\"QMP\": {\"version\": {\"qemu\": {\"micro\": 50, \"minor\": 0, \"major\": 3}, \"package\": \"v3.0.0-837-gc5e4e49258\"}, \"capabilities\": []}}\n    {\"execute\": \"qmp_capabilities\"}\n    {\"return\": {}}\n    {\"execute\": \"set-numa-node\", \"arguments\": {\"type\": \"node\"}}\n    NUMA is not supported by this machine-type\n    $ echo $?\n    1\n\nMessed up when commit 64c2a8f6d3f and 7c88e65d9e9 (v2.10.0) added\nincorrect error handling right next to correct examples.  Latent bug\nuntil commit f3be67812c2 (v3.0.0) made it accessible via QMP.  Fairly\nharmless in practice, because it's limited to RUN_STATE_PRECONFIG.\nThe fix is obvious: replace error_report(); exit() by error_setg();\nreturn.\n\nThis affects parse_numa_node()'s other caller\nnuma_complete_configuration(): since it ignores errors, the \"NUMA is\nnot supported by this machine-type\" is now ignored, too.  But that\nerror is as unexpected there as any other.  Change it to abort on\nerror instead.\n\nFixes: f3be67812c226162f86ce92634bd913714445420\nCc: Igor Mammedov <imammedo@redhat.com>\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Igor Mammedov <imammedo@redhat.com>\n---\n numa.c | 13 +++++++++----\n 1 file changed, 9 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/numa.c b/numa.c\nindex 81542d4ebb..1d7c49ad43 100644\n--- a/numa.c\n+++ b/numa.c\n@@ -60,6 +60,7 @@ NodeInfo numa_info[MAX_NODES];\n static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,\n                             Error **errp)\n {\n+    Error *err = NULL;\n     uint16_t nodenr;\n     uint16List *cpus = NULL;\n     MachineClass *mc = MACHINE_GET_CLASS(ms);\n@@ -82,8 +83,8 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,\n     }\n \n     if (!mc->cpu_index_to_instance_props || !mc->get_default_cpu_node_id) {\n-        error_report(\"NUMA is not supported by this machine-type\");\n-        exit(1);\n+        error_setg(errp, \"NUMA is not supported by this machine-type\");\n+        return;\n     }\n     for (cpus = node->cpus; cpus; cpus = cpus->next) {\n         CpuInstanceProperties props;\n@@ -97,7 +98,11 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,\n         props = mc->cpu_index_to_instance_props(ms, cpus->value);\n         props.node_id = nodenr;\n         props.has_node_id = true;\n-        machine_set_cpu_numa_node(ms, &props, &error_fatal);\n+        machine_set_cpu_numa_node(ms, &props, &err);\n+        if (err) {\n+            error_propagate(errp, err);\n+            return;\n+        }\n     }\n \n     if (node->has_mem && node->has_memdev) {\n@@ -367,7 +372,7 @@ void numa_complete_configuration(MachineState *ms)\n     if (ms->ram_slots > 0 && nb_numa_nodes == 0 &&\n         mc->auto_enable_numa_with_memhp) {\n             NumaNodeOptions node = { };\n-            parse_numa_node(ms, &node, NULL);\n+            parse_numa_node(ms, &node, &error_abort);\n     }\n \n     assert(max_numa_nodeid <= MAX_NODES);\n",
    "prefixes": [
        "v4",
        "15/38"
    ]
}