get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 43831,
    "url": "http://patches.dpdk.org/api/patches/43831/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180823165157.30001-10-maxime.coquelin@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20180823165157.30001-10-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180823165157.30001-10-maxime.coquelin@redhat.com",
    "date": "2018-08-23T16:51:56",
    "name": "[RFC,09/10] vhost: add support to postcopy's end request",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "7d5547f20586cc620e3b7361f49040b3fa0204b3",
    "submitter": {
        "id": 512,
        "url": "http://patches.dpdk.org/api/people/512/?format=api",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patches.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180823165157.30001-10-maxime.coquelin@redhat.com/mbox/",
    "series": [
        {
            "id": 1039,
            "url": "http://patches.dpdk.org/api/series/1039/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1039",
            "date": "2018-08-23T16:51:47",
            "name": "vhost: add postcopy live-migration support",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/1039/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/43831/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/43831/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A926F58FE;\n\tThu, 23 Aug 2018 18:52:29 +0200 (CEST)",
            "from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73])\n\tby dpdk.org (Postfix) with ESMTP id 056B84D27\n\tfor <dev@dpdk.org>; Thu, 23 Aug 2018 18:52:27 +0200 (CEST)",
            "from smtp.corp.redhat.com\n\t(int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6])\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 A28FB7A7EA;\n\tThu, 23 Aug 2018 16:52:26 +0000 (UTC)",
            "from localhost.localdomain (ovpn-112-46.ams2.redhat.com\n\t[10.36.112.46])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 33C8D2166BA1;\n\tThu, 23 Aug 2018 16:52:25 +0000 (UTC)"
        ],
        "From": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "To": "dev@dpdk.org, tiwei.bie@intel.com, zhihong.wang@intel.com,\n\tjfreimann@redhat.com",
        "Cc": "dgilbert@redhat.com,\n\tMaxime Coquelin <maxime.coquelin@redhat.com>",
        "Date": "Thu, 23 Aug 2018 18:51:56 +0200",
        "Message-Id": "<20180823165157.30001-10-maxime.coquelin@redhat.com>",
        "In-Reply-To": "<20180823165157.30001-1-maxime.coquelin@redhat.com>",
        "References": "<20180823165157.30001-1-maxime.coquelin@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.78 on 10.11.54.6",
        "X-Greylist": [
            "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.11.55.2]); Thu, 23 Aug 2018 16:52:26 +0000 (UTC)",
            "inspected by milter-greylist-4.5.16 (mx1.redhat.com\n\t[10.11.55.2]); \n\tThu, 23 Aug 2018 16:52:26 +0000 (UTC) for IP:'10.11.54.6'\n\tDOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com'\n\tHELO:'smtp.corp.redhat.com' FROM:'maxime.coquelin@redhat.com' RCPT:''"
        ],
        "Subject": "[dpdk-dev] [RFC 09/10] vhost: add support to postcopy's end request",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "The master sends this message before stopping handling\nuserfaults, so that the backend closes the userfaultfd.\n\nThe master waits for the slave to acknowledge the request\nwith an empty 64bits payload for synchronization purpose.\n\nSigned-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>\nSigned-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n lib/librte_vhost/vhost_user.c | 21 +++++++++++++++++++++\n 1 file changed, 21 insertions(+)",
    "diff": "diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c\nindex 29e3e2a07..54692775c 100644\n--- a/lib/librte_vhost/vhost_user.c\n+++ b/lib/librte_vhost/vhost_user.c\n@@ -75,6 +75,7 @@ static const char *vhost_message_str[VHOST_USER_MAX] = {\n \t[VHOST_USER_CRYPTO_CLOSE_SESS] = \"VHOST_USER_CRYPTO_CLOSE_SESS\",\n \t[VHOST_USER_POSTCOPY_ADVISE]  = \"VHOST_USER_POSTCOPY_ADVISE\",\n \t[VHOST_USER_POSTCOPY_LISTEN]  = \"VHOST_USER_POSTCOPY_LISTEN\",\n+\t[VHOST_USER_POSTCOPY_END]  = \"VHOST_USER_POSTCOPY_END\",\n };\n \n static int\n@@ -1512,6 +1513,18 @@ vhost_user_set_postcopy_listen(struct virtio_net *dev)\n \treturn 0;\n }\n \n+static int\n+vhost_user_postcopy_end(struct virtio_net *dev)\n+{\n+\tdev->postcopy_listening = 0;\n+\tif (dev->postcopy_ufd > 0) {\n+\t\tclose(dev->postcopy_ufd);\n+\t\tdev->postcopy_ufd = -1;\n+\t}\n+\n+\treturn 0;\n+}\n+\n /* return bytes# of read on success or negative val on failure. */\n static int\n read_vhost_message(int sockfd, struct VhostUserMsg *msg)\n@@ -1864,6 +1877,14 @@ vhost_user_msg_handler(int vid, int fd)\n \t\tret = vhost_user_set_postcopy_listen(dev);\n \t\tbreak;\n \n+\tcase VHOST_USER_POSTCOPY_END:\n+\t\tvhost_user_postcopy_end(dev);\n+\t\tmsg.payload.u64 = 0;\n+\t\tmsg.size = sizeof(msg.payload.u64);\n+\t\tmsg.fd_num = 0;\n+\t\tsend_vhost_reply(fd, &msg);\n+\t\tbreak;\n+\n \tdefault:\n \t\tret = -1;\n \t\tbreak;\n",
    "prefixes": [
        "RFC",
        "09/10"
    ]
}