Show a cover letter.

GET /api/covers/40986/
Content-Type: application/json
Vary: Accept

    "id": 40986,
    "url": "",
    "web_url": "",
    "project": {
        "id": 1,
        "url": "",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "",
        "list_email": "",
        "web_url": "",
        "scm_url": "git://",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "{}",
        "commit_url_format": ""
    "msgid": "<>",
    "list_archive_url": "",
    "date": "2018-06-11T20:55:33",
    "name": "[0/9] mem: reduce memory fragmentation",
    "submitter": {
        "id": 4,
        "url": "",
        "name": "Burakov, Anatoly",
        "email": ""
    "mbox": "",
    "series": [
            "id": 85,
            "url": "",
            "web_url": "",
            "date": "2018-06-11T20:55:33",
            "name": "mem: reduce memory fragmentation",
            "version": 1,
            "mbox": ""
    "comments": "",
    "headers": {
        "X-Amp-File-Uploaded": "False",
        "Subject": "[dpdk-dev] [PATCH 0/9] mem: reduce memory fragmentation",
        "List-Post": "<>",
        "X-Mailer": "git-send-email",
        "X-Original-To": "",
        "Errors-To": "",
        "From": "Anatoly Burakov <>",
        "Return-Path": "<>",
        "X-BeenThere": "",
        "List-Archive": "<>",
        "Date": "Mon, 11 Jun 2018 21:55:33 +0100",
        "Precedence": "list",
        "Message-Id": "<>",
        "X-Mailman-Version": "2.1.15",
        "List-Subscribe": "<>,\n\t<>",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "Delivered-To": "",
        "List-Id": "DPDK patches and discussions <>",
        "Received": [
            "from [] (localhost [])\n\tby (Postfix) with ESMTP id 986291DB65;\n\tMon, 11 Jun 2018 22:55:47 +0200 (CEST)",
            "from ( [])\n\tby (Postfix) with ESMTP id 401D71D940\n\tfor <>; Mon, 11 Jun 2018 22:55:45 +0200 (CEST)",
            "from ([])\n\tby with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t11 Jun 2018 13:55:44 -0700",
            "from ([])\n\tby with ESMTP; 11 Jun 2018 13:55:43 -0700",
            "from (\n\t[])\n\tby (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tw5BKtgke026365 for <>; Mon, 11 Jun 2018 21:55:42 +0100",
            "from (localhost [])\n\tby with ESMTP id w5BKtgkv021555\n\tfor <>; Mon, 11 Jun 2018 21:55:42 +0100",
            "(from aburakov@localhost)\n\tby with LOCAL id w5BKtgRs021548\n\tfor; Mon, 11 Jun 2018 21:55:42 +0100"
        "List-Unsubscribe": "<>,\n\t<>",
        "Sender": "\"dev\" <>",
        "X-ExtLoop1": "1",
        "List-Help": "<>",
        "To": "",
        "X-IronPort-AV": "E=Sophos;i=\"5.51,211,1526367600\"; d=\"scan'208\";a=\"66165832\""
    "content": "This patchset is mostly dealing with changes fbarray, but it is\nactually about reducing fragmentation in Linuxapp memalloc.\n\nWe allocate hugepages from lower VA to higher VA. However, our\nmalloc heap allocates addresses from higher VA to lower VA. This\nresults in a situation where, whenever new page is allocated,\nmalloc starts to allocate memory from the top, leaving fragmented\nspace between new allocation's leftover and previous leftover.\n\nOver time, this leads to lots of free elements sitting at page\nboundaries, small enough to be useful but large enough to have an\nimpact on memory fragmentation in certain circumstances.\n\nTo fix this, we need to allocate memory from higher VA first.\nHowever, in order to do that, we need the ability to search fbarray\nin reverse, which is currently not supported. Adding this support is\nwhat most of this patchset is about.\n\nFirst 4 patches fix some issues in existing fbarray implementation\nand remove some code duplication, preparing for adding of new\nfunctionality.\n\nNext 3 patches add new functionality - reverse search of used/free\nslots, mirroring already existing functionality in semantics and\ncapable of returning identical results but in reverse order.\n\nPatch 8 adds unit tests for fbarray, testing both existing and new\nfunctionality.\n\nFinally, patch 9 changes memalloc to look up free slots in memseg\nlist in reverse order. No other changes is necessary, as all other\ncode can handle segments, wherever they are allocated.\n\nAnatoly Burakov (9):\n  fbarray: fix errno values returned from functions\n  fbarray: reduce duplication in find_contig code\n  fbarray: reduce duplication in find_next_n code\n  fbarray: reduce duplication in find_next code\n  fbarray: add reverse find_free/used\n  fbarray: add reverse find n used/free\n  fbarray: add reverse find contig used/free\n  test: add fbarray autotests\n  memalloc: allocate memory in reverse\n\n lib/librte_eal/common/eal_common_fbarray.c  | 493 ++++++++++++++---\n lib/librte_eal/common/include/rte_fbarray.h | 114 ++++\n lib/librte_eal/linuxapp/eal/eal_memalloc.c  |   3 +-\n lib/librte_eal/          |   6 +\n test/test/Makefile                          |   1 +\n test/test/test_fbarray.c                    | 576 ++++++++++++++++++++\n 6 files changed, 1119 insertions(+), 74 deletions(-)\n create mode 100644 test/test/test_fbarray.c"