get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 806975,
    "url": "http://patchwork.ozlabs.org/api/patches/806975/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/skiboot/patch/20170829062506.8317-10-cyril.bur@au1.ibm.com/",
    "project": {
        "id": 44,
        "url": "http://patchwork.ozlabs.org/api/projects/44/?format=api",
        "name": "skiboot firmware development",
        "link_name": "skiboot",
        "list_id": "skiboot.lists.ozlabs.org",
        "list_email": "skiboot@lists.ozlabs.org",
        "web_url": "http://github.com/open-power/skiboot",
        "scm_url": "http://github.com/open-power/skiboot",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170829062506.8317-10-cyril.bur@au1.ibm.com>",
    "list_archive_url": null,
    "date": "2017-08-29T06:25:02",
    "name": "[RFC,09/13] libflash/libffs: Remove backup partition from TOC generation code",
    "commit_ref": null,
    "pull_url": null,
    "state": "rfc",
    "archived": false,
    "hash": "6c1f0aa5e8c66af89e5293682a809253684cefb2",
    "submitter": {
        "id": 64738,
        "url": "http://patchwork.ozlabs.org/api/people/64738/?format=api",
        "name": "Cyril Bur",
        "email": "cyril.bur@au1.ibm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/skiboot/patch/20170829062506.8317-10-cyril.bur@au1.ibm.com/mbox/",
    "series": [
        {
            "id": 313,
            "url": "http://patchwork.ozlabs.org/api/series/313/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/skiboot/list/?series=313",
            "date": "2017-08-29T06:24:53",
            "name": "Rework flash TOC generation",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/313/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/806975/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/806975/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "skiboot@lists.ozlabs.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "skiboot@lists.ozlabs.org"
        ],
        "Received": [
            "from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhJxb5rjjz9ryr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 16:43:31 +1000 (AEST)",
            "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xhJxb4q3hzDrWK\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 16:43:31 +1000 (AEST)",
            "from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n\t[148.163.158.5])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xhJY83cXlzDqTm\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 16:25:48 +1000 (AEST)",
            "from pps.filterd (m0098416.ppops.net [127.0.0.1])\n\tby mx0b-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv7T6OCRo076863\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 02:25:42 -0400",
            "from e23smtp06.au.ibm.com (e23smtp06.au.ibm.com [202.81.31.148])\n\tby mx0b-001b2d01.pphosted.com with ESMTP id 2cn1hye6p1-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 02:25:42 -0400",
            "from localhost\n\tby e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <skiboot@lists.ozlabs.org> from <cyril.bur@au1.ibm.com>;\n\tTue, 29 Aug 2017 16:25:39 +1000",
            "from d23relay10.au.ibm.com (202.81.31.229)\n\tby e23smtp06.au.ibm.com (202.81.31.212) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tTue, 29 Aug 2017 16:25:37 +1000",
            "from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139])\n\tby d23relay10.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n\tv7T6PaL73145832\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 16:25:36 +1000",
            "from d23av04.au.ibm.com (localhost [127.0.0.1])\n\tby d23av04.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id\n\tv7T6PbO6017786\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 16:25:37 +1000",
            "from ozlabs.au.ibm.com (ozlabs.au.ibm.com [9.192.253.14])\n\tby d23av04.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id\n\tv7T6Pas1017774; Tue, 29 Aug 2017 16:25:36 +1000",
            "from camb691.ozlabs.ibm.com (haven.au.ibm.com [9.192.254.114])\n\t(using TLSv1.2 with cipher DHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby ozlabs.au.ibm.com (Postfix) with ESMTPSA id 7B8B5A010B;\n\tTue, 29 Aug 2017 16:25:35 +1000 (AEST)"
        ],
        "From": "Cyril Bur <cyril.bur@au1.ibm.com>",
        "To": "skiboot@lists.ozlabs.org, stewart@linux.vnet.ibm.com",
        "Date": "Tue, 29 Aug 2017 16:25:02 +1000",
        "X-Mailer": "git-send-email 2.14.1",
        "In-Reply-To": "<20170829062506.8317-1-cyril.bur@au1.ibm.com>",
        "References": "<20170829062506.8317-1-cyril.bur@au1.ibm.com>",
        "X-TM-AS-MML": "disable",
        "x-cbid": "17082906-0040-0000-0000-00000351E322",
        "X-IBM-AV-DETECTION": "SAVI=unused REMOTE=unused XFE=unused",
        "x-cbparentid": "17082906-0041-0000-0000-00000CCFDD93",
        "Message-Id": "<20170829062506.8317-10-cyril.bur@au1.ibm.com>",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-08-29_01:, , signatures=0",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=2\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1708290096",
        "Subject": "[Skiboot] [RFC PATCH 09/13] libflash/libffs: Remove backup\n\tpartition from TOC generation code",
        "X-BeenThere": "skiboot@lists.ozlabs.org",
        "X-Mailman-Version": "2.1.23",
        "Precedence": "list",
        "List-Id": "Mailing list for skiboot development <skiboot.lists.ozlabs.org>",
        "List-Unsubscribe": "<https://lists.ozlabs.org/options/skiboot>,\n\t<mailto:skiboot-request@lists.ozlabs.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.ozlabs.org/pipermail/skiboot/>",
        "List-Post": "<mailto:skiboot@lists.ozlabs.org>",
        "List-Help": "<mailto:skiboot-request@lists.ozlabs.org?subject=help>",
        "List-Subscribe": "<https://lists.ozlabs.org/listinfo/skiboot>,\n\t<mailto:skiboot-request@lists.ozlabs.org?subject=subscribe>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Errors-To": "skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org",
        "Sender": "\"Skiboot\"\n\t<skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>"
    },
    "content": "It turns out this code was messy and not all that reliable. Doing it at\nthe library level adds complexity to the library and restrictions to the\ncaller.\n\nA simpler approach can be achived with the just instantiating multiple\nffs_header structures pointing to different parts of the same file.\n\nSigned-off-by: Cyril Bur <cyril.bur@au1.ibm.com>\n---\n libflash/ffs.h    |  2 --\n libflash/libffs.c | 52 +---------------------------------------------------\n libflash/libffs.h |  2 --\n 3 files changed, 1 insertion(+), 55 deletions(-)",
    "diff": "diff --git a/libflash/ffs.h b/libflash/ffs.h\nindex cc2460c8..957155b9 100644\n--- a/libflash/ffs.h\n+++ b/libflash/ffs.h\n@@ -204,7 +204,6 @@ struct __ffs_hdr {\n  * @size:\t\tSize of partition table (in bytes)\n  * @block_size:\t\tSize of block on device (in bytes)\n  * @block_count:\tNumber of blocks on device.\n- * @backup\t\tThe backup partition\n  * @entries:\t\tList of partition entries\n  */\n struct ffs_hdr {\n@@ -214,7 +213,6 @@ struct ffs_hdr {\n \tuint32_t block_size;\n \tuint32_t block_count;\n \tstruct ffs_entry *part;\n-\tstruct ffs_entry *backup;\n \tstruct list_head entries;\n };\n \ndiff --git a/libflash/libffs.c b/libflash/libffs.c\nindex e741121d..5888c73f 100644\n--- a/libflash/libffs.c\n+++ b/libflash/libffs.c\n@@ -546,7 +546,7 @@ int ffs_next_side(struct ffs_handle *ffs, struct ffs_handle **new_ffs,\n \treturn ffs_init(offset, max_size, ffs->bl, new_ffs, mark_ecc);\n }\n \n-static int __ffs_entry_add(struct ffs_hdr *hdr, struct ffs_entry *entry)\n+int ffs_entry_add(struct ffs_hdr *hdr, struct ffs_entry *entry)\n {\n \tstruct ffs_entry *ent;\n \tuint32_t smallest_base;\n@@ -599,50 +599,6 @@ static int __ffs_entry_add(struct ffs_hdr *hdr, struct ffs_entry *entry)\n \treturn 0;\n }\n \n-int ffs_entry_add(struct ffs_hdr *hdr, struct ffs_entry *entry)\n-{\n-\t/*\n-\t * Refuse to add anything after BACKUP_PART has been added, not\n-\t * sure why this is needed anymore\n-\t */\n-\tif (hdr->backup)\n-\t\treturn FLASH_ERR_PARM_ERROR;\n-\n-\treturn __ffs_entry_add(hdr, entry);\n-}\n-\n-/* This should be done last! */\n-int ffs_hdr_create_backup(struct ffs_hdr *hdr)\n-{\n-\tstruct ffs_entry *ent;\n-\tstruct ffs_entry *backup;\n-\tuint32_t hdr_size, flash_end;\n-\tint rc = 0;\n-\n-\tent = list_tail(&hdr->entries, struct ffs_entry, list);\n-\tif (!ent) {\n-\t\treturn FLASH_ERR_PARM_ERROR;\n-\t}\n-\n-\thdr_size = ffs_hdr_raw_size(ffs_num_entries(hdr) + 1);\n-\t/* Whole number of blocks BACKUP_PART needs to be */\n-\thdr_size = ((hdr_size + hdr->block_size) / hdr->block_size) * hdr->block_size;\n-\tflash_end = hdr->base + (hdr->block_size * hdr->block_count);\n-\trc = ffs_entry_new(\"BACKUP_PART\", flash_end - hdr_size, hdr_size, &backup);\n-\tif (rc)\n-\t\treturn rc;\n-\n-\trc = __ffs_entry_add(hdr, backup);\n-\tif (rc) {\n-\t\tfree(backup);\n-\t\treturn rc;\n-\t}\n-\n-\thdr->backup = backup;\n-\n-\treturn rc;\n-}\n-\n int ffs_hdr_finalise(struct blocklevel_device *bl, struct ffs_hdr *hdr)\n {\n \tint num_entries, i, rc = 0;\n@@ -699,12 +655,6 @@ int ffs_hdr_finalise(struct blocklevel_device *bl, struct ffs_hdr *hdr)\n \tif (rc)\n \t\tgoto out;\n \n-\tif (hdr->backup) {\n-\t\tfprintf(stderr, \"Actually writing backup part @ 0x%08x\\n\", hdr->backup->base);\n-\t\tblocklevel_erase(bl, hdr->backup->base, hdr->size);\n-\t\trc = blocklevel_write(bl, hdr->backup->base, real_hdr,\n-\t\t\tffs_hdr_raw_size(num_entries));\n-\t}\n out:\n \tfree(real_hdr);\n \treturn rc;\ndiff --git a/libflash/libffs.h b/libflash/libffs.h\nindex d81b9dfe..56428a2c 100644\n--- a/libflash/libffs.h\n+++ b/libflash/libffs.h\n@@ -154,8 +154,6 @@ struct ffs_entry_user ffs_entry_user_get(struct ffs_entry *ent);\n \n int ffs_entry_add(struct ffs_hdr *hdr, struct ffs_entry *entry);\n \n-int ffs_hdr_create_backup(struct ffs_hdr *hdr);\n-\n int ffs_hdr_finalise(struct blocklevel_device *bl, struct ffs_hdr *hdr);\n \n int ffs_hdr_free(struct ffs_hdr *hdr);\n",
    "prefixes": [
        "RFC",
        "09/13"
    ]
}