get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 43739,
    "url": "http://patches.dpdk.org/api/patches/43739/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180816135032.28283-4-bluca@debian.org/",
    "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": "<20180816135032.28283-4-bluca@debian.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180816135032.28283-4-bluca@debian.org",
    "date": "2018-08-16T13:50:32",
    "name": "[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": "http://patches.dpdk.org/api/people/823/?format=api",
        "name": "Luca Boccassi",
        "email": "bluca@debian.org"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180816135032.28283-4-bluca@debian.org/mbox/",
    "series": [
        {
            "id": 999,
            "url": "http://patches.dpdk.org/api/series/999/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=999",
            "date": "2018-08-16T13:50:29",
            "name": "Fix hot plug/unplug of virtual devices",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/999/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/43739/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/43739/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 E6AD14F91;\n\tThu, 16 Aug 2018 15:50:57 +0200 (CEST)",
            "from mail-wr1-f65.google.com (mail-wr1-f65.google.com\n\t[209.85.221.65]) by dpdk.org (Postfix) with ESMTP id C02404CA1;\n\tThu, 16 Aug 2018 15:50:54 +0200 (CEST)",
            "by mail-wr1-f65.google.com with SMTP id u12-v6so4239091wrr.4;\n\tThu, 16 Aug 2018 06:50:54 -0700 (PDT)",
            "from localhost ([2001:1be0:110d:fcfe:41aa:5bfa:6cf3:7531])\n\tby smtp.gmail.com with ESMTPSA id\n\tn8-v6sm18450369wrt.56.2018.08.16.06.50.52\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tThu, 16 Aug 2018 06:50:53 -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=mMg1IbkSEMRj16T9JI6psVrrlAyayrcP5pgO8MlKeuakImBzcW7UZwQWkKRVAelvNl\n\tbJ7evH/LAfiGCSSMMF5ezQgTMPvHgm5BSePSRZyxuIBuq8mPUNr1Aq+a8NylSp2ff3ec\n\ty8A78HKc9nUACHT8/eY21nqB0Z8+3nuqPScQv+pfv6eAYpv2+AdhdtU6IzmFn1McEL2W\n\tMwlHXXO/5EYtPD8qib5O8l6g9PGtUUnb21T0d37H3IjkN/dLO7FnmFhLVz6bGG8eQr+N\n\tty/o7xeNf3myG8T8IlnovRjaq7KSpdyRJFYk6kLpAh2pqQ69t7JQ7Alio4HVjAPIJFeY\n\tiy1g==",
        "X-Gm-Message-State": "AOUpUlH4OqZVo/MS0GZOe39brWcJFgpdmkJ/CoL+jZivl1AVcMysWYDp\n\tIg5tQVqdpdBpSBRTBxpYPDLIOUssysg=",
        "X-Google-Smtp-Source": "AA+uWPwsfDbBj+42Ugf61gyC8OWfQZ5ePRtcg1vR01OZocHA3neXba5sZxMCUryhMybBUw3BilyMEQ==",
        "X-Received": "by 2002:adf:c890:: with SMTP id\n\tk16-v6mr697787wrh.6.1534427454171; \n\tThu, 16 Aug 2018 06:50:54 -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, Luca Boccassi <bluca@debian.org>,\n\tstable@dpdk.org, Brian Russell <brussell@brocade.com>",
        "Date": "Thu, 16 Aug 2018 14:50:32 +0100",
        "Message-Id": "<20180816135032.28283-4-bluca@debian.org>",
        "X-Mailer": "git-send-email 2.18.0",
        "In-Reply-To": "<20180816135032.28283-1-bluca@debian.org>",
        "References": "<20180816135032.28283-1-bluca@debian.org>",
        "Subject": "[dpdk-dev] [PATCH 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": [
        "3/3"
    ]
}