Cover Letter Detail
Show a cover letter.
GET /api/covers/813722/?format=api
{ "id": 813722, "url": "http://patchwork.ozlabs.org/api/covers/813722/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/1505375436-28439-1-git-send-email-peterx@redhat.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": "<1505375436-28439-1-git-send-email-peterx@redhat.com>", "list_archive_url": null, "date": "2017-09-14T07:50:21", "name": "[RFC,00/15] QMP: out-of-band (OOB) execution support", "submitter": { "id": 67717, "url": "http://patchwork.ozlabs.org/api/people/67717/?format=api", "name": "Peter Xu", "email": "peterx@redhat.com" }, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/1505375436-28439-1-git-send-email-peterx@redhat.com/mbox/", "series": [ { "id": 3043, "url": "http://patchwork.ozlabs.org/api/series/3043/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=3043", "date": "2017-09-14T07:50:21", "name": "QMP: out-of-band (OOB) execution support", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/3043/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/813722/comments/", "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>)", "ext-mx04.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com", "ext-mx04.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=peterx@redhat.com" ], "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 3xt9hx2kWXz9sRm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 14 Sep 2017 17:51:45 +1000 (AEST)", "from localhost ([::1]:46185 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 1dsOw3-00064I-Bc\n\tfor incoming@patchwork.ozlabs.org; Thu, 14 Sep 2017 03:51:43 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:51582)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <peterx@redhat.com>) id 1dsOvI-00061q-Ea\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 03:50:57 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <peterx@redhat.com>) id 1dsOvF-0006Lo-8Z\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 03:50:56 -0400", "from mx1.redhat.com ([209.132.183.28]:41938)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <peterx@redhat.com>) id 1dsOvE-0006Kf-Vb\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 03:50:53 -0400", "from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id E59677EA8E;\n\tThu, 14 Sep 2017 07:50:51 +0000 (UTC)", "from pxdev.xzpeter.org.com (dhcp-15-224.nay.redhat.com\n\t[10.66.15.224])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 31D53619BB;\n\tThu, 14 Sep 2017 07:50:40 +0000 (UTC)" ], "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com E59677EA8E", "From": "Peter Xu <peterx@redhat.com>", "To": "qemu-devel@nongnu.org", "Date": "Thu, 14 Sep 2017 15:50:21 +0800", "Message-Id": "<1505375436-28439-1-git-send-email-peterx@redhat.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.12", "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.28]);\n\tThu, 14 Sep 2017 07:50:52 +0000 (UTC)", "Content-Transfer-Encoding": "quoted-printable", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]", "X-Received-From": "209.132.183.28", "Subject": "[Qemu-devel] [RFC 00/15] QMP: out-of-band (OOB) execution support", "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": "Laurent Vivier <lvivier@redhat.com>, Fam Zheng <famz@redhat.com>, Juan\n\tQuintela <quintela@redhat.com>, Markus Armbruster <armbru@redhat.com>,\n\tpeterx@redhat.com, mdroth@linux.vnet.ibm.com,\n\tStefan Hajnoczi <shajnocz@redhat.com>, =?utf-8?q?Marc-Andr=C3=A9_Lure?=\n\t=?utf-8?q?au?= <marcandre.lureau@gmail.com>,\n\tPaolo Bonzini <pbonzini@redhat.com>, \"Dr . David Alan Gilbert\"\n\t<dgilbert@redhat.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": "This series was born from this one:\n\n https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg04310.html\n\nThe design comes from Markus, and also the whole-bunch-of discussions\nin previous thread. My heartful thanks to Markus, Daniel, Dave,\nStefan, etc. on discussing the topic (...again!), providing shiny\nideas and suggestions. Finally we got such a solution that seems to\nsatisfy everyone.\n\nI re-started the versioning since this series is totally different\nfrom previous one. Now it's version 1.\n\nIn case new reviewers come along the way without reading previous\ndiscussions, I will try to do a summary on what this is all about.\n\nWhat is OOB execution?\n======================\n\nIt's the shortcut of Out-Of-Band execution, its name is given by\nMarkus. It's a way to quickly execute a QMP request. Say, originally\nQMP is going throw these steps:\n\n JSON Parser --> QMP Dispatcher --> Respond\n /|\\ (2) (3) |\n (1) | \\|/ (4)\n +--------- main thread --------+\n\nThe requests are executed by the so-called QMP-dispatcher after the\nJSON is parsed. If OOB is on, we run the command directly in the\nparser and quickly returns.\n\nYeah I know in current code the parser calls dispatcher directly\n(please see handle_qmp_command()). However it's not true again after\nthis series (parser will has its own IO thread, and dispatcher will\nstill be run in main thread). So this OOB does brings something\ndifferent.\n\nThere are more details on why OOB and the difference/relationship\nbetween OOB, async QMP, block/general jobs, etc.. but IMHO that's\nslightly out of topic (and believe me, it's not easy for me to\nsummarize that). For more information, please refers to [1].\n\nSummary ends here.\n\nSome Implementation Details\n===========================\n\nAgain, I mentioned that the old QMP workflow is this:\n\n JSON Parser --> QMP Dispatcher --> Respond\n /|\\ (2) (3) |\n (1) | \\|/ (4)\n +--------- main thread --------+\n\nWhat this series does is, firstly:\n\n JSON Parser QMP Dispatcher --> Respond\n /|\\ | /|\\ (4) |\n | | (2) | (3) | (5)\n (1) | +-----> | \\|/\n +--------- main thread <-------+\n\nAnd further:\n\n queue/kick\n JSON Parser ======> QMP Dispatcher --> Respond\n /|\\ | (3) /|\\ (4) |\n (1) | | (2) | | (5)\n | \\|/ | \\|/\n IO thread main thread <-------+\n\nThen it introduced the \"allow-oob\" parameter in QAPI schema to define\ncommands, and \"run-oob\" flag to let oob-allowed command to run in the\nparser.\n\nThe last patch enables this for \"migrate-incoming\" command.\n\nPlease review. Thanks.\n\n[1] https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg04310.html\n\nPeter Xu (15):\n char-io: fix possible race on IOWatchPoll\n qobject: allow NULL for qstring_get_str()\n qobject: introduce qobject_to_str()\n monitor: move skip_flush into monitor_data_init\n qjson: add \"opaque\" field to JSONMessageParser\n monitor: move the cur_mon hack deeper for QMP\n monitor: unify global init\n monitor: create IO thread\n monitor: allow to use IO thread for parsing\n monitor: introduce monitor_qmp_respond()\n monitor: separate QMP parser and dispatcher\n monitor: enable IO thread for (qmp & !mux) typed\n qapi: introduce new cmd option \"allow-oob\"\n qmp: support out-of-band (oob) execution\n qmp: let migrate-incoming allow out-of-band\n\n chardev/char-io.c | 15 ++-\n docs/devel/qapi-code-gen.txt | 51 ++++++-\n include/monitor/monitor.h | 2 +-\n include/qapi/qmp/dispatch.h | 2 +\n include/qapi/qmp/json-streamer.h | 8 +-\n include/qapi/qmp/qstring.h | 1 +\n monitor.c | 283 +++++++++++++++++++++++++++++++--------\n qapi/introspect.json | 6 +-\n qapi/migration.json | 3 +-\n qapi/qmp-dispatch.c | 34 +++++\n qga/main.c | 5 +-\n qobject/json-streamer.c | 7 +-\n qobject/qjson.c | 5 +-\n qobject/qstring.c | 13 +-\n scripts/qapi-commands.py | 19 ++-\n scripts/qapi-introspect.py | 10 +-\n scripts/qapi.py | 15 ++-\n scripts/qapi2texi.py | 2 +-\n tests/libqtest.c | 5 +-\n tests/qapi-schema/test-qapi.py | 2 +-\n trace-events | 2 +\n vl.c | 3 +-\n 22 files changed, 398 insertions(+), 95 deletions(-)" }