get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 44911,
    "url": "https://patches.dpdk.org/api/patches/44911/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20180919125757.17938-3-bluca@debian.org/",
    "project": {
        "id": 1,
        "url": "https://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": "<20180919125757.17938-3-bluca@debian.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180919125757.17938-3-bluca@debian.org",
    "date": "2018-09-19T12:57:57",
    "name": "[v2,3/3] eal/linux: handle uio read failure in interrupt handler",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "3ff36dbfa13222a6dd2259db1bb80e581dc026ff",
    "submitter": {
        "id": 823,
        "url": "https://patches.dpdk.org/api/people/823/?format=api",
        "name": "Luca Boccassi",
        "email": "bluca@debian.org"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20180919125757.17938-3-bluca@debian.org/mbox/",
    "series": [
        {
            "id": 1387,
            "url": "https://patches.dpdk.org/api/series/1387/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=1387",
            "date": "2018-09-19T12:57:55",
            "name": "[v2,1/3] net/virtio: register/unregister intr handler on start/stop",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/1387/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/44911/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/44911/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 6031C4C96;\n\tWed, 19 Sep 2018 14:58:18 +0200 (CEST)",
            "from mail-wr1-f45.google.com (mail-wr1-f45.google.com\n\t[209.85.221.45]) by dpdk.org (Postfix) with ESMTP id 0F4EA4C90\n\tfor <dev@dpdk.org>; Wed, 19 Sep 2018 14:58:17 +0200 (CEST)",
            "by mail-wr1-f45.google.com with SMTP id y8-v6so2049622wrh.7\n\tfor <dev@dpdk.org>; Wed, 19 Sep 2018 05:58:17 -0700 (PDT)",
            "from localhost ([2001:1be0:110d:fcfe:489f:80a9:5d59:c6bd])\n\tby smtp.gmail.com with ESMTPSA id\n\tg17-v6sm3333006wmh.19.2018.09.19.05.58.15\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tWed, 19 Sep 2018 05:58:15 -0700 (PDT)"
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=OoN1luTMKuIv4XtXNZbAo4G+yixREYqmXo693o6dr9w=;\n\tb=VHOwXmdeEIQalt/ptA9tolcSE9sXB1xzhgFlGOLfzL9ZQMyhE7oM2Knb6+czOhhpZ8\n\t+S3aN2G9voMgZFXgj1W76i5/Uv+D9Coete2zUr7TmDpbqu0ZFTVKgxvnIhbCSxYkJnKu\n\tw7/Eec2wz5l5c/d4KYe3KrV50zDQI9Br4KSI/JXSYaJCdfeOIkCMJJSmvjnc8FX2WpY6\n\tHHmNSlwcE7Scyci+vE440QKx9hDStx4vEorUhO1VuMLvXFkcpC7rYn9gl6QUHC6DWD2J\n\tTNNX7v7Z2vgPyJ2bZQf5oWANsN0fuQ/FqwcQYew4CKuWJUq/dLKrNejqpr/Y91ZFJnMs\n\tWwWw==",
        "X-Gm-Message-State": "APzg51D+LP+gsKauqtYuGVkna/Qp6796WC5mqSsRVkk+vZqiWWovOLqP\n\ty4cpzoCXye0TopC6Awrk5/ymmtS21QI=",
        "X-Google-Smtp-Source": "ANB0VdaRv54f7pdgFOCYz1feR2nEWlZpbg7oBrt4fVJ4QHP+8CmbY9vK29df+pc7B0bgQsi+x+5RvA==",
        "X-Received": "by 2002:a05:6000:10d0:: with SMTP id\n\tb16mr28803961wrx.226.1537361896373; \n\tWed, 19 Sep 2018 05:58:16 -0700 (PDT)",
        "From": "Luca Boccassi <bluca@debian.org>",
        "To": "dev@dpdk.org",
        "Cc": "maxime.coquelin@redhat.com, tiwei.bie@intel.com, yongwang@vmware.com,\n\t3chas3@gmail.com, bruce.richardson@intel.com, jianfeng.tan@intel.com, \n\tanatoly.burakov@intel.com, llouis@vmware.com,\n\tbrussell@vyatta.att-mail.com",
        "Date": "Wed, 19 Sep 2018 13:57:57 +0100",
        "Message-Id": "<20180919125757.17938-3-bluca@debian.org>",
        "X-Mailer": "git-send-email 2.18.0",
        "In-Reply-To": "<20180919125757.17938-1-bluca@debian.org>",
        "References": "<20180816135032.28283-1-bluca@debian.org>\n\t<20180919125757.17938-1-bluca@debian.org>",
        "Subject": "[dpdk-dev] [PATCH v2 3/3] eal/linux: handle uio read failure in\n\tinterrupt handler",
        "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": "If a device is unplugged while an interrupt is pending, the\nread call to the uio device to remove it from the poll wait list\ncan fail resulting in it being continually polled forever. This\nchange checks for the read failing and if so, unregisters the device\nas an interrupt source and causes the wait list to be rebuilt.\n\nThis race has been reported and observed in production.\n\nFixes: 0a45657a6794 (\"pci: rework interrupt handling\")\nCc: stable@dpdk.org\n\nSigned-off-by: Brian Russell <brussell@brocade.com>\nSigned-off-by: Luca Boccassi <bluca@debian.org>\n---\n lib/librte_eal/linuxapp/eal/eal_interrupts.c | 19 ++++++++++++++++++-\n 1 file changed, 18 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c\nindex 4076c6d6ca..34584db883 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c\n@@ -627,7 +627,7 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)\n \tbool call = false;\n \tint n, bytes_read;\n \tstruct rte_intr_source *src;\n-\tstruct rte_intr_callback *cb;\n+\tstruct rte_intr_callback *cb, *next;\n \tunion rte_intr_read_buffer buf;\n \tstruct rte_intr_callback active_cb;\n \n@@ -701,6 +701,23 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)\n \t\t\t\t\t\"descriptor %d: %s\\n\",\n \t\t\t\t\tevents[n].data.fd,\n \t\t\t\t\tstrerror(errno));\n+\t\t\t\t/*\n+\t\t\t\t * The device is unplugged or buggy, remove\n+\t\t\t\t * it as an interrupt source and return to\n+\t\t\t\t * force the wait list to be rebuilt.\n+\t\t\t\t */\n+\t\t\t\trte_spinlock_lock(&intr_lock);\n+\t\t\t\tTAILQ_REMOVE(&intr_sources, src, next);\n+\t\t\t\trte_spinlock_unlock(&intr_lock);\n+\n+\t\t\t\tfor (cb = TAILQ_FIRST(&src->callbacks); cb;\n+\t\t\t\t\t\t\tcb = next) {\n+\t\t\t\t\tnext = TAILQ_NEXT(cb, next);\n+\t\t\t\t\tTAILQ_REMOVE(&src->callbacks, cb, next);\n+\t\t\t\t\tfree(cb);\n+\t\t\t\t}\n+\t\t\t\tfree(src);\n+\t\t\t\treturn -1;\n \t\t\t} else if (bytes_read == 0)\n \t\t\t\tRTE_LOG(ERR, EAL, \"Read nothing from file \"\n \t\t\t\t\t\"descriptor %d\\n\", events[n].data.fd);\n",
    "prefixes": [
        "v2",
        "3/3"
    ]
}