Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1307014/?format=api
{ "id": 1307014, "url": "http://patchwork.ozlabs.org/api/patches/1307014/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/21dd7e4b3673541d488d59a40e6580138c401a4b.1591801197.git.berto@igalia.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": "<21dd7e4b3673541d488d59a40e6580138c401a4b.1591801197.git.berto@igalia.com>", "list_archive_url": null, "date": "2020-06-10T15:03:03", "name": "[v8,25/34] qcow2: Update L2 bitmap in qcow2_alloc_cluster_link_l2()", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "88312e82181cce3ec277128970be7c5413bc9e98", "submitter": { "id": 65704, "url": "http://patchwork.ozlabs.org/api/people/65704/?format=api", "name": "Alberto Garcia", "email": "berto@igalia.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/21dd7e4b3673541d488d59a40e6580138c401a4b.1591801197.git.berto@igalia.com/mbox/", "series": [ { "id": 182563, "url": "http://patchwork.ozlabs.org/api/series/182563/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=182563", "date": "2020-06-10T15:02:49", "name": "Add subcluster allocation to qcow2", "version": 8, "mbox": "http://patchwork.ozlabs.org/series/182563/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1307014/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1307014/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 spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=<UNKNOWN>)", "ozlabs.org;\n dmarc=none (p=none dis=none) header.from=igalia.com", "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=igalia.com header.i=@igalia.com header.a=rsa-sha256\n header.s=20170329 header.b=cHEclqyC;\n\tdkim-atps=neutral" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 49hr972zLcz9sQx\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 11 Jun 2020 01:13:31 +1000 (AEST)", "from localhost ([::1]:49114 helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1jj2Px-0006tD-4A\n\tfor incoming@patchwork.ozlabs.org; Wed, 10 Jun 2020 11:13:29 -0400", "from eggs.gnu.org ([2001:470:142:3::10]:36158)\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berto@igalia.com>)\n id 1jj2Gy-0002lB-6Y; Wed, 10 Jun 2020 11:04:12 -0400", "from fanzine.igalia.com ([178.60.130.6]:58233)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <berto@igalia.com>)\n id 1jj2Gs-0006wT-E3; Wed, 10 Jun 2020 11:04:11 -0400", "from [81.0.38.199] (helo=perseus.local)\n by fanzine.igalia.com with esmtpsa\n (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim)\n id 1jj2GR-0007hB-Oc; Wed, 10 Jun 2020 17:03:39 +0200", "from berto by perseus.local with local (Exim 4.92)\n (envelope-from <berto@igalia.com>)\n id 1jj2GC-0007NZ-Dd; Wed, 10 Jun 2020 17:03:24 +0200" ], "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;\n s=20170329;\n h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From;\n bh=cG/kSuGs/5TWLvRsT9afV2CDEwmEMC+5Mg1THYxNdFE=;\n b=cHEclqyCz5UubdNWqPzhokV90FUGITEQsQUYdfx62aBJIKtOqjyRmuSLoAZdS4IhSsyHNNOxmpWVNT8n/o/bxxGCZFCQucRg3YcrapjGZifkexz/awnbbafDyKPDB4H/eZ09o0eI1fPEsfvh2wzfitueuyWbbDdh4TsCkv8Di9/xM4+zImxWwCLWG9BmdaBEFWBrG+gChX/m4OSq6JobgHJKSi98wbo9VcnscmYYf5aYCxjsfTJNahoeQwLD+HeP+WpnwTJJjgEvlwXMdWsIIJV9+8WVkyx5nDCyTKwbpJZnG4+rhj9gcgVYwn6WiCqjWd5Ihxf5omZNlHTlIRirww==;", "From": "Alberto Garcia <berto@igalia.com>", "To": "qemu-devel@nongnu.org", "Subject": "[PATCH v8 25/34] qcow2: Update L2 bitmap in\n qcow2_alloc_cluster_link_l2()", "Date": "Wed, 10 Jun 2020 17:03:03 +0200", "Message-Id": "\n <21dd7e4b3673541d488d59a40e6580138c401a4b.1591801197.git.berto@igalia.com>", "X-Mailer": "git-send-email 2.20.1", "In-Reply-To": "<cover.1591801197.git.berto@igalia.com>", "References": "<cover.1591801197.git.berto@igalia.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=178.60.130.6; envelope-from=berto@igalia.com;\n helo=fanzine.igalia.com", "X-detected-operating-system": "by eggs.gnu.org: First seen = 2020/06/10 11:03:39", "X-ACL-Warn": "Detected OS = Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy]", "X-Spam_score_int": "-20", "X-Spam_score": "-2.1", "X-Spam_bar": "--", "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=_AUTOLEARN", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.23", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://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 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "Kevin Wolf <kwolf@redhat.com>,\n Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,\n Alberto Garcia <berto@igalia.com>, qemu-block@nongnu.org,\n Derek Su <dereksu@qnap.com>, Max Reitz <mreitz@redhat.com>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "The L2 bitmap needs to be updated after each write to indicate what\nnew subclusters are now allocated. This needs to happen even if the\ncluster was already allocated and the L2 entry was otherwise valid.\n\nIn some cases however a write operation doesn't need change the L2\nbitmap (because all affected subclusters were already allocated). This\nis detected in calculate_l2_meta(), and qcow2_alloc_cluster_link_l2()\nis never called in those cases.\n\nSigned-off-by: Alberto Garcia <berto@igalia.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\n---\n block/qcow2-cluster.c | 18 ++++++++++++++++++\n 1 file changed, 18 insertions(+)", "diff": "diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c\nindex edfc8ea91c..2276cee6d6 100644\n--- a/block/qcow2-cluster.c\n+++ b/block/qcow2-cluster.c\n@@ -1061,6 +1061,24 @@ int qcow2_alloc_cluster_link_l2(BlockDriverState *bs, QCowL2Meta *m)\n assert((offset & L2E_OFFSET_MASK) == offset);\n \n set_l2_entry(s, l2_slice, l2_index + i, offset | QCOW_OFLAG_COPIED);\n+\n+ /* Update bitmap with the subclusters that were just written */\n+ if (has_subclusters(s)) {\n+ uint64_t l2_bitmap = get_l2_bitmap(s, l2_slice, l2_index + i);\n+ unsigned written_from = m->cow_start.offset;\n+ unsigned written_to = m->cow_end.offset + m->cow_end.nb_bytes ?:\n+ m->nb_clusters << s->cluster_bits;\n+ int first_sc, last_sc;\n+ /* Narrow written_from and written_to down to the current cluster */\n+ written_from = MAX(written_from, i << s->cluster_bits);\n+ written_to = MIN(written_to, (i + 1) << s->cluster_bits);\n+ assert(written_from < written_to);\n+ first_sc = offset_to_sc_index(s, written_from);\n+ last_sc = offset_to_sc_index(s, written_to - 1);\n+ l2_bitmap |= QCOW_OFLAG_SUB_ALLOC_RANGE(first_sc, last_sc + 1);\n+ l2_bitmap &= ~QCOW_OFLAG_SUB_ZERO_RANGE(first_sc, last_sc + 1);\n+ set_l2_bitmap(s, l2_slice, l2_index + i, l2_bitmap);\n+ }\n }\n \n \n", "prefixes": [ "v8", "25/34" ] }