From nobody Wed Nov 5 05:08:43 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1532462998577955.1217530870694; Tue, 24 Jul 2018 13:09:58 -0700 (PDT) Received: from localhost ([::1]:42441 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fi3d7-000324-Gr for importer@patchew.org; Tue, 24 Jul 2018 16:09:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46050) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fi3Xf-0006wP-W2 for qemu-devel@nongnu.org; Tue, 24 Jul 2018 16:04:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fi3Xc-0007jF-PI for qemu-devel@nongnu.org; Tue, 24 Jul 2018 16:04:20 -0400 Received: from mail-eopbgr730111.outbound.protection.outlook.com ([40.107.73.111]:36057 helo=NAM05-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fi3Xc-0007iQ-EK; Tue, 24 Jul 2018 16:04:16 -0400 Received: from Jupiter.local (141.226.29.227) by BN3PR07MB2611.namprd07.prod.outlook.com (2a01:111:e400:c5f0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Tue, 24 Jul 2018 20:04:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janustech.onmicrosoft.com; s=selector1-janustech-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lltVd78H13sajxFve+kaxziGMntBkhRQikAArA7wzlw=; b=cHjKOrlG64/sNN+t4zSXhgJgyWiM8aa3EzNCBjk+hsfs41+CYmDnodQbpuIIUpk7mVrXoR+28breWAN5J7JnO/KEVqlVCBqhHDhaYnllT928/BnjXmj21+m+DLuhAq/kT3LiLaiDNRQij3QG0HPJKSnc7k49EGDD5Xt/UPqRaAU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=lbloch@janustech.com; From: Leonid Bloch To: qemu-devel@nongnu.org Date: Tue, 24 Jul 2018 23:03:41 +0300 Message-Id: <20180724200343.13733-4-lbloch@janustech.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180724200343.13733-1-lbloch@janustech.com> References: <20180724200343.13733-1-lbloch@janustech.com> MIME-Version: 1.0 X-Originating-IP: [141.226.29.227] X-ClientProxiedBy: AM4PR0101CA0066.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::34) To BN3PR07MB2611.namprd07.prod.outlook.com (2a01:111:e400:c5f0::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f0dd2de0-8e5b-4032-d239-08d5f1a0a17c X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(7021125)(8989117)(5600073)(711020)(4534165)(7022125)(4603075)(4627221)(201702281549075)(8990107)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020); SRVR:BN3PR07MB2611; X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2611; 3:XI2XY8H0VcjwyCQsMhuBq7PFoQgXq61ckFC0BL4B5J318/EFVVDYV2k9bWb0f1FirFb2FzFBDOBm/+TOWyl3uHqRiigT//VPl6dbBNOyWWSvMOnBR2EzZcB8xzegGvZsCpFtGciXm2q51LmhIUEfqLu+8RzUgvBU4GR5HCEn+DYo9oLPlxtuAdfLERVqlJuO8P7Z9y/xkDPtKjC8BQLBNfL5Q3NMTWBOSdVW21dKltJ8cYpfeQrNHgAbvW1PiZQ+; 25:OLn7WT/U/OugYGO74Hcj8wrkfKJfJ+YUH0bfa1+mrjwTaeaF7+lSRMWFNC4C0preq9Xm7Wipcb2F9DELIe3ziypIlDLhGDsQap9bBq7BD2u96MwYsVh/WI4ooTwiPb86fjBJy6BEpWg3ry2eLJGqfCcQZ2rHDJPxHL9l4CTxVZLxxFrMVeWS+vFc+c5HIMGVzRuZzSypVS91L6qyby6tZI1mY3vCn/tAPu9dE+3xAkFr0/sSPBBy92DmKcycI2pixvmsV8Y3GIqR8nhGJCfHVYguaO6xiy+g4xOQU4j6tzl+2cqNWJdM82EaEmQfUQl8tGPETMhXUNiVm+/l+yTMMA==; 31:ThX2XJ0xcWEaFQSFpqHZ5uzQRAOYICaUtXsBhb8lAmoV613ikp1pUU9F+3TRcX7XyCSAl4LkwSsjT30hj7eXhhBqGEqGcg44Mgn+NgLgdkamVWlZ19I3hiGl2fsrNFql7sBQfhLXS6RHcaNwkt2S79rEzT/+OTzL1ciCwMXOF0a7Qgp7KTHNi06cUsEvSF1pH4cyCFUewbH1NY0Pdc15YCRjrjOJtUlLlU5hhcC4trE= X-MS-TrafficTypeDiagnostic: BN3PR07MB2611: X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(2016111802025)(6072148)(6043046)(201708071742011)(7699016); SRVR:BN3PR07MB2611; BCL:0; PCL:0; RULEID:; SRVR:BN3PR07MB2611; X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2611; 4:dXG9xZ/Vm/1l4vHAV9iZki+nkzjQWr61Kq1DfqBx6lMVZMwW0sPL2BELqam52pSJHGhXi+iMtS5gE7FNMk8XnVtjObppJG2g/YPV4faCPxDP8j0nBnX6nNMEfQOdKhWwknmYtrI7+GXZG+5xxdp+Iwd2jUbx5gf4caCFQB7a1Brt8FIWHy08QGJYzIXZN06QFEZYYPRs2RBsd8Pf4rh/XIqXUpnu/KXWbkUqpUNiPLMl2DjkVJBm4w+/yBWxztlD1Fq9sVzEmSPnf+jHzAvsTw== X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(346002)(366004)(376002)(39830400003)(136003)(396003)(189003)(199004)(486006)(2351001)(50466002)(48376002)(6486002)(107886003)(6512007)(4326008)(53936002)(25786009)(476003)(956004)(11346002)(2616005)(68736007)(6666003)(5660300001)(16526019)(105586002)(446003)(106356001)(97736004)(2906002)(305945005)(386003)(6506007)(76176011)(36756003)(8676002)(81166006)(81156014)(26005)(316002)(478600001)(52116002)(51416003)(1076002)(54906003)(50226002)(8936002)(47776003)(6916009)(3846002)(2361001)(6116002)(186003)(7736002)(86362001)(16586007)(14444005)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN3PR07MB2611; H:Jupiter.local; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: janustech.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR07MB2611; 23:aQwImpbX4ZVWUWosv3jgDH3jME/aJ1aE8OjJ8Btid?= =?us-ascii?Q?kEjVocsS/3Tdd1/0+pxbYwS/NwxwquqWhP8dytU4D89947HUWqn9/O7WPDmS?= =?us-ascii?Q?wYXEZhOm5J/WYgAwnKyEymMxdLzriP8AgKchFpYKA59KRU+9R5nbM1dLJulE?= =?us-ascii?Q?LRCwJPcApE1BJ6b3YCMWoCCklcXGsbWCF5sFUDpOGnZmm/Xuoz/R3O0U99Xv?= =?us-ascii?Q?TXjZmLj9QmdUKxt97u6x0kM+4R5K/Yp0i+PpggYV9GXUHSVM7u2HH2eRNux3?= =?us-ascii?Q?qrirM4dSRJ/g4ZCx7b8Q6z+VZV9WOlkM9y4e95AB/365UzKFYhoVBX7yibed?= =?us-ascii?Q?t9Gq8AQXHnI0Hg2GsZRg/Y9eXjVpaAY30B6PcMVmTk3yjrsSlrRH/lcN4dCy?= =?us-ascii?Q?2/3RbrmDZTBUs55TbGyHG1i8kMO2dg57q6KVdmNlP402Sv8Z7qywrJaV+r3L?= =?us-ascii?Q?SqXoKCSJ9Y1KHg3dqnUAu2rvj7hAAdR6eAqiV4OPOKD0/tmFoQYyabSZtsMQ?= =?us-ascii?Q?M4Du8vRu8c04A9jeg11vnrbMTDqwivPAWdlwWWFUFuiGIhxuEHAYQBGnjRd9?= =?us-ascii?Q?wkKYLGxN4X/tdlNx/9GuxgEGFMOXD38/6jBYx3DG4WbZEUsRI0cgu35HBcc7?= =?us-ascii?Q?M5hg86yLpAvXBVKHVq/ZcKgjc1bGCPoi/jWOEh37wDDY+dFyfiSmrv+dDIrK?= =?us-ascii?Q?xQSnmFjPHxxYRvcVu+kMlgUvFhEUYtApLqWtHKJANYVHi18SBh2Sw8usPFgs?= =?us-ascii?Q?v0VMA3cJTufvcBcW2BUajm2gNCQnOhHIF6k3/CNstUR/VtmepnYVml234Zik?= =?us-ascii?Q?yS01oPsO9NMT0+VN6dORGZnsVjKoUnhGrC3U/sI7PkKFGZE4RYQlzRAevASr?= =?us-ascii?Q?bCnyLetdjTJedt2mZa1h0eAzHgBcRK5hPzWH8gLVBCBTB4qIkhqyrJjhsDVr?= =?us-ascii?Q?Uwkisow1rhQ/7OiPlALHZ4RT/784vMYuG5DrdiZJFLlBZg5ZDJ4PmxVAoX1i?= =?us-ascii?Q?7bkbz/qhef5SVYlj/1mi29CqpDFQP3h9MSVJTRi5QUiVGP8P4+hY61GOWfEU?= =?us-ascii?Q?spsLzUl4k/uCinGJrHw6ArrCQWBmpbJNSsWiUT2Zm8wGr04fR7p5lPBUOo/5?= =?us-ascii?Q?bQe/J7Jof/b2n5gNVnwsvPOyUcGUFcxHKTTm2klzY1cB0Ur+iB77r5N0Y9YU?= =?us-ascii?Q?Yk/T9kgLl7A6DxSpB++6dVDY0KoD1JRhr14IeC1pGJ7QaXma2zL2uu8HHkUJ?= =?us-ascii?Q?otbC0G4q/wLCXKH356DZgDep1b2Kze9DaR6sYe4bENdN/h1ojtuer23zOtjX?= =?us-ascii?B?UT09?= X-Microsoft-Antispam-Message-Info: W7YV0w8inS0P6N39mXPA/ReUAvoUJtLZZm/rPgfibij0r0mT7kT3NsyDaEhgil3aSlOwuSjRZpNSz4UcNx1KTqmVslIMnbKiUyKX4l6U56cu2vrftfN8ZCciHNvHtvWigBi+YCX9BfJwgkT/qOkROB2OngZO+b6B8RdtfN7dM262DcV46unlt0lljuxYbKpi0a/082VI5M0qthQYfBpQCK+WkMBtc5JPSAuJhbqMcbDHzl8copQs3Q1gqkcavrJboePqsQgAfg1D0tDXgvnexj32Q90seNmISnLvJFWF4QQcJ8FG5721lrwSDPqrZuHvDM4SK3qVD0ecqj3/ZzXcKgvjoPsFw1eDI0MDTj2PjdQ= X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2611; 6:ysa7jDv52hY+N2YOeVtHAozzEA2c2M+zkP6EUBAklH581BdyKT/6odG3gCYS6+NYxeSpmQPI4quteovTIubSjaP9tiXs1Uo1bVWSkUBRr68h5RETOZ6ZRivpokse1pn4Lu0pf0VaLyNSJdWZdZaq50xweH6SA8+chP/SxBTOXF8grzgZwl5VZ8KKQcCsbJZuSPczj3nSPIwfrYRr74QRm3fSqFZDYl7uFj6wfgSVm5h5sCSgVDljRm4F/4/rtrsTnQouRh0ttX+e8qnWzHiDyZtfuASPuAXqqpwPahC4ptbCG56fwtb1OJjva5U71UorrYq91RBhi9N+7qOZaKglfZ22JojhhSH+zbtv9HEykJ1ZanoHZRw6i/ocwyIUCjME1XoYYdpdFsRXqCChmvM6wyCL3u/+vVE0QAxbhWV5oTRrVo9PMepowj/QwON6W6KBVetJj3BY9Qx/K8aR12KPiw==; 5:G/gpAApWhjPx19EJ6ieEP3vAcRKBPOEaimrxttFBWCsr1ckYjxeDCy0+1ue7micdIPjKxqPBbVsjPx0LvYgOlmCC5+4TcpbmAg7v0YG0qXQ4KBtbGI6J7sOBEx9KA/p3KS0rtL7QaXCzXUHJdWVlvfGzevdUyxP30aQaijR44tI=; 7:iuz9+7vIUAl3UNrgLWa0QZExPsqQSw36l6WDGAr3RowOVIqSjPPWex0w4OdDCdoHLDVXr+FeTU3XD8vy+pAyn4mkDta80wZJcpyRzVtGq7DpP1Ky6iTCK7YNSTgx7zz7+yYon4UQqwMS0wP7Yovmmyd/zuWIs8RA83K24R1LagKEtGVjSfHfnzZTJoV0OQrRYa8DTB1IAt7F6b/DTXZCzQG/1J5xeXqFQb+7qpXKwhzcvgQSow6CuMy1CrROOs1q SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: janustech.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 20:04:13.3123 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f0dd2de0-8e5b-4032-d239-08d5f1a0a17c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 34eb020e-3cf3-43a1-afeb-f5cf1310628e X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR07MB2611 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.73.111 Subject: [Qemu-devel] [PATCH v3 3/5] qcow2: Introduce an option for sufficient L2 cache for the entire image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Leonid Bloch , qemu-block@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" An option "l2-cache-full" is introduced to automatically set the qcow2 L2 cache to a sufficient value for covering the entire image. The memory overhead when using this option is not big (1 MB for each 8 GB of virtual image size with the default cluster size) and it can noticeably improve performance when using large images with frequent I/O. Previously, for this functionality the correct L2 cache size needed to be calculated manually or with a script, and then this size needed to be passed to the "l2-cache-size" option. Now it is sufficient to just pass the boolean "l2-cache-full" option. Signed-off-by: Leonid Bloch --- block/qcow2.c | 35 ++++++++++++++++++++++++++++------- block/qcow2.h | 1 + qapi/block-core.json | 8 +++++++- qemu-options.hx | 6 +++++- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index ec9e6238a0..101b8b474b 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -695,6 +695,11 @@ static QemuOptsList qcow2_runtime_opts =3D { .type =3D QEMU_OPT_SIZE, .help =3D "Maximum L2 table cache size", }, + { + .name =3D QCOW2_OPT_L2_CACHE_FULL, + .type =3D QEMU_OPT_BOOL, + .help =3D "Create full coverage of the image with the L2 cache= ", + }, { .name =3D QCOW2_OPT_L2_CACHE_ENTRY_SIZE, .type =3D QEMU_OPT_SIZE, @@ -779,10 +784,12 @@ static void read_cache_sizes(BlockDriverState *bs, Qe= muOpts *opts, BDRVQcow2State *s =3D bs->opaque; uint64_t combined_cache_size; bool l2_cache_size_set, refcount_cache_size_set, combined_cache_size_s= et; + bool l2_cache_full_set; int min_refcount_cache =3D MIN_REFCOUNT_CACHE_SIZE * s->cluster_size; =20 combined_cache_size_set =3D qemu_opt_get(opts, QCOW2_OPT_CACHE_SIZE); l2_cache_size_set =3D qemu_opt_get(opts, QCOW2_OPT_L2_CACHE_SIZE); + l2_cache_full_set =3D qemu_opt_get(opts, QCOW2_OPT_L2_CACHE_FULL); refcount_cache_size_set =3D qemu_opt_get(opts, QCOW2_OPT_REFCOUNT_CACH= E_SIZE); =20 combined_cache_size =3D qemu_opt_get_size(opts, QCOW2_OPT_CACHE_SIZE, = 0); @@ -793,6 +800,17 @@ static void read_cache_sizes(BlockDriverState *bs, Qem= uOpts *opts, *l2_cache_entry_size =3D qemu_opt_get_size( opts, QCOW2_OPT_L2_CACHE_ENTRY_SIZE, s->cluster_size); =20 + uint64_t virtual_disk_size =3D bs->total_sectors * BDRV_SECTOR_SIZE; + uint64_t max_l2_cache =3D virtual_disk_size / (s->cluster_size / 8); + + if (l2_cache_size_set && l2_cache_full_set) { + error_setg(errp, QCOW2_OPT_L2_CACHE_SIZE " and " + QCOW2_OPT_L2_CACHE_FULL " may not be set at the same ti= me"); + return; + } else if (l2_cache_full_set) { + *l2_cache_size =3D max_l2_cache; + } + if (combined_cache_size_set) { if (l2_cache_size_set && refcount_cache_size_set) { error_setg(errp, QCOW2_OPT_CACHE_SIZE ", " QCOW2_OPT_L2_CACHE_= SIZE @@ -800,8 +818,14 @@ static void read_cache_sizes(BlockDriverState *bs, Qem= uOpts *opts, "at the same time"); return; } else if (*l2_cache_size > combined_cache_size) { - error_setg(errp, QCOW2_OPT_L2_CACHE_SIZE " may not exceed " - QCOW2_OPT_CACHE_SIZE); + if (l2_cache_full_set) { + error_setg(errp, QCOW2_OPT_CACHE_SIZE " must be greater th= an " + "the full L2 cache if " QCOW2_OPT_L2_CACHE_FULL + " is used"); + } else { + error_setg(errp, QCOW2_OPT_L2_CACHE_SIZE " may not exceed " + QCOW2_OPT_CACHE_SIZE); + } return; } else if (*refcount_cache_size > combined_cache_size) { error_setg(errp, QCOW2_OPT_REFCOUNT_CACHE_SIZE " may not excee= d " @@ -809,14 +833,11 @@ static void read_cache_sizes(BlockDriverState *bs, Qe= muOpts *opts, return; } =20 - if (l2_cache_size_set) { + if (l2_cache_size_set || l2_cache_full_set) { *refcount_cache_size =3D combined_cache_size - *l2_cache_size; } else if (refcount_cache_size_set) { *l2_cache_size =3D combined_cache_size - *refcount_cache_size; } else { - uint64_t virtual_disk_size =3D bs->total_sectors * BDRV_SECTOR= _SIZE; - uint64_t max_l2_cache =3D virtual_disk_size / (s->cluster_size= / 8); - /* Assign as much memory as possible to the L2 cache, and * use the remainder for the refcount cache */ if (combined_cache_size >=3D max_l2_cache + min_refcount_cache= ) { @@ -829,7 +850,7 @@ static void read_cache_sizes(BlockDriverState *bs, Qemu= Opts *opts, } } } else { - if (!l2_cache_size_set) { + if (!l2_cache_size_set && !l2_cache_full_set) { *l2_cache_size =3D MAX(DEFAULT_L2_CACHE_BYTE_SIZE, (uint64_t)DEFAULT_L2_CACHE_CLUSTERS * s->cluster_size); diff --git a/block/qcow2.h b/block/qcow2.h index 81b844e936..151e014bd8 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -97,6 +97,7 @@ #define QCOW2_OPT_OVERLAP_BITMAP_DIRECTORY "overlap-check.bitmap-directory" #define QCOW2_OPT_CACHE_SIZE "cache-size" #define QCOW2_OPT_L2_CACHE_SIZE "l2-cache-size" +#define QCOW2_OPT_L2_CACHE_FULL "l2-cache-full" #define QCOW2_OPT_L2_CACHE_ENTRY_SIZE "l2-cache-entry-size" #define QCOW2_OPT_REFCOUNT_CACHE_SIZE "refcount-cache-size" #define QCOW2_OPT_CACHE_CLEAN_INTERVAL "cache-clean-interval" diff --git a/qapi/block-core.json b/qapi/block-core.json index d40d5ecc3b..c584059e23 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -2812,7 +2812,12 @@ # refcount block caches in bytes (since 2.2) # # @l2-cache-size: the maximum size of the L2 table cache in -# bytes (since 2.2) +# bytes (mutually exclusive with l2-cache-full) +# (since 2.2) +# +# @l2-cache-full: make the L2 table cache large enough to cover the +# entire image (mutually exclusive with l2-cache-s= ize) +# (since 3.1) # # @l2-cache-entry-size: the size of each entry in the L2 cache in # bytes. It must be a power of two between 512 @@ -2840,6 +2845,7 @@ '*overlap-check': 'Qcow2OverlapChecks', '*cache-size': 'int', '*l2-cache-size': 'int', + '*l2-cache-full': 'bool', '*l2-cache-entry-size': 'int', '*refcount-cache-size': 'int', '*cache-clean-interval': 'int', diff --git a/qemu-options.hx b/qemu-options.hx index ef0706c359..6d417cb267 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -754,7 +754,7 @@ image file) The maximum total size of the L2 table and refcount block caches in bytes =20 @item l2-cache-size -The maximum size of the L2 table cache. +The maximum size of the L2 table cache. (Mutually exclusive with l2-cache-= full) (default: if cache-size is not defined - 1048576 bytes or 8 clusters, whichever is larger; if cache-size is defined and is large enough to accommodate enough L2 cache to cover the entire virtual size of the image = plus @@ -762,6 +762,10 @@ the minimal amount of refcount cache - enough to cover= the entire image; if cache-size is defined and is not large enough - as much as possible whi= le leaving space for the needed refcount cache) =20 +@item l2-cache-full +Make the L2 table cache large enough to cover the entire image (mutually +exclusive with l2-cache-size) (on/off; default: off) + @item refcount-cache-size The maximum size of the refcount block cache in bytes (default: 4 times the cluster size, or if cache-size is defined and is lar= ge --=20 2.14.1