Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/817459/?format=api
{ "id": 817459, "url": "http://patchwork.ozlabs.org/api/patches/817459/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170922120725.10910-3-jgross@suse.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": "<20170922120725.10910-3-jgross@suse.com>", "list_archive_url": null, "date": "2017-09-22T12:07:25", "name": "[v2,2/2] xen: dont try setting max grants multiple times", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "88c92bbd0720a5796bb9ecf065b57fb7ff54fad1", "submitter": { "id": 64874, "url": "http://patchwork.ozlabs.org/api/people/64874/?format=api", "name": "Jürgen Groß", "email": "jgross@suse.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170922120725.10910-3-jgross@suse.com/mbox/", "series": [ { "id": 4608, "url": "http://patchwork.ozlabs.org/api/series/4608/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=4608", "date": "2017-09-22T12:07:25", "name": "xen: fix gnttab handling with old dom0 kernels", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/4608/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/817459/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/817459/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 3xzC3x5wpJz9sPm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 22 Sep 2017 22:10:37 +1000 (AEST)", "from localhost ([::1]:58507 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 1dvMmx-0002nB-OD\n\tfor incoming@patchwork.ozlabs.org; Fri, 22 Sep 2017 08:10:35 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:47904)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <jgross@suse.com>) id 1dvMk1-0000kY-5l\n\tfor qemu-devel@nongnu.org; Fri, 22 Sep 2017 08:07:34 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <jgross@suse.com>) id 1dvMjx-0007In-Ow\n\tfor qemu-devel@nongnu.org; Fri, 22 Sep 2017 08:07:33 -0400", "from mx2.suse.de ([195.135.220.15]:33111 helo=mx1.suse.de)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <jgross@suse.com>) id 1dvMjx-0007I7-Im\n\tfor qemu-devel@nongnu.org; Fri, 22 Sep 2017 08:07:29 -0400", "from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])\n\tby mx1.suse.de (Postfix) with ESMTP id 92B59ACC3;\n\tFri, 22 Sep 2017 12:07:28 +0000 (UTC)" ], "X-Virus-Scanned": "by amavisd-new at test-mx.suse.de", "From": "Juergen Gross <jgross@suse.com>", "To": "qemu-devel@nongnu.org,\n\txen-devel@lists.xenproject.org", "Date": "Fri, 22 Sep 2017 14:07:25 +0200", "Message-Id": "<20170922120725.10910-3-jgross@suse.com>", "X-Mailer": "git-send-email 2.12.3", "In-Reply-To": "<20170922120725.10910-1-jgross@suse.com>", "References": "<20170922120725.10910-1-jgross@suse.com>", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no\n\ttimestamps) [generic] [fuzzy]", "X-Received-From": "195.135.220.15", "Subject": "[Qemu-devel] [PATCH v2 2/2] xen: dont try setting max grants\n\tmultiple times", "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": "anthony.perard@citrix.com, Juergen Gross <jgross@suse.com>,\n\tsstabellini@kernel.org, kraxel@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": "Trying to call xengnttab_set_max_grants() with the same file handle\nmight fail on some kernels, as this operation is allowed only once.\n\nThis is a problem for the qdisk backend as blk_connect() can be\ncalled multiple times for a domain, e.g. in case grub-xen is being\nused to boot it.\n\nSo instead of letting the generic backend code open the gnttab device\ndo it in blk_connect() and close it again in blk_disconnect.\n\nSigned-off-by: Juergen Gross <jgross@suse.com>\n---\nV2:\n- always call blk_disconnect() from blk_free() in order to have the\n gnttab device node closed (Anthony Perard)\n---\n hw/block/xen_disk.c | 16 ++++++++++++----\n 1 file changed, 12 insertions(+), 4 deletions(-)", "diff": "diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c\nindex 62506e3167..e431bd89e8 100644\n--- a/hw/block/xen_disk.c\n+++ b/hw/block/xen_disk.c\n@@ -1220,6 +1220,12 @@ static int blk_connect(struct XenDevice *xendev)\n /* Add on the number needed for the ring pages */\n max_grants += blkdev->nr_ring_ref;\n \n+ blkdev->xendev.gnttabdev = xengnttab_open(NULL, 0);\n+ if (blkdev->xendev.gnttabdev == NULL) {\n+ xen_pv_printf(xendev, 0, \"xengnttab_open failed: %s\\n\",\n+ strerror(errno));\n+ return -1;\n+ }\n if (xengnttab_set_max_grants(blkdev->xendev.gnttabdev, max_grants)) {\n xen_pv_printf(xendev, 0, \"xengnttab_set_max_grants failed: %s\\n\",\n strerror(errno));\n@@ -1327,6 +1333,11 @@ static void blk_disconnect(struct XenDevice *xendev)\n }\n blkdev->feature_persistent = false;\n }\n+\n+ if (blkdev->xendev.gnttabdev) {\n+ xengnttab_close(blkdev->xendev.gnttabdev);\n+ blkdev->xendev.gnttabdev = NULL;\n+ }\n }\n \n static int blk_free(struct XenDevice *xendev)\n@@ -1334,9 +1345,7 @@ static int blk_free(struct XenDevice *xendev)\n struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, xendev);\n struct ioreq *ioreq;\n \n- if (blkdev->blk || blkdev->sring) {\n- blk_disconnect(xendev);\n- }\n+ blk_disconnect(xendev);\n \n while (!QLIST_EMPTY(&blkdev->freelist)) {\n ioreq = QLIST_FIRST(&blkdev->freelist);\n@@ -1363,7 +1372,6 @@ static void blk_event(struct XenDevice *xendev)\n \n struct XenDevOps xen_blkdev_ops = {\n .size = sizeof(struct XenBlkDev),\n- .flags = DEVOPS_FLAG_NEED_GNTDEV,\n .alloc = blk_alloc,\n .init = blk_init,\n .initialise = blk_connect,\n", "prefixes": [ "v2", "2/2" ] }