From patchwork Tue Jul 24 12:17:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leonid Bloch X-Patchwork-Id: 10542187 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A5DD514BC for ; Tue, 24 Jul 2018 13:42:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 66E2A289C0 for ; Tue, 24 Jul 2018 13:42:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 64AD628900; Tue, 24 Jul 2018 13:42:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 77DAA289F0 for ; Tue, 24 Jul 2018 13:42:00 +0000 (UTC) Received: from localhost ([::1]:40612 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fhxZf-0002L9-I1 for patchwork-qemu-devel@patchwork.kernel.org; Tue, 24 Jul 2018 09:41:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35685) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fhwGv-00052U-QI for qemu-devel@nongnu.org; Tue, 24 Jul 2018 08:18:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fhwGt-0006Gg-2a for qemu-devel@nongnu.org; Tue, 24 Jul 2018 08:18:33 -0400 Received: from mail-eopbgr690095.outbound.protection.outlook.com ([40.107.69.95]:30824 helo=NAM04-CO1-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 1fhwGs-0006Fd-PA; Tue, 24 Jul 2018 08:18:30 -0400 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=QOTnTEI5WY8h1EIyiPMUhFVAq6KZpXnFb3qLMCrOi3U=; b=Pv25aNvHVfXYakGuZuXkIrP6WXT/DPKSltXYIjhcmaUSmwKiVCPr5qIvuErwvdfNMlHpjmGPMkltDhBBuxARzywdvfL6EtxPs0YTnq07SoUE2OmCk69W4nFXhOl6utdMxdaOxwm3np8aYpg/D1o4bg+Tny4R1aWMkuBv0S2J+9w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=lbloch@janustech.com; Received: from Jupiter.local (141.226.29.227) by CO2PR07MB2614.namprd07.prod.outlook.com (2603:10b6:102:14::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.20; Tue, 24 Jul 2018 12:18:26 +0000 From: Leonid Bloch To: qemu-devel@nongnu.org Date: Tue, 24 Jul 2018 15:17:50 +0300 Message-Id: <20180724121753.5753-2-lbloch@janustech.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180724121753.5753-1-lbloch@janustech.com> References: <20180724121753.5753-1-lbloch@janustech.com> MIME-Version: 1.0 X-Originating-IP: [141.226.29.227] X-ClientProxiedBy: DB6PR0202CA0009.eurprd02.prod.outlook.com (2603:10a6:4:29::19) To CO2PR07MB2614.namprd07.prod.outlook.com (2603:10b6:102:14::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a5348bcc-f2f1-457e-d6c9-08d5f15f8fc3 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:CO2PR07MB2614; X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB2614; 3:DCxzyZDqn0DHLWqHT4VffFLzgvDdNzA2C8/LZ5Dlj0ynjhSuk/bxysHrXgPM+6GX3psjYFgm8OUsShfQK8xLJ9BwRIuqs3YazQZAue9z3KHH/ajuvxBLaEWQ+P9LfVukDRDk94Ux/tO4gB+P+1Oa92ef3I/jOBtDrYyI+E/7t43M8GOlApf5FoPdPqR4uQj3ZVvPoFD50Z0msvZcUIJcFEbYRnhK/4Q09dt82ulCSjLtWg5kpXcyz/cFVeJ9jTvy; 25:o1FXBbwhQSgPrfnYMWC6KRUOb6JjvW1CKPNBHyUbwlpcpkT0grTyPd9PnFwAZQZjMHnzo7rWD8VkiYc5+ve+RsKWwyWSQj8sEWhBLGTLsj+f43oiGg4iniIv5dhwkJNU0pVUSBljglqOoBHAAVUgZoVwbFPlr/GZRQAkr9ctFjrgoatTwsUhivWkNFWfLgkmId/nSDDIs6ELEUWhPzHMnOJqlUnELw/edfuydbU6NGjr/QFeESYNrK4CY4K+ezoHddktQkhW4S8HeR6lBvosgrX5/u8ExlBL94sYaTqSdc3OgEGFb7uXtw+xUmNDNzBbUd9Pl+b1Gwd5j7VLAiskqg==; 31:ThvxYeomBkmgFFkFINxx08/8goS0Y7hK66dsoXVrYF9Je1s1btPEKc7s36Gvu+DqMEWaUOwIeFF6+o+6acwsZsNEnCjE1wJw3BO9iYSfcDK3sAEs+v+kicGWDH6W1YE+JyW8Eor7xsVTIVi/7cUPvl5LgSY6e1YMnP/rUUbYEYWqCINYjgnhnxkzvIFIM6HhKvjNdttQfqwrg5TPKDYjTSIOOjUi/8n3gH0xOH7OwVk= X-MS-TrafficTypeDiagnostic: CO2PR07MB2614: 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)(3002001)(93006095)(93001095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(2016111802025)(6072148)(6043046)(201708071742011)(7699016); SRVR:CO2PR07MB2614; BCL:0; PCL:0; RULEID:; SRVR:CO2PR07MB2614; X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB2614; 4:yM1NO2i2VI5G2cAOagHFb5vDwF63AXwy0Z7Bk5HmlSao3onyg8ir4jktrNYLbGfR1YKEBD6NcRbsZ7Mo6YGdetvoFYc4ZqLpceq2CzgGa1Nhz7XBCay9+gszF++C8+BwKgCTwJRKppL2lzFEd3UnYuk0t9q+p61cVvL2aDr3qpnqsSlzoKAmMdtWL1fQ7NhKoHE9lyfqSqSlh/Ka545RgnOA143k58tq0JznIofZey/gdKEoPcpT7Y1CslH1K7d0wsu8pykMENde4GOJGMlbag== X-Forefront-PRVS: 0743E8D0A6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(136003)(366004)(376002)(346002)(396003)(39830400003)(199004)(189003)(6506007)(66066001)(6116002)(6666003)(86362001)(6916009)(2616005)(476003)(956004)(52116002)(47776003)(2351001)(3846002)(6512007)(478600001)(2361001)(5660300001)(316002)(106356001)(76176011)(16586007)(105586002)(50226002)(25786009)(4326008)(11346002)(54906003)(446003)(68736007)(51416003)(1076002)(7736002)(36756003)(48376002)(575784001)(53936002)(305945005)(16526019)(2906002)(186003)(8936002)(50466002)(6486002)(97736004)(26005)(14444005)(81156014)(81166006)(8676002)(486006)(386003); DIR:OUT; SFP:1102; SCL:1; SRVR:CO2PR07MB2614; H:Jupiter.local; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: janustech.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO2PR07MB2614; 23:a6+yU+cgxbasFtzLwUaVpWH7lgTe1nEx1WwviEE57?= p7jZ74acRxC+0GfyXP/1Riv3d5HpAppWdVhG6K59CzIdp5mCfAfD+7IRK0GB89PQa6qAMSyAOqDHI/U+UyI/2LpHCePrI2Ic8oKwy1yGmDlMQphT/XPcn/mUA/WWXsm8QxhAg0ioa2rqFW8UdbDlipF1cL3Gvc93LeSwOn7TP1X1awFytlc80vjHZNI8D15oavMO+ATzkGMnG12UPVNWmn5p5Nu1VjTWTlwNAojv3beoPmBwf3bHHwmi2hIDA1m/Jh9JUmFN733Y1D5x1F5/4dkxU5+zbHw4L2ka+BGUSlIG7bSpEFZ0AIOwoIMF98CQ2v8d0SCvz2V83qQd4tMfvFZvyl0BvJTPq6/08fvVq6keahjCu7TLFd2zuuR5c9Z+fKi3dzJ2074xw9mNZw6glIjQ7uKEQWKIKKl1vqlFZLY9kvi593Im91DJPtRE4cKDvLoTxhhii17KLNBZg2H6WDTUrrpBYvO/5By0uZpnZEm5XLOJZrmIiRuFOwBtVZbLyHHIifR+jPWA9TVkXaLoesAaFFNnnsxpo5qEcFSYGxIkHAXX/+87BQ+Pg3VlnjAOQ3ZRYxbUiUKsMG8FM7+LAJ+1XBBHzn0qqtfD6PNGeH/3MVbDk0AsSdtYN0JR9IHCsUZoUtCgS19PU2WWOtbW9iGjOMgshWcUzpH63pMhDklfKKAeRdwvHYLbY0Yp7lvWGaoP2zgeyXrPZ1XHq19DBmE1nwnXA2pTzk53IrUARNkrLcXnfrCTOoAAoWPsctsyUUJoYumZcMMnx1vpPauP6EIfK23m68gy/uhMT9zv3qMJlsq0iY2xA0T/CuvkwipKTzIoDDPEHvVwqZTntk9rvTwQU1Ooyjo4jE3/oCRUaPMbt+K18ZJwR9E2V9eAL2yMtvV4o4hkYohUuIHU6+Nd26RMpB8q9fQrkBji4vKygSoj5XFQoK+5NBCESbA5JjBBQB52dVctZ0I9zeSrgGD8WGwwznWXAaSzNr2r/5ayiA+k+mQZYLfuWbsEpLvNnR0+ROmtHo+igjXGwnv5gwnTPV6VOl1RgJZdt3kE2jnY3NBj4mc9yjGAWEL0OWoTYMpBscWAYGRfDgKDw3wKkm/c/wpyCjNjlRdASOE6ugNgH7s5c9eBC9LFa8onvONXNYmlK8AT1X1qLgG9OzJ8yUiLTO5RnjmBUPIPh6f09vxNN+4awhHgcjnzUQNPr7EzeNWpofJFTbkFxyaDpsIWTMKv2w+e4Rci6dh9gVnBHRPsdHOXQ== X-Microsoft-Antispam-Message-Info: qv+x44ATCU5f1BydIRtpIGDZBzl9r1jzwXvrkjYlA5l/wY+WJDLidTLDBgBmYlnFxrcxc3qqlWm8CtUtWZcbpwaCmDV9kAmnWv3oS/HHbFskndM9/JjpeXGtUmd1YEG6MGkgFG5BSo8sn/5ofqHJFoOSZ3ByyCeavlt4DY31Jvhqi8+29tjt0uB+QzyixVV7F1kj+RRL+xaDxXk3SRo4vIVIKmHvg/qJ1fbFoDzi6sgybGXezHPQpr91HttWuWmJxLVVp4EnajzOWXskNJoM0PO0bIrLrUiB4WW82GVEsnnhHrPyWUOCCamrLdxC8Td4l640A/u/P00yWp+cfSZvJdpFXKIdOFleUJE0xspfkSQ= X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB2614; 6:Oze3P8gU69Ew89oUFDNGvEL0N0aZ6EfOi6rDnmU+UHI4G5KR/+Ya4mD+NBCX2GfZzbW9j0bgeZb9sekgw8yU49tD69n+MYiSL2AD5FoA7bJLMaqyLTr4EMFD9yZipFufhtpF/+dKoEamB2JuMlOvG3uxbmX14vHBHpp/bpp19oc3MTQWHI0DoRMEPrXHuFhrM+bJG9wF1KRc/DbpawC1N5pbOg24q1wABog0ixbn1t4kHJAUzOrNyKfJR5+otwh6s31HHuSQ34PJwM0oa35H7RfUBgsfh1VeDY/GZoa8j2uwtRDvMDdfAJW/Tl90ecwgJmwmHrn9GMEYwGjkM2J3DPkkD9RuEJve/Dh9rVZdqG0QaLyYtn8N6lnrqKuz9XQzb6uraecYfr+8W5BOt8ZuqokZBNTTybrZygqjhX8u4vq8MMPszGRoJA86CuTOc3TKeG8jnJBlmRFVTOE8b9+GZA==; 5:RUejl7aPZmA2habBJV0Cqni9CdgfzpggnZfU9mNs7o6BANvTmuVPfPp22kD8acVEUHM7HayDdf8WiOdBEo4UcTQoBkavpwvljEY/JFV0quGc307KTiqXBc1WUpr4GhQklTewIp9vHln6B07RZSRU1sw27/TRYWud1OpiwXmrL5E=; 7:huvzKN88ckCrfGZNaYSbTA1EfXykkxwgMyvJhk+kqMYjSFQz+gw+R62rk2EZj9N/VHmCbNYDyLJVlz60boAmJ2GUgsCMPevCxSTM1J6OlR6gNCfIIiyyyXhbW5VACQk8bAD4FsvmDsH3QBQAXmnV7yjVJZoinQytDYoTEE/aQwYs8SHjODYCD/5o4POhjp6eLk63gooX6Y/fErMUSUr5Jo8wcdubao65GLeuwR8ICmfdUOKbq/LyP+befBgLoahd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: janustech.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2018 12:18:26.1144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a5348bcc-f2f1-457e-d6c9-08d5f15f8fc3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 34eb020e-3cf3-43a1-afeb-f5cf1310628e X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2614 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.69.95 X-Mailman-Approved-At: Tue, 24 Jul 2018 09:40:43 -0400 Subject: [Qemu-devel] [PATCH 1/4] 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 , qemu-block@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 | 37 +++++++++++++++++++++++++++++-------- block/qcow2.h | 1 + qapi/block-core.json | 4 ++++ qemu-options.hx | 4 ++++ 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 6162ed8be2..101b8b474b 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -695,6 +695,11 @@ static QemuOptsList qcow2_runtime_opts = { .type = QEMU_OPT_SIZE, .help = "Maximum L2 table cache size", }, + { + .name = QCOW2_OPT_L2_CACHE_FULL, + .type = QEMU_OPT_BOOL, + .help = "Create full coverage of the image with the L2 cache", + }, { .name = QCOW2_OPT_L2_CACHE_ENTRY_SIZE, .type = QEMU_OPT_SIZE, @@ -779,10 +784,12 @@ static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts, BDRVQcow2State *s = bs->opaque; uint64_t combined_cache_size; bool l2_cache_size_set, refcount_cache_size_set, combined_cache_size_set; + bool l2_cache_full_set; int min_refcount_cache = MIN_REFCOUNT_CACHE_SIZE * s->cluster_size; combined_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_CACHE_SIZE); l2_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_L2_CACHE_SIZE); + l2_cache_full_set = qemu_opt_get(opts, QCOW2_OPT_L2_CACHE_FULL); refcount_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_REFCOUNT_CACHE_SIZE); combined_cache_size = qemu_opt_get_size(opts, QCOW2_OPT_CACHE_SIZE, 0); @@ -793,15 +800,32 @@ static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts, *l2_cache_entry_size = qemu_opt_get_size( opts, QCOW2_OPT_L2_CACHE_ENTRY_SIZE, s->cluster_size); + uint64_t virtual_disk_size = bs->total_sectors * BDRV_SECTOR_SIZE; + uint64_t max_l2_cache = 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 time"); + return; + } else if (l2_cache_full_set) { + *l2_cache_size = 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 " and " QCOW2_OPT_REFCOUNT_CACHE_SIZE " may not be set " - "the same time"); + "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 than " + "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 exceed " @@ -809,14 +833,11 @@ static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts, return; } - if (l2_cache_size_set) { + if (l2_cache_size_set || l2_cache_full_set) { *refcount_cache_size = combined_cache_size - *l2_cache_size; } else if (refcount_cache_size_set) { *l2_cache_size = combined_cache_size - *refcount_cache_size; } else { - uint64_t virtual_disk_size = bs->total_sectors * BDRV_SECTOR_SIZE; - uint64_t max_l2_cache = 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 >= max_l2_cache + min_refcount_cache) { @@ -829,7 +850,7 @@ static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts, } } } else { - if (!l2_cache_size_set) { + if (!l2_cache_size_set && !l2_cache_full_set) { *l2_cache_size = 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..53c7d2efd8 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -2814,6 +2814,9 @@ # @l2-cache-size: the maximum size of the L2 table cache in # bytes (since 2.2) # +# @l2-cache-full: make the L2 table cache large enough to cover the +# entire image (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 # and the cluster size. The default value is @@ -2840,6 +2843,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 b1bf0f485f..be4d862795 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -758,6 +758,10 @@ The maximum total size of the L2 table and refcount block caches in bytes The maximum size of the L2 table cache in bytes (default: 4/5 of the total cache size) +@item l2-cache-full +Make the L2 table cache large enough to cover the entire image +(on/off; default: off) + @item refcount-cache-size The maximum size of the refcount block cache in bytes (default: 1/5 of the total cache size)