get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 39293,
    "url": "http://patches.dpdk.org/api/patches/39293/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/88ac531b5b13288971edcee16785c8cc612bdfe0.1525342009.git.anatoly.burakov@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": "<88ac531b5b13288971edcee16785c8cc612bdfe0.1525342009.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/88ac531b5b13288971edcee16785c8cc612bdfe0.1525342009.git.anatoly.burakov@intel.com",
    "date": "2018-05-03T10:11:27",
    "name": "[dpdk-dev,3/3] memalloc: fix unmapping and marking segments as free",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b7816f988113443632364f8ce20a22f5d9bccf77",
    "submitter": {
        "id": 4,
        "url": "http://patches.dpdk.org/api/people/4/?format=api",
        "name": "Anatoly Burakov",
        "email": "anatoly.burakov@intel.com"
    },
    "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/88ac531b5b13288971edcee16785c8cc612bdfe0.1525342009.git.anatoly.burakov@intel.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/39293/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/39293/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 EAD442BE5;\n\tThu,  3 May 2018 12:11:36 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby dpdk.org (Postfix) with ESMTP id 157D52A66\n\tfor <dev@dpdk.org>; Thu,  3 May 2018 12:11:30 +0200 (CEST)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 May 2018 03:11:28 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby fmsmga001.fm.intel.com with ESMTP; 03 May 2018 03:11:28 -0700",
            "from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com\n\t[10.237.217.45])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tw43ABRoh021990; Thu, 3 May 2018 11:11:27 +0100",
            "from sivswdev01.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev01.ir.intel.com with ESMTP id w43ABRgW025750;\n\tThu, 3 May 2018 11:11:27 +0100",
            "(from aburakov@localhost)\n\tby sivswdev01.ir.intel.com with LOCAL id w43ABRFd025746;\n\tThu, 3 May 2018 11:11:27 +0100"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.49,358,1520924400\"; d=\"scan'208\";a=\"52053033\"",
        "From": "Anatoly Burakov <anatoly.burakov@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "yong.liu@intel.com, anatoly.burakov@intel.com",
        "Date": "Thu,  3 May 2018 11:11:27 +0100",
        "Message-Id": "<88ac531b5b13288971edcee16785c8cc612bdfe0.1525342009.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "In-Reply-To": [
            "<556d606e3af8ab32e920611d166a0154e472fe25.1525342009.git.anatoly.burakov@intel.com>",
            "<556d606e3af8ab32e920611d166a0154e472fe25.1525342009.git.anatoly.burakov@intel.com>"
        ],
        "References": [
            "<556d606e3af8ab32e920611d166a0154e472fe25.1525342009.git.anatoly.burakov@intel.com>",
            "<556d606e3af8ab32e920611d166a0154e472fe25.1525342009.git.anatoly.burakov@intel.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH 3/3] memalloc: fix unmapping and marking segments\n\tas free",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Currently, page deallocation might fail if allocator cannot get page\nfd, which will leave VA space still mapped, and will also not mark\npage as free.\n\nFix page deallocation function to always unmap space before trying\nto get rid of the page itself, and always mark page as free even if\npage deallocation failed.\n\nFixes: a5ff05d60fc5 (\"mem: support unmapping pages at runtime\")\nFixes: 1a7dc2252f28 (\"mem: revert to using flock and add per-segment lockfiles\")\nCc: anatoly.burakov@intel.com\n\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\n---\n lib/librte_eal/linuxapp/eal/eal_memalloc.c | 27 ++++++++++++++-------------\n 1 file changed, 14 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c\nindex 3282293..c1a0211 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c\n@@ -610,14 +610,6 @@ free_seg(struct rte_memseg *ms, struct hugepage_info *hi,\n \t/* erase page data */\n \tmemset(ms->addr, 0, ms->len);\n \n-\t/* if we are not in single file segments mode, we're going to unmap the\n-\t * segment and thus drop the lock on original fd, so take out another\n-\t * shared lock before we do that.\n-\t */\n-\tfd = get_seg_fd(path, sizeof(path), hi, list_idx, seg_idx);\n-\tif (fd < 0)\n-\t\treturn -1;\n-\n \tif (mmap(ms->addr, ms->len, PROT_READ,\n \t\t\tMAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0) ==\n \t\t\t\tMAP_FAILED) {\n@@ -625,6 +617,14 @@ free_seg(struct rte_memseg *ms, struct hugepage_info *hi,\n \t\treturn -1;\n \t}\n \n+\t/* if we are not in single file segments mode, we're going to unmap the\n+\t * segment and thus drop the lock on original fd, but hugepage dir is\n+\t * now locked so we can take out another one without races.\n+\t */\n+\tfd = get_seg_fd(path, sizeof(path), hi, list_idx, seg_idx);\n+\tif (fd < 0)\n+\t\treturn -1;\n+\n \tif (internal_config.single_file_segments) {\n \t\tmap_offset = seg_idx * ms->len;\n \t\tif (resize_hugefile(fd, path, list_idx, seg_idx, map_offset,\n@@ -735,12 +735,13 @@ alloc_seg_walk(const struct rte_memseg_list *msl, void *arg)\n \t\t\t\t\t\t&cur_msl->memseg_arr;\n \n \t\t\t\ttmp = rte_fbarray_get(arr, j);\n-\t\t\t\tif (free_seg(tmp, wa->hi, msl_idx, j)) {\n-\t\t\t\t\tRTE_LOG(ERR, EAL, \"Cannot free page\\n\");\n-\t\t\t\t\tcontinue;\n-\t\t\t\t}\n-\n \t\t\t\trte_fbarray_set_free(arr, j);\n+\n+\t\t\t\t/* free_seg may attempt to create a file, which\n+\t\t\t\t * may fail.\n+\t\t\t\t */\n+\t\t\t\tif (free_seg(tmp, wa->hi, msl_idx, j))\n+\t\t\t\t\tRTE_LOG(DEBUG, EAL, \"Cannot free page\\n\");\n \t\t\t}\n \t\t\t/* clear the list */\n \t\t\tif (wa->ms)\n",
    "prefixes": [
        "dpdk-dev",
        "3/3"
    ]
}