get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 809965,
    "url": "http://patchwork.ozlabs.org/api/patches/809965/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/1504593066-14023-2-git-send-email-zhangchen.fnst@cn.fujitsu.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1504593066-14023-2-git-send-email-zhangchen.fnst@cn.fujitsu.com>",
    "list_archive_url": null,
    "date": "2017-09-05T06:31:04",
    "name": "[V6,1/3] net/colo-compare.c: Optimize unpredictable tcp options comparison",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "95a0ffa47b828ae3819a9d7fb0a0e4f46c5d5eda",
    "submitter": {
        "id": 67759,
        "url": "http://patchwork.ozlabs.org/api/people/67759/?format=api",
        "name": "Zhang Chen",
        "email": "zhangchen.fnst@cn.fujitsu.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/1504593066-14023-2-git-send-email-zhangchen.fnst@cn.fujitsu.com/mbox/",
    "series": [
        {
            "id": 1494,
            "url": "http://patchwork.ozlabs.org/api/series/1494/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1494",
            "date": "2017-09-05T06:31:03",
            "name": "Optimize COLO-compare performance",
            "version": 6,
            "mbox": "http://patchwork.ozlabs.org/series/1494/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/809965/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/809965/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmcNm5Xygz9sNr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 16:33:28 +1000 (AEST)",
            "from localhost ([::1]:57092 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dp7QM-000541-Tx\n\tfor incoming@patchwork.ozlabs.org; Tue, 05 Sep 2017 02:33:26 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:57459)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <zhangchen.fnst@cn.fujitsu.com>) id 1dp7Ms-0002zz-GV\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 02:29:56 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <zhangchen.fnst@cn.fujitsu.com>) id 1dp7Mn-0005sk-IT\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 02:29:50 -0400",
            "from mail.cn.fujitsu.com ([183.91.158.132]:51446\n\thelo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <zhangchen.fnst@cn.fujitsu.com>) id 1dp7Mm-0005q6-Or\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 02:29:45 -0400",
            "from localhost (HELO cn.fujitsu.com) ([10.167.33.5])\n\tby heian.cn.fujitsu.com with ESMTP; 05 Sep 2017 14:29:43 +0800",
            "from G08CNEXCHPEKD02.g08.fujitsu.local (unknown [10.167.33.83])\n\tby cn.fujitsu.com (Postfix) with ESMTP id 7526F472554A;\n\tTue,  5 Sep 2017 14:29:42 +0800 (CST)",
            "from localhost.localdomain (10.167.226.56) by\n\tG08CNEXCHPEKD02.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP\n\tServer (TLS) id 14.3.361.1; Tue, 5 Sep 2017 14:29:41 +0800"
        ],
        "X-IronPort-AV": "E=Sophos;i=\"5.41,478,1498492800\"; d=\"scan'208\";a=\"25224687\"",
        "From": "Zhang Chen <zhangchen.fnst@cn.fujitsu.com>",
        "To": "qemu devel <qemu-devel@nongnu.org>, Jason Wang <jasowang@redhat.com>",
        "Date": "Tue, 5 Sep 2017 14:31:04 +0800",
        "Message-ID": "<1504593066-14023-2-git-send-email-zhangchen.fnst@cn.fujitsu.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1504593066-14023-1-git-send-email-zhangchen.fnst@cn.fujitsu.com>",
        "References": "<1504593066-14023-1-git-send-email-zhangchen.fnst@cn.fujitsu.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.167.226.56]",
        "X-yoursite-MailScanner-ID": "7526F472554A.ABB5D",
        "X-yoursite-MailScanner": "Found to be clean",
        "X-yoursite-MailScanner-From": "zhangchen.fnst@cn.fujitsu.com",
        "X-detected-operating-system": "by eggs.gnu.org: Genre and OS details not\n\trecognized.",
        "X-Received-From": "183.91.158.132",
        "Subject": "[Qemu-devel] [PATCH V6 1/3] net/colo-compare.c: Optimize\n\tunpredictable tcp options comparison",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Li Zhijian <lizhijian@cn.fujitsu.com>,\n\tZhang Chen <zhangchen.fnst@cn.fujitsu.com>,\n\tZhang Chen <zhangckid@gmail.com>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "When network is busy, some tcp options(like sack) will unpredictable\noccur in primary side or secondary side. it will make packet size\nnot same, but the two packet's payload is identical. colo just\ncare about packet payload, so we skip the option field.\n\nSigned-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>\n---\n net/colo-compare.c | 39 +++++++++++++++++++++++++++------------\n 1 file changed, 27 insertions(+), 12 deletions(-)",
    "diff": "diff --git a/net/colo-compare.c b/net/colo-compare.c\nindex ca67c68..d088262 100644\n--- a/net/colo-compare.c\n+++ b/net/colo-compare.c\n@@ -186,7 +186,10 @@ static int packet_enqueue(CompareState *s, int mode)\n  * return:    0  means packet same\n  *            > 0 || < 0 means packet different\n  */\n-static int colo_packet_compare_common(Packet *ppkt, Packet *spkt, int offset)\n+static int colo_packet_compare_common(Packet *ppkt,\n+                                      Packet *spkt,\n+                                      int poffset,\n+                                      int soffset)\n {\n     if (trace_event_get_state(TRACE_COLO_COMPARE_MISCOMPARE)) {\n         char pri_ip_src[20], pri_ip_dst[20], sec_ip_src[20], sec_ip_dst[20];\n@@ -201,12 +204,13 @@ static int colo_packet_compare_common(Packet *ppkt, Packet *spkt, int offset)\n                                    sec_ip_src, sec_ip_dst);\n     }\n \n-    offset = ppkt->vnet_hdr_len + offset;\n+    poffset = ppkt->vnet_hdr_len + poffset;\n+    soffset = ppkt->vnet_hdr_len + soffset;\n \n-    if (ppkt->size == spkt->size) {\n-        return memcmp(ppkt->data + offset,\n-                      spkt->data + offset,\n-                      spkt->size - offset);\n+    if (ppkt->size - poffset == spkt->size - soffset) {\n+        return memcmp(ppkt->data + poffset,\n+                      spkt->data + soffset,\n+                      spkt->size - soffset);\n     } else {\n         trace_colo_compare_main(\"Net packet size are not the same\");\n         return -1;\n@@ -263,13 +267,22 @@ static int colo_packet_compare_tcp(Packet *spkt, Packet *ppkt)\n      * so we just need skip this field.\n      */\n     if (ptcp->th_off > 5) {\n-        ptrdiff_t tcp_offset;\n+        ptrdiff_t ptcp_offset, stcp_offset;\n \n-        tcp_offset = ppkt->transport_header - (uint8_t *)ppkt->data\n-                     + (ptcp->th_off * 4) - ppkt->vnet_hdr_len;\n-        res = colo_packet_compare_common(ppkt, spkt, tcp_offset);\n+        ptcp_offset = ppkt->transport_header - (uint8_t *)ppkt->data\n+                      + (ptcp->th_off * 4) - ppkt->vnet_hdr_len;\n+        stcp_offset = spkt->transport_header - (uint8_t *)spkt->data\n+                      + (stcp->th_off * 4) - spkt->vnet_hdr_len;\n+\n+        /*\n+         * When network is busy, some tcp options(like sack) will unpredictable\n+         * occur in primary side or secondary side. it will make packet size\n+         * not same, but the two packet's payload is identical. colo just\n+         * care about packet payload, so we skip the option field.\n+         */\n+        res = colo_packet_compare_common(ppkt, spkt, ptcp_offset, stcp_offset);\n     } else if (ptcp->th_sum == stcp->th_sum) {\n-        res = colo_packet_compare_common(ppkt, spkt, ETH_HLEN);\n+        res = colo_packet_compare_common(ppkt, spkt, ETH_HLEN, ETH_HLEN);\n     } else {\n         res = -1;\n     }\n@@ -329,6 +342,7 @@ static int colo_packet_compare_udp(Packet *spkt, Packet *ppkt)\n      * the ip payload here.\n      */\n     ret = colo_packet_compare_common(ppkt, spkt,\n+                                     network_header_length + ETH_HLEN,\n                                      network_header_length + ETH_HLEN);\n \n     if (ret) {\n@@ -366,6 +380,7 @@ static int colo_packet_compare_icmp(Packet *spkt, Packet *ppkt)\n      * the ip payload here.\n      */\n     if (colo_packet_compare_common(ppkt, spkt,\n+                                   network_header_length + ETH_HLEN,\n                                    network_header_length + ETH_HLEN)) {\n         trace_colo_compare_icmp_miscompare(\"primary pkt size\",\n                                            ppkt->size);\n@@ -403,7 +418,7 @@ static int colo_packet_compare_other(Packet *spkt, Packet *ppkt)\n                                    sec_ip_src, sec_ip_dst);\n     }\n \n-    return colo_packet_compare_common(ppkt, spkt, 0);\n+    return colo_packet_compare_common(ppkt, spkt, 0, 0);\n }\n \n static int colo_old_packet_check_one(Packet *pkt, int64_t *check_time)\n",
    "prefixes": [
        "V6",
        "1/3"
    ]
}