get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 42750,
    "url": "http://patches.dpdk.org/api/patches/42750/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1531242001-381104-3-git-send-email-yipeng1.wang@intel.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": "<1531242001-381104-3-git-send-email-yipeng1.wang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1531242001-381104-3-git-send-email-yipeng1.wang@intel.com",
    "date": "2018-07-10T16:59:55",
    "name": "[v5,2/8] hash: fix a multi-writer race condition",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a20ea59dd5a6a58bee23d6201404a533c0543220",
    "submitter": {
        "id": 754,
        "url": "http://patches.dpdk.org/api/people/754/?format=api",
        "name": "Wang, Yipeng1",
        "email": "yipeng1.wang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1531242001-381104-3-git-send-email-yipeng1.wang@intel.com/mbox/",
    "series": [
        {
            "id": 506,
            "url": "http://patches.dpdk.org/api/series/506/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=506",
            "date": "2018-07-10T16:59:53",
            "name": "Add read-write concurrency to rte_hash library",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/506/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/42750/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/42750/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 0AF931B1EC;\n\tWed, 11 Jul 2018 02:07:19 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby dpdk.org (Postfix) with ESMTP id BBEBA5F3B\n\tfor <dev@dpdk.org>; Wed, 11 Jul 2018 02:07:15 +0200 (CEST)",
            "from orsmga002.jf.intel.com ([10.7.209.21])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t10 Jul 2018 17:07:12 -0700",
            "from skx-yipeng.jf.intel.com ([10.54.81.175])\n\tby orsmga002.jf.intel.com with ESMTP; 10 Jul 2018 17:07:12 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.51,336,1526367600\"; d=\"scan'208\";a=\"73792725\"",
        "From": "Yipeng Wang <yipeng1.wang@intel.com>",
        "To": "pablo.de.lara.guarch@intel.com",
        "Cc": "dev@dpdk.org, yipeng1.wang@intel.com, bruce.richardson@intel.com,\n\thonnappa.nagarahalli@arm.com, vguvva@caviumnetworks.com,\n\tbrijesh.s.singh@gmail.com",
        "Date": "Tue, 10 Jul 2018 09:59:55 -0700",
        "Message-Id": "<1531242001-381104-3-git-send-email-yipeng1.wang@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1531242001-381104-1-git-send-email-yipeng1.wang@intel.com>",
        "References": "<1528455078-328182-1-git-send-email-yipeng1.wang@intel.com>\n\t<1531242001-381104-1-git-send-email-yipeng1.wang@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v5 2/8] hash: fix a multi-writer race condition",
        "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": "Current multi-writer implementation uses Intel TSX to\nprotect the cuckoo path moving but not the cuckoo\npath searching. After searching, we need to verify again if\nthe same empty slot still exists at the beginning of the TSX\nregion. Otherwise another writer could occupy the empty slot\nbefore the TSX region. Current code does not verify.\n\nFixes: be856325cba3 (\"hash: add scalable multi-writer insertion with Intel TSX\")\nCc: stable@dpdk.org\n\nSigned-off-by: Yipeng Wang <yipeng1.wang@intel.com>\nAcked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>\n---\n lib/librte_hash/rte_cuckoo_hash_x86.h | 3 +++\n 1 file changed, 3 insertions(+)",
    "diff": "diff --git a/lib/librte_hash/rte_cuckoo_hash_x86.h b/lib/librte_hash/rte_cuckoo_hash_x86.h\nindex 2c5b017..981d7bd 100644\n--- a/lib/librte_hash/rte_cuckoo_hash_x86.h\n+++ b/lib/librte_hash/rte_cuckoo_hash_x86.h\n@@ -66,6 +66,9 @@ rte_hash_cuckoo_move_insert_mw_tm(const struct rte_hash *h,\n \twhile (try < RTE_HASH_TSX_MAX_RETRY) {\n \t\tstatus = rte_xbegin();\n \t\tif (likely(status == RTE_XBEGIN_STARTED)) {\n+\t\t\t/* In case empty slot was gone before entering TSX */\n+\t\t\tif (curr_bkt->key_idx[curr_slot] != EMPTY_SLOT)\n+\t\t\t\trte_xabort(RTE_XABORT_CUCKOO_PATH_INVALIDED);\n \t\t\twhile (likely(curr_node->prev != NULL)) {\n \t\t\t\tprev_node = curr_node->prev;\n \t\t\t\tprev_bkt = prev_node->bkt;\n",
    "prefixes": [
        "v5",
        "2/8"
    ]
}