From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330214447454.389003382022; Thu, 1 Jun 2017 08:16:54 -0700 (PDT) Received: from localhost ([::1]:45186 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRqF-0001OP-4k for importer@patchew.org; Thu, 01 Jun 2017 11:16:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRoW-00007x-BM for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoT-0004dx-MO for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:04 -0400 Received: from mail-eopbgr40133.outbound.protection.outlook.com ([40.107.4.133]:34349 helo=EUR03-DB5-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 1dGRoT-0004d9-Ez for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:01 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:14:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=R6OsZaFn3fMyP2vGisTaaNuZkn08zGXonnG1vwAk5Nk=; b=ExQ1MY0k/6056XQi5yva6o34BjIkZ65xCi3Q90vEcyDhTzg3IkYlVFNbICFUuZJbFGAmYpwf3eDeqM+h1ii7ttUeDXtaOoGiDtYUH0aJ+zETPkfC02sotVBPsnw3lexfzgyKPd1ETBCYD6E2Am0wa93fNI9UueWza4OXMLyvmb4= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:19 +0300 Message-ID: <1496330073-51338-2-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 7b864e92-c93d-43eb-774b-08d4a900f792 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:5mkBa71V4t71rsyLhArYYbs1hGYPXMhShve9xwWoI0YEBLXhd3I/uY/vZc5WGRiNq7lk1w7UMyAcMAk4h9yBabvqP48HoFyFrmXLbDkBZqfg6tXlcnmzt+jAXvec0iB8PFj4eBQTXr86eu+sur6WZ8uFE5VknGkYGf50XByxqCYG5jJnaFp135H+AkEVIkBQj3Pw1lJ2GJgH0rVgiNYC1bZNkFzoiYweIaf/gNZyZ/KtSeegWbfhozBcYGCei6u6QYo5IkEpXhRRW+5/opkCOdMrJfOShK6DjPoTxFq5O0AmsqCYLWVrApO1lriqAIJJUX7tDsKTpxAyDXPDuLiEDg==; 25:88Ak7KHaeo9rn51lDGKWGMJPCPvgHt9DV8Ud2neLWvosJylrA2NAXIvMFHooYW4339lZKxAi1wLqQuGiGNrzpN9uYb81JqZ8PWnya6KI2elgqxFNS8AghhID4AqSXKm7HjlLptpCHMu3s3i2fL47pTiMhYN0h26QcxgcAcWb6CIbk9vzoFHC5FIKhS40teBfuNZnUxJInRGL8N0KUpFhfg1jJnQ+8jtCvza55f3sla09yyzUPsvFWfbibMMY+6sZwlAkwPpLwcMhEvzEz8YqkCXfq69UJw9Y3xWT0E1RO8tFX/KX948nXelMw6jdqh/+5+5RSPrsPJH3pTB5K4onC3FbBufK2dknr8vB58sLTZLk8pt2t07iAQKm4cMAbrU2DcB7OItArGm0i2yY4y7yHKiirgmy4EixE6fENMTtPS01e/EfyljQ0yL+bwS8DalTI8adEUYIDiDabeEE17+8eaGXTmrjN7cY1ww7HjU5usI= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:8UC+SXSeES71DnTIfMQ6UXA88hIEr87x1nyuCIis80YjOrj1Vp79INkE5411rZPHD8h+j28bHtlW/K1vJn4cqJTGcGD3u75OE+hI26qkERPxSgqYgrIg1Uu5iUUeTJacAJ26JIH17UKEurMjeg7Bgvd0FIpiP5y+5S0Vcp4yhV6kPkq/ZXoU8YdcC+J0Netj50otdGfSm9DBxO9uTuRGvqAmptdB0ySYC/3QVT31D8Sh9as7jz4zpQhJInonBcQuCgzl9EVDQtHCdNaUepAG8w==; 20:i0JMO8jedvU1uhWQE4q0pYXe0dJ+Kqwioo79jchtByQ+H+6uJuBwrld0uhGVTpQrNkLUqks+paw1bwXAlauAtuAa66R26gYb41/zZl9KRGWx/U5RtTcEZZAJ+V2YvT7mUnv6bCbRJXeJpnvs3Y+sheTCI/KMn7c7ltcEVXjZfBm896Yad6Q4azs1SqZpAIa2O4M4diShnjrTeMSlay1NxSUnC/9qfHRwnYnedKtLQkF1sjAhD5mb7QNtakKO3cvYj2/6JdPYkPwyuUcCMW7L79EGwJYcU3lS+7IhAyKlzpG9HciQdpw15sLWVjBvThnKa74yIbQ0i0G/OgH+ZIEoQDUdxVE8kmopdZiO6Te39QM0hmxDMEHyN7Z1ayspUxq2Zs3XnvkUC09+Gexnb2vZUUJTWKTf2xx/VrLiRGIdYMs= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:NQq1RYPFhBrs1nDuJ1y9hOqzDzjD2Pk0vrIzr+WN?= =?us-ascii?Q?3Ogj15bpqwSVbdPoIbk7I1+kOCxSh88AKfwq3NzUB/P0/bLSGCRdjbraM5ke?= =?us-ascii?Q?CTJIqLmRp8yRcLXafAU4/I+ztL4qIIA3tSheHnS20OnGr4mIuO0TfOvLbZeo?= =?us-ascii?Q?DYkobxr/OPMu7Dx4G6iBGHfvdbv7oqay9Nnt127VmiEYfVUwq3l+HHOXqMda?= =?us-ascii?Q?vQWIWAyMwtJDltdtmX0agzYWg+X9R4anWu307P2bFSfOVtJ4+pna8CN/5oF9?= =?us-ascii?Q?aEoRdbiFmtQAtcZunhy6nk6nPWhaeX4YfEJPO/ty9g2ZrCH6JZOw7/HS4DZr?= =?us-ascii?Q?0rllOA6yU8h8ddGcW5eHREGMri8ZwB4R1cAbA6Y831bsZ+cSRTZtF4lRLr0k?= =?us-ascii?Q?xFAEDZ75HzNJPDxRKhPmoy0wNzSN2/ilAPpRqNIoSnXFYHttj5a1Oz7eX2mj?= =?us-ascii?Q?IzKFz/yj9X2eAHB5T+SoaT6Y3Dz7qjJJ4EHRunHkJxB3sTB/kQie2baXJGwk?= =?us-ascii?Q?XQcbtoc3PaC5UPNpdgdUvxJVUVGQwGK7etjvXX7M2htvSBNbH+KKpwCoJ4iu?= =?us-ascii?Q?ZBQZxvCV8sNH8auzwo1NeKIC62oSv3sWN8fqRx3470EleJxDlnxYko533+As?= =?us-ascii?Q?2f1S3xA2s4Q1yZnjhx75jjVOqcfbZ+kIqzuzEAO5kOnBhDkTnm6bzlOyzCVt?= =?us-ascii?Q?ITDF4O+2MrgCSf3KXghIcqBD+t/JquJQ9dG8hdcp3/dxSJf5dkZFARyUtGbW?= =?us-ascii?Q?WCyhchpupS6E1UOGmodWcM1HSdCoej0IF+ae8i8Azp03WU5MumilS454DaKt?= =?us-ascii?Q?YDVI5QocEUVXXTVZ3tbTvFnxYhDkCMtGlyoUFKNFK9TS9ZeeiLQ00w2OQyK9?= =?us-ascii?Q?7Ye+6IpT4TLMxVKroa5zW0mQA2t/U+5Jgr8xAvLzLtwCGSsA6gMQZtrsp1EU?= =?us-ascii?Q?mUpec3uVmXFuETh7fYPQ5UyOj9DareWimQkMr7iBXPOn5SIyLYmgZLQuSaKH?= =?us-ascii?Q?u3iad4feUbICRMZRRhCvRXMlm/4NWXvFTDvmBB1FKmr4kXN/V7IjiR3Wd6cK?= =?us-ascii?Q?3+dqWSuXlYV2t9cfraCuOKs9vqlsiKMv98uUytdUPOIc08ocQQ7Bz4O2ndMq?= =?us-ascii?Q?ctbcUx+AU/zay2u+WIsS62gZVUyyR5OQ?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:ZmVmLIHNA82oUQM1ECtCnmZhUKpGLbk8tj5v4mF?= =?us-ascii?Q?FYU2In41wuASSMtnL0HTcmtl0MWdo7QyER9zIVZMeoJau5O9W+/k4IebjgFR?= =?us-ascii?Q?LS8EI0K1pt77GMfG9OWfe9avhhaTNC96uawTQgZSa1UwlOsFrOdwqTBAQoaQ?= =?us-ascii?Q?CrXZBx8BjGip5+7QIn/a0FX7a4PN8iD0r5BvrBWwH5lH2x53tJTUKk1CU8Ls?= =?us-ascii?Q?Lz/ro5JRvO8gfyrV8T7ScLoeLQa43O4e9HKPaHs+y0EZkpB6DsvGtUDz05/w?= =?us-ascii?Q?R0+jKCUdyBN4rBRSFmdnewqf0+xqtoH+p52shE2gURsMbWPT1pL4UOLqF395?= =?us-ascii?Q?LhDfUgHxGx+TXNkHAn0DGZOS4xxbhCs35FaBwBEFyN55Z16m+7EjRZ80Dypc?= =?us-ascii?Q?c+Mw6lr9PYIXpSuMpBxcxv4eRmT8gh6yaWXKWM7RqSOf/kRcWjPoiotNQsNA?= =?us-ascii?Q?COdPPqDmlY8W/lelKxkNFPUNYRzuXTRv18w5zorMOre4SboWCXd3YJubpEcY?= =?us-ascii?Q?8t5LEBjp34JuxdHo+rcbreAx0z/RDRcIy9W8u3gKFirPbKvtrk+fez114gHd?= =?us-ascii?Q?wvhW7dhaK2XU6JZUJmict7pISsxeG7UxADo8eaGve2DBJC8PaIuEFR4I1xrd?= =?us-ascii?Q?79qiNWEAvH6zYXZ0RQPXLeuSNwmOiM3C2BHZG6YjugnuS4LRgVUWGdE+9CpR?= =?us-ascii?Q?OW7q+oVzWXJBboSJkjqaUSRj1nK8QdHHpIIRueoiX/fyWP7shAiLut2nNVOg?= =?us-ascii?Q?jIqP3LpsBIkB3EnWO7AtM2Am5oMcE0KYr/waqKoVRAf0YjG4PR88Q7resaoY?= =?us-ascii?Q?PrEtepw6mWHo50JSJrf7B3wrDSUmKz07WIxOvGb4ttaDEsbm483Bcjl9FNim?= =?us-ascii?Q?rJbNXrwZnRdlxumyTC+95wYPAawUzn2Uu4SANxr3vMHcfuxc5aq6aRiFxDLZ?= =?us-ascii?Q?hnDerJPmJlP1uOYGwMHfoQRxP5WQxleKXuwj9t6Wvbp5f+aFPFJC1L2qDi6n?= =?us-ascii?Q?aLMl9yBP10EU6+GFe6dEIph5/qKm7gyQzExDNHjLdvHTRmFBFAPmdIriDuUz?= =?us-ascii?Q?wzfpifYA=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:rGDCCL2Md/eUKs034v4ppauWSM2NhuY6Ip+3/t0aChmG5DpoVJKk+Nmr65cgCuNp932lJvnRtoAqlyIqHg4d1AzSZg1j4nrASWWLh52Ys3aSztJf+/pk7uqTo8e4kv98vvYIlYTLNEWSXM4WCTSw+xZqRsOWhfMSxgqMQSIliPcNIcXFcB9CniKkNnMFQ+hazcssGzvwBLcEyWk5+z/0C+QInQZgkhk8HckrFj5mhCfnX7Hnuyp8w4rmGQ1UKy6oTxhOtJjX6bXdo18Q9w+gRd+H13zdYG29Jo9oQDXOkY/oIsTDQsmCLvnBR6gfE+eHk2JgTy6V6hwD/JBKXz2oUL/jASEFmVUPgZ4Vs+ORATGcTxbbjZZ9rUwkYpr8xcvr5IFA8b5cXYr6uxFpEQ8CgXJi6FFHvewvxZyh1vd1uGpg0FWN4M1CnA3E9Jswo/j8wmxK5cWtVgnJZX7/V7Oa2JCjEt7LtQBIM4P9M8WCcBBgVjfvjoTtmX+x5UBEAFTaZWJqTk20+IUSOEBbp6Kh7w== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:1NY2xIY+U1qNshikKk2KqZKMVH6sEMG14zTL+VmxI0Y86oAzSij66NFwCppIWNe1FzkNalLFdOSeuG7ETCobt7j+j8J3qpxVx+lAr1RGxtwnDy7tn2XFYcci1ttgZV6GC/dpu9eVLTrSxOSQAWclUZ7mhQ1cizFqG6VuaSg3/JOuUfIQxf6idjBSs/qTIMunLn7c+a/w99k0hJqj24eq1MkO2jfWh+AMDKWi+qi0+F8C+KM53BR7b2S/zxQf6jlUzwKoFxx3eoVCWMJOiRRwi0xr4kcp+3HSoUKe08QpKe1m83lzEJXBu3auXk1iAf0owQEsxLWZvqIo0Pe5oOh18GEl2+Qo5vYLxEyYlLyit4rmL6TmNjvK9FkJegFdJdTN99Jfhj8v0i8OVpK3dmwznk9GOjDq9Tjx2MsY0dEi4G6qAdZsXRVz+M7v72uy3GQALU2txZFWf+YOoyODDNTZf7dB9mjs8mxUBJ5aWcs+lm1gkkVSNvPxvL4QwFVFufVb; 24:xT4Lg62XTOa7hzLtgzpjCuP/LA+b2T9hwpPziK/UNaIOZ0JnnmULjWldVaKN3/TlZx/g0qf7Kd/yfqxub3QJMyjh+3PtOkwOkIPGE3S0nP8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:sHw+XDkxYh6DtMCVymt6XUW4Zv9jVmhrISipoeLTverROqzgiLVzQghAmxHtMoVjILh49IpVBQ1xAAP4EfNAUNE14vsP6q0z0gmASNLlbhSDgcm70ul7rxhLPZcc8Mc37xXgpoyuHpeGx4ZZp1QgSknmyYdcR7/XfDgSwyBN6DVCmgq77jrN187YciXSoGMOoWvSOsWoEtdqtPGkFF6CqYUBxBOh+Ep2EVai3ylIrNxO2DpRZgb7xaOhiiIYZmVr9waveTxA4kE9pK2SEF2LzXWwnVa4FAYpOwC8tQjlqI4Si5Vdppc08RfOREcPxGfYAvBfHbKZfDd8CyDDTSbFjQ==; 20:WTjhU+MOBAI254e+17yiWYBD/IRn+zVj1Ub+Md3rzw6t3Y5LxDrlBD/v3rfNOu2ThPFMIcxcd7zL4Gsm8tjMFVj+U8bGSZGTndbdpxkeEyWxPo/FzTf2tIxVW+DIvjxXr4t+yBXHwdFz97yvfeTVGAsIvtqm76Vi6PsINT2/jc0= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:14:57.6778 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.133 Subject: [Qemu-devel] [PATCH v2 01/15] block: introduce BDRV_REQ_ALLOCATE flag 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com 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" The flag is supposed to indicate that the region of the disk image has to be sufficiently allocated so it reads as zeroes. The call with the flag set has to return -ENOTSUP if allocation cannot be done efficiently (i.e. without falling back to writing actual buffers) Signed-off-by: Anton Nefedov --- block/io.c | 19 ++++++++++++++++--- block/trace-events | 1 + include/block/block.h | 6 +++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/block/io.c b/block/io.c index ed31810..d47efa9 100644 --- a/block/io.c +++ b/block/io.c @@ -1272,7 +1272,7 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(Bloc= kDriverState *bs, assert(!bs->supported_zero_flags); } =20 - if (ret =3D=3D -ENOTSUP) { + if (ret =3D=3D -ENOTSUP && !(flags & BDRV_REQ_ALLOCATE)) { /* Fall back to bounce buffer if write zeroes is unsupported */ BdrvRequestFlags write_flags =3D flags & ~BDRV_REQ_ZERO_WRITE; =20 @@ -1355,8 +1355,8 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChil= d *child, ret =3D notifier_with_return_list_notify(&bs->before_write_notifiers, = req); =20 if (!ret && bs->detect_zeroes !=3D BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF = && - !(flags & BDRV_REQ_ZERO_WRITE) && drv->bdrv_co_pwrite_zeroes && - qemu_iovec_is_zero(qiov)) { + !(flags & BDRV_REQ_ZERO_WRITE) && !(flags & BDRV_REQ_ALLOCATE) && + drv->bdrv_co_pwrite_zeroes && qemu_iovec_is_zero(qiov)) { flags |=3D BDRV_REQ_ZERO_WRITE; if (bs->detect_zeroes =3D=3D BLOCKDEV_DETECT_ZEROES_OPTIONS_UNMAP)= { flags |=3D BDRV_REQ_MAY_UNMAP; @@ -1436,6 +1436,9 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvC= hild *child, =20 assert(flags & BDRV_REQ_ZERO_WRITE); if (head_padding_bytes || tail_padding_bytes) { + if (flags & BDRV_REQ_ALLOCATE) { + return -ENOTSUP; + } buf =3D qemu_blockalign(bs, align); iov =3D (struct iovec) { .iov_base =3D buf, @@ -1534,6 +1537,11 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child, return ret; } =20 + if (qiov && flags & BDRV_REQ_ALLOCATE) { + /* allocation request with qiov provided doesn't make much sense */ + return -ENOTSUP; + } + bdrv_inc_in_flight(bs); /* * Align write if necessary by performing a read-modify-write cycle. @@ -1665,6 +1673,11 @@ int coroutine_fn bdrv_co_pwrite_zeroes(BdrvChild *ch= ild, int64_t offset, { trace_bdrv_co_pwrite_zeroes(child->bs, offset, count, flags); =20 + if (flags & BDRV_REQ_MAY_UNMAP && flags & BDRV_REQ_ALLOCATE) { + /* nonsense */ + return -ENOTSUP; + } + if (!(child->bs->open_flags & BDRV_O_UNMAP)) { flags &=3D ~BDRV_REQ_MAY_UNMAP; } diff --git a/block/trace-events b/block/trace-events index 9a71c7f..a15c2cc 100644 --- a/block/trace-events +++ b/block/trace-events @@ -15,6 +15,7 @@ bdrv_aio_writev(void *bs, int64_t sector_num, int nb_sect= ors, void *opaque) "bs bdrv_co_readv(void *bs, int64_t sector_num, int nb_sector) "bs %p sector_n= um %"PRId64" nb_sectors %d" bdrv_co_writev(void *bs, int64_t sector_num, int nb_sector) "bs %p sector_= num %"PRId64" nb_sectors %d" bdrv_co_pwrite_zeroes(void *bs, int64_t offset, int count, int flags) "bs = %p offset %"PRId64" count %d flags %#x" +bdrv_co_allocate(void *bs, int64_t offset, int count) "bs %p offset %"PRId= 64" count %d" bdrv_co_do_copy_on_readv(void *bs, int64_t offset, unsigned int bytes, int= 64_t cluster_offset, unsigned int cluster_bytes) "bs %p offset %"PRId64" by= tes %u cluster_offset %"PRId64" cluster_bytes %u" =20 # block/stream.c diff --git a/include/block/block.h b/include/block/block.h index 9b355e9..53a357c 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -65,9 +65,13 @@ typedef enum { BDRV_REQ_NO_SERIALISING =3D 0x8, BDRV_REQ_FUA =3D 0x10, BDRV_REQ_WRITE_COMPRESSED =3D 0x20, + /* BDRV_REQ_ALLOCATE is used to indicate that the driver is to + * efficiently allocate the space so it reads as zeroes or return an e= rror + */ + BDRV_REQ_ALLOCATE =3D 0x40, =20 /* Mask of valid flags */ - BDRV_REQ_MASK =3D 0x3f, + BDRV_REQ_MASK =3D 0x7f, } BdrvRequestFlags; =20 typedef struct BlockSizes { --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330276648789.7382712477714; Thu, 1 Jun 2017 08:17:56 -0700 (PDT) Received: from localhost ([::1]:45189 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRrC-0002Bt-QX for importer@patchew.org; Thu, 01 Jun 2017 11:17:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51518) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRoW-000080-Bj for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoU-0004e9-7L for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:04 -0400 Received: from mail-eopbgr40133.outbound.protection.outlook.com ([40.107.4.133]:34349 helo=EUR03-DB5-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 1dGRoT-0004d9-W7 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:02 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:14:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qspFrB1CSixx2NJ9PsYR+CnZTOhCbTyEnSbWFnoiHyU=; b=FXM/vwlShScw40EeydFFKyGvhdgotkTZUZFTkNCOgbuGt3ir31j6myMfOCqvyDngI/Yc0OVd1sxtNqVUj0xs+f99Ku3SbLnAB/sOyQJH3fdrDppO6wz9N40uWVTzYktA3kwBLcnWlQqqC4yUNAYKRpRan9bqJxKppTDtCQ/gfsE= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:20 +0300 Message-ID: <1496330073-51338-3-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: b2676780-218a-437c-83d5-08d4a900f840 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:qIygn44ZBQrEOqrb+tNfl+Vg6KnOXJ0BqWd+h/soPjFM36eUdmZBIhOd9AuYl7QkYx0prZq2em8Vf9QWpyYGBSdW3IsthpYSNLtL0BFtQ+XsvBoHVrxqNr/BNw9XncRqQ6/1cvUmzYR+QkI7P2xGC2DtWtRvJ8PzpfMz8G/62V0IHZglY9JuK9zZM/mSO7DHZ2Nuz8mRpWKJFkGpSCHPlOlh/dEoXWPdzVm+UOTa1HoqF7XsAStMmdu2JTlEQWYd8UUTX5de7I8KJXNG97TL8e99qkscNAhNOqd45W/2c4/dRmuTYqRRKph+XyS/1rYCU7sw6ubh6IHbHgEIZorbxg==; 25:T1hifuxhf6Eh25s9Ce+RowtqlhZtcIcX37Y4cjCGV2CDIyXX344C1bJhQEx6OeQGQdhrIfK15NQx776AWJfHSd9iAT4V6iDJ9SAhfp/ghOO4+atGmZphqyAPVQGrwsAKFNB4pPFnPsqScmeQ4dCTkbx4UIrYkVCSYlsoKLO0LbdltnTGs+L0REBduPyaFcKO2RMhlXvahlhB0mjVnWRPV04VFS40IjK2vgpTr4PsJWOk1dof5FmauADGHPguRpizjXRLGG6L2bYjKxcm3U2sPnKxdyb/9IQPPpwo3ZXJDdksQdyRcv+DkC/Gm5G6lQtQm4QdXcPbt3DxbtMPwqqy/UInBlYcRYfyGDQGj6Wm4wBy7rCofnWkXFiV1B6alriED98xyTxSorLyxYTu0RRKTjbspoa2U2t67MGblpvOZQ/GofCcOd5jQVQ/hrTj2jxufH6T0dzAM52aFlHL0Q/K5YztuLJz9veLgsoYYrgDAQs= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:BjVv+6c1M3vLbOYrqRZIETWAJSUkKq4N7uc6ag6uKK8D0bx8wlIYeI6FiqtrcjShpx/WmcZJrv1HzptLB8go19/eQBudAd4sbcZUqx9oftFj/W2576eSQiGOZz7KQPVHqvmnilSC7WMDN3cLcf3k//eXM8pYguoznqx1405rMZw9Q15miwhboGChDoijXsqOqUM0VxrkGqPnWjEYDUyhEYcgyFdYsCXHvMEvpXTviDc=; 20:d61kXgEJ1Flvl+dYNO/Nt9OFF0tI5AnLuZ8bagDyE8nl1tqmG0Ua4mvKp1eJGK7GBY2BIie/8fypEkQQc8zd6AYSohlYV/wRY8GQ6wGZlTLMSGpVxCTDhDr8VBR+72lFJEHLRVZA4MLUCIEidF/eixG73vimJ+LKhkJesMaaHrf3VCMpQhChpI3QrnbWbo+hAGZutbVuIMIQTTnXQJv0RnKuWCPRE0Ijd6IUKivjcerMGOV18vFAi/wwW2FSlsIQ6eKNoTQHjDSU4Us5z3tqUWhiwzRpaA4einc3uhZqhq4xjjok5uZloVVJSZUW/07fmI64L5ly0JTmbKzcaPfYb51zsWsdgOP6Mu8S/I0INwGP4muTRjS3gib5sGnEhnBViljNkGYmp7R8Bhutn27g+GZI7UAvCm26OL4zPMpZDqM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:3Z6elQlL/CkABC6nMyU6CcxjkbIs8g9s4PQQlJi/?= =?us-ascii?Q?rkS31DCO7n6IcUAILW98P9m5sj9clfRJ1fxIfb/r7mQC6ETgBB8zojiXq1PO?= =?us-ascii?Q?Vee1IrqRtdTcAm/WPtd8XRREvP6/TuW0BmUax/sQ/Tl23Y4SQMY3hP4UdB8g?= =?us-ascii?Q?ufEYcT8OK6YhRDdOKdgAEMO2hPTrQlC6Ibs8jW1ZJgcOxGFIK3qmN/u3rsk/?= =?us-ascii?Q?sKmiITGaKIdTOvTCmfdJLoeTAQpicyFuXJCAoRKsxmJkXp+cgw4NILyskLYz?= =?us-ascii?Q?RpN+G8Vd4tdb8LGICCDD0AX9uKumSHbp/owC+EpRPvsemg+RNkQSlCscBMnM?= =?us-ascii?Q?iGBiJ5duCnIbxgy/ZHDrplxBrJydsdTo6GCzRjYrMBnfq2gTbFdxBR8D4lJl?= =?us-ascii?Q?McXxxmjqB8o1sNMr9baHCfz3Kq71FFqMCLXoI+VWE5zuw4CQpcvcpW8/q9OZ?= =?us-ascii?Q?47RvhNRbfOjs0L1fWRlgVIPZ79fbWW71rBe6XitolkK4ZDYm54xy1FW2TsIV?= =?us-ascii?Q?UaGaUgkSWMj7uIoRH6hGdeiIhCyBTLeHKRSwfaxXhnb2K9OjqzD4+wem1Y/X?= =?us-ascii?Q?sG6wSJlGw6wlIjBplAtfMJkEoK6jenj96i2IgI3CTg40nee7X2hPVMhOPU+e?= =?us-ascii?Q?b7pd1j+OYxRFSajVdTxLuusVaOTNlrIW1aHkjJv4IghXj/FLiK0g2Lguu+mj?= =?us-ascii?Q?Mx5HMzbSh7xwyMXFScSaZ46PcSAUlhCKLXwwVIJ3ZwLjIRmZJz2Tn92zYp+M?= =?us-ascii?Q?NPMTA5lDDRPSNq8h8Ov0R5C78X1CWnfTyS2qc4hH/BLLej7KKq/nRp7GQf0q?= =?us-ascii?Q?eMS8+qtI79cZiSX/29cSA4Y5TfnwYl96+a41pgURQv/uWyInYV/dhXzhuk+K?= =?us-ascii?Q?QSqpOubcinLPx5wVl7hW7nuTeYuPAx42U9GfRrJAqx4dbj6tCFQrGYqGGEhx?= =?us-ascii?Q?tjmt9WEzvvazrdGnrag9vE30Ti1xXHjhF446HJHmOCIJa/rI/Cm4J/MS+FuJ?= =?us-ascii?Q?xhukW6aBporAGeqgKeBS5w9f+ag7RDngisGiAQIImcepQQdNlFSJ2CgzaixY?= =?us-ascii?Q?A8eZeQdF/3Q+p3BYKnm7lZmPWZbjgiqiJqlVssoXeRvOlQyXHRhwlUkdfU/U?= =?us-ascii?Q?qa/BwBB6SbJVFrC40NR2h+TwcIyLYaXz?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:Csk1PPCU53XYFS+m/Rm5xWt3MbxAjRPskSRWrXV?= =?us-ascii?Q?4TJUVANk5mFVS+ZZfEFfqKk1heNSLFVuvJ/ptOhIAiDw1brMaTchsZja/uOo?= =?us-ascii?Q?8/BUj7f5lpRY4T87dk+7yAW+6mfl1M8bqMXdWNgqoTGEsVKUM10LxPWt9sM5?= =?us-ascii?Q?nRgiy3mZDN0Mmn6P4ryb/oMuWZKefpjqfZD8L6SWG7HMasbqCvhjw8jPn5fM?= =?us-ascii?Q?VHtefwu5Ivr4hGA5L8nI9t1hFz25mkhqkH0vkWai1MOmKZed0OtAt3LgJ1hl?= =?us-ascii?Q?pxp7ZY8ggvBjHAOC7HLX8drJlxp6181ckAQDPy7P/OjxkujyySC5NcBpXk28?= =?us-ascii?Q?YnOI/DoMCVA9P5lNFKOanKjb0LQcFCPoucnzZ6oHtcKpn8CeMrocvd6Rviij?= =?us-ascii?Q?SrvEuNGdHck3L1wvLAQRKk/cSrvzq8HFINprXhZGLBVEGky0x6TLhMzHgy41?= =?us-ascii?Q?vfRNxJEFmsdWI3h5pw+L8kHxt89O32JSwmFIj2WCXrJCgnSlWPNhjNp75ZsS?= =?us-ascii?Q?39tGXDfue5Gj8fFYioar3Y/uRhFN+gE75o2q9gUuwNwXz5f9AJPNn67JcQfA?= =?us-ascii?Q?2CcActy+YYQNBP25K8EzVmOCEJ66DB5jLdE6+Zfu5My1IoHpvsltfQKGXVx6?= =?us-ascii?Q?t/tOaURF2operCMmqcWqcl4zGf7VSOODmzYHlBBcucZF+Y5SkKOVEj0eYUAN?= =?us-ascii?Q?qD13BfQhrl5++AtWfK8Jcz5QWtXycWkVnUZycyd43kceWZz0SmbrQcycpEuS?= =?us-ascii?Q?2m/JclmJ2RoNPqfqKX0yhSC8Z48tNkpxyqw65MPnGLUdMnyM3To5umK5hL2v?= =?us-ascii?Q?QxAdX3ZiD2yFnw0aoUS7T/uHVAdHcLzHhneJEM7vSLf/EXKF7I3fHYX40rcq?= =?us-ascii?Q?sisgxuCHK+9k0hdEMexhUt0osLr9FzG0jHs7MJ1uJWgK44giiSKazU3ckFsj?= =?us-ascii?Q?/jmouxvvrcH4VK/SIGc/p49XiKopAQ5rU1yk/gBLnZXh2EzhiYpwoVVe922b?= =?us-ascii?Q?cI457fR42R1crhmYN4U87GIhcnhuAuRRASBqZcKrd3l6ba058ei2Cs7+sPCB?= =?us-ascii?Q?jfEH39Ig=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:v/nxRyKss+K+SNn8c7QMpoNL5RT2BlWhsSNTuK55WiLplTgPwBtlN23mF2AAzPsKw65sD5eDfgRzcYwoCvRUHQhmu7vXUZSpCsIdlBfvL8Xonh7UMJ/smvZMB2hHZjrFBP9w+6U46APYYITznlN9lKGKwH3Sdsauy+Dv5fFjzelzk/Vwg3SFaHjggHNBFSSllI6jyPhjzX6LnmdslSQlkJrxoaaxoK+QwLKd417Kp494S5giBa4390Vn9GIgxUQVJdu1jPdZskTsvhoID5z+dRDgmiwEuPeKK5cqLTdbhTtmAC27mFureKqIaJcJb77AYsWiOC9yEMOPXutfj3219OwV8qHzEDsjHPvspsqk0x4/nUy1fQ0ndgclCcWm8EFXXBysb3VtZS+XblPrrDo/EEFRaMgc+rnYaQ36BZ0Yv2GAWvds8VXFJKe+nKb7oDcKm/rkv2zH4R9jnGhYo1W2Rg+2N+vYGYiRXHfjJnDasKJRH492kppAuthrA/sv+lgPFoCoDijSdyXtaJpb58mBmg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:mprrhVhrjUXEm2OoA5mlxkKouPMjisQBshK0zrn3mJzi/nO28AjuTaIX7J8cZkKOB7udgvzI6bH32hLT3yju2ryOqpyuSXf5/i7P5sXGF4X/6RiVRck3m1eqhAHueqKiYiDpHEE7TYaQzVBdgan8NFr74lYRCJ4VQMNRl+hlEMVybmxoYk+m/FuaONBa/nQgaAOXWosSuQ5224Xatr9VXnVtAPBbf4jku86HA7lnGE9d8ofX97ADHwC/HBU0J8vFFHmT4rO9Ozv2h2ALsG4y2C7nrv89EJ96TMhDoiqLlefOCXOukTzDvNEEv9xMyhefL4rlKhlq/9/6PlfS4Nr445CZdafyM7hM0ucMQxVoqYCbGa/nqJm+CToKN9jyH31xrpdLg2gc1P0P1oRm2dXgImloizsk98T8g1XfavSkY9gl2OwFIn1ZdGBP0ZAvAUwC7qZG+FO64yvsuex7uh+XR18HU7IkNboHKURBbwbSU+SxXbv44WcoEkzThs/a1g7i; 24:J/9M9A/va7SIdvfUbdTqSt3n4ix3bEEmY+MD2gyUOqEo0Dp2ZWtdnjMfFOpbMIQgfpe2146eB3hMjLv9coBATGQsfFrZ0UuIkHRT9PxNSY8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:CL0gO/nixdBB3+YcOd3M0i37+rAxD8CGvdGE96tFe4pdK/7bvQ9hO258z9CWYovE1MPdCSr4q5Kk7MesTg3tw2S0c82URB2+pXNKDR6lHmSKyYuvTrHnDIk867NC73bDdyKs+3rUKvIo9qAmUyRw3bbm1G9MfolD+likeg5tAchYasG3i2bW7d7x6prekQ/R86Bjo7RAuohP6UDtB8PnmPvI/4S4N/u+x2NrHvgE3jOAVP8CkR9KOm7HrA7olJHe6XZCfPwWU4MDNFj9Fiqls+UNFJDkEKYzLPCruhlDRbouB+wr1VyWJqAPp5wdgaiaEhtUQw+A12adjjuymGvDlQ==; 20:JjWZjpnOL5REK422QjWrcTneKW0b9YSFqcD+zFEzJooOpN1NkWpAfB07fS+CvqFNFqPDkJQhX07NF20arGYxG4y6Zv5fULEjdxj4jI6D4J6Jf6kctM0AUXaUQfvmWuJiBqaRdSVcfvvsByd14LMCcTJJ3A9xsGysB/frTgSF1S4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:14:58.8341 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.133 Subject: [Qemu-devel] [PATCH v2 02/15] file-posix: support BDRV_REQ_ALLOCATE 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com 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" Current write_zeroes implementation is good enough to satisfy this flag too Signed-off-by: Anton Nefedov --- block/file-posix.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/block/file-posix.c b/block/file-posix.c index de2d3a2..117bbee 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -527,7 +527,6 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, =20 s->has_discard =3D true; s->has_write_zeroes =3D true; - bs->supported_zero_flags =3D BDRV_REQ_MAY_UNMAP; if ((bs->open_flags & BDRV_O_NOCACHE) !=3D 0) { s->needs_alignment =3D true; } @@ -577,6 +576,11 @@ static int raw_open_common(BlockDriverState *bs, QDict= *options, } #endif =20 + bs->supported_zero_flags =3D BDRV_REQ_MAY_UNMAP; + if (s->has_write_zeroes || s->has_fallocate) { + bs->supported_zero_flags |=3D BDRV_REQ_ALLOCATE; + } + ret =3D 0; fail: if (filename && (bdrv_flags & BDRV_O_TEMPORARY)) { @@ -1390,6 +1394,9 @@ static ssize_t handle_aiocb_write_zeroes(RawPosixAIOD= ata *aiocb) } #endif =20 + if (!s->has_fallocate) { + aiocb->bs->supported_zero_flags &=3D ~BDRV_REQ_ALLOCATE; + } return -ENOTSUP; } =20 --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330399783404.161153752858; Thu, 1 Jun 2017 08:19:59 -0700 (PDT) Received: from localhost ([::1]:45196 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRtB-0003wi-Bo for importer@patchew.org; Thu, 01 Jun 2017 11:19:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51546) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRoY-0000A3-NN for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoU-0004eJ-Q9 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:06 -0400 Received: from mail-eopbgr40133.outbound.protection.outlook.com ([40.107.4.133]:34349 helo=EUR03-DB5-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 1dGRoU-0004d9-H1 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:02 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=CW+iTMzYgfXdZcjUkBpyvivIa0pDFZzQwk+fWd2idBQ=; b=edL+sJarci4Kh4SqzAKW3ExZWFVH3pUtGfr34RFYkzqjHxcnoYhlokGBB2atX8DS8MTUILaYuPJ7g4vUOAeQxz3Rp0nPHa2CLQQo44+hL7K+v/G8ivDNds3GeAWRf26/3+uElsZJjAPsSp4gOKG/nPWZNVOg4YjfPBML2OCJskg= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:21 +0300 Message-ID: <1496330073-51338-4-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 216c9ffb-e191-4459-7c35-08d4a900f8fa X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:LMb4a7aSV1mPKfI/aEqIYohnGm2j2tZF6ySujwE1JeXKPw5ok/bV73Dpt7nERr6mOrjP535wt4v4NSScQsqhIwF9WekRgyOyVo7DPcrG2MPDCGxcKfOfNySVigk3B7Snkk6cDs+SivgvGiCHUA1+BeVWiEBKVyP5RWzhXmnJn0iBC7uHf5SB6c/B7o76Usuzv5IDrGu8vgnaV9PvLwnPzdKA9Pse2JUtxpdaqV3azBJXMlr/fqCmzFjcqRZP4gnQNS1Cry9uYuVi0nrhv7DEys6oNNM4BHvauMO1mQCIdyqVhmu/UOCCtkzrh3MdObRzrUg4bwZk2U7OxiCKdiuKeg==; 25:BH9gjUcEuk6Tr5HIf3lgaG8m2O3p7E9o9iEgV+K6+yWDi5NXCNs5OOzNgp1povw12D2AtJatsk8On9TGEd6LvsJr/7ixOO/oD53eyrIHGJDtpOmCPk9+33sGfO8HBgH9aI1MmsVWNL8+1GWzrmErwO10QM/6FDA4KX+DcTgxH3HUJVolnirsavyomFGfGmXCWd0WhzB+4yAHpcwucMAwiXxvWNvFlWGSCOqunfVFbKA1sY1I4CHz3H68DmcxfYCyf40Y8AMzhM/NCpTZ7pHnTs5SKnaTDxCLzJGhgGUpRwmgTq1qTU+lqvATAR+ueVttq920rPojAzLDC6WvUZwBiQB1Fvw+p/soICjZSPhYrCakTZ5OwJC7R+KGtuQOr0Js3/kBHog2z33SgvbNCMjEdso5RaDnSzR+3lQRWOxrdjWAMjy0AL226J+swEw3dLYGV6Yq98CABBxbyn9W5ypdqIheRRIvBKi0C/FjlKNDr9o= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:rsvHQDT1lGZUVT4B4phH379xjtxj79/ffcMYwAss/X+qDFF0/DGlQFJH4BHcu+4yJYB4lEkfGlICW8FN8Pnjymfi1cFqSX+MOazHNY+XnD25e2XLVBkYlbMxA7Q0qNEa0UgKA/xyb9UEJ/AL58Au8fmtB4R1P8N+6qNm5/AzX6N8a5JimPWKJvo4sFvQv9/a7cokOElywLTrrvGE3uuAXGSh+M5LqKJwAV0s+xC1JWI=; 20:4t+DIw7dHpb5tBKWUa6iESEJ6HQPoWGDWH5HBEUs9FTmmKgina46MScrLZ++3wF0tJCbVkqPFD/5rCcEEiVw0h3TmcqSNXRNuoQOd3umAnziqN28Cny0uos2b38OEw2cqabrI6cQMMY3tn8y7/fyzDtNNEm+X6Fmp2HdfJkKmVg305J0XaqFsxP3WwD0YgE4qKcWDqk6YP6CiID51eJmjy2MvQUCoVGA8E6m6uaBvDuREMhfd5blfp1kOySwLU/+l5nztZ0rN6p+Iz9UjK3RA0zsREdl1j1vlnn6LDcrnWRwtKfb72ceSqXvD22fV8Up/0RR07/OOhvRYhpYuXqM2htq0tHQ1yChE4sqfHD/5yMnWNdV/rYh9sB6tdpn9O4Qxk29CB3LSU2wbyyDnJ850yIWUWpp0Pk9Wdf2/qnUHBU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:IZr36oYKghCkZBVSWipQci28dOb4XVVfIp9QmC3j?= =?us-ascii?Q?eCr7SGlWvwFEYTN+XH+rgnykfLlnuNM+YTdL0l+uKCln5zHQqDMUhQPjx8UZ?= =?us-ascii?Q?aPKPtw12D38RklyVfrXl/62HVc3RU8UYoQ0xeD21/lAsmmMV8rWWFSFTqtIu?= =?us-ascii?Q?Cm+oYbzmaIJOGlwJW1zYeJQgcn2SOZcLcp/MKX7ktSLIEeOmqejWUAuj+imZ?= =?us-ascii?Q?K5jr4GJW8xAS1SH4sJCKusXU161K7Ahj0z569bx9ATzU0mfe0jMjtmNp//ug?= =?us-ascii?Q?jVB5gaFP0SXGphibCQZJbBbuySL22vbTHTh7cemDgWdvFClMfcw+DbEKnsgm?= =?us-ascii?Q?1R1+S4FyhefF0BX4xepjWukEylLWGCN9T4drTN5aAGqRdPbTNJUJVbrh+D1L?= =?us-ascii?Q?4xIqIizjvLpZdjBK1Z+4Vu04FfSF+hsKOCflGu8JRWs9ufmamXE2afEwxil0?= =?us-ascii?Q?wqRSLgrg8F0X2bnpKHb5xgXU55B42DQlVLq7i4jKfHQ1MBUWlUEC4R5DMVQh?= =?us-ascii?Q?jbxJemoNSjS2k1o8xG6mYBaWphHndCP3Pwf/lZfjVyNV0oaaq/p15J0xYe3g?= =?us-ascii?Q?QVO3Gtlc4nhPFjgeqWf4Oey4MmpzoKnlC2SFT0hoEYQCKoivEhGg9/03fr9i?= =?us-ascii?Q?Y7Xe1rYNUDtVPg47q9ssA3zhdUSN969t/7wz0bHSFMT+koPBiLe1HeWRVS0s?= =?us-ascii?Q?ssAieFaZI1f9+Bfw3hrEZvQss1JsvkI4jramj1aMRwrd8bDwRUG9+5nsMOp5?= =?us-ascii?Q?kEDcJum9mpGi4mdygrH2w6VjVvJgUZC63EjH/JKC8tWREvyNNOtd0S5suya5?= =?us-ascii?Q?Krgk8rY/8aEaZdCt5Rhp/8VGjEzrmHHExvvrecN1qGgoI8jiAX/4AhaCbwbQ?= =?us-ascii?Q?T2Iy9mK7Wyzw6kSh/DYNvmLL1y+ZtM0QrPXxQk2zKEdP50Fuwr3Aa82ss5vX?= =?us-ascii?Q?vVZgnwXYYRJiNKODs524F4zsSIN2LedIjLZqu6vUTcBJZuJPnhtMRBk4GyzQ?= =?us-ascii?Q?fpQyfbOc569PhMyUvKWYSB/RM7L8VlII3tT+76eLyepGneJMXS1+aF4WiJNE?= =?us-ascii?Q?yuC2b87phN0kTwa4u85PYpry+UKecoqyUc7sD9/FN8OeWEeeFRuu/vr7EHws?= =?us-ascii?Q?dKvjjhsz+K0cVft8ZYdUVDM5sCtB9TDP?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:uKiJ3uGADr0Sb3p4yLYp/HxMqjjiByLWhiiTmWI?= =?us-ascii?Q?Lr5rnd+pGJqwbzavYjb4z0MQWWBAIHbneAICTKN6bFagXcjI7xk2IVEvVxte?= =?us-ascii?Q?pnbR43/Un4GWmoXphR+s9o9+xYyEuc31dwSZke9hOihUB0hu4K4NIPfM+NVY?= =?us-ascii?Q?/oEAN1fY3+KWppnxN+tDTA27s6LxkPaB+mhgTno7vE8TQwOEckxcmm9nLGo7?= =?us-ascii?Q?8Nb1IKCVMWFo/ha3ZhOkVY9yPVDMZNJGbXS3evz64UBzARcSmyTQSFJNTKjQ?= =?us-ascii?Q?nvEpDC6Wk89Bo8w8Vy6aR+U61YPSTAITjJE3/W8FYCKdZS4PS6QO90Rc0MQ/?= =?us-ascii?Q?4A03fNA29GZqtldOLJjJRgrLph3mzRG502/CW3qhXmN7UmizaX0XMliAveC4?= =?us-ascii?Q?5v18JaWe1optPYX9iTWp7yFyBZyz6gEgb0hgY/yT4/szPn+uYjraA6J34706?= =?us-ascii?Q?TytWY/zb5FrKdiEd9gZdezeG2MDP1tavKGoTLXrWRaZ7wppbXP478SDVjh0A?= =?us-ascii?Q?fBovdVy9olPUzwarGurzfBLktl/P+imd6ascgTAkbIffSUsvi1gmfYJ7v8SL?= =?us-ascii?Q?1o/CRt9jiCsvmaRWQ1cljUc/yRydoAet7VSp6nk5lHoE1YK8ObiRL3ecYvPO?= =?us-ascii?Q?HkmqZJERMUHt/RezHacRbngCNT7E9GzDjkKUvhnbqdC412FpwrSvc93+ebvI?= =?us-ascii?Q?8QF1cG6M9a1FiHOeeeY2Am9flh+Xq8dNQla9sW8zj9LfCBxgqZPjt3MEXeIq?= =?us-ascii?Q?0qsM4D/9TWNikbiHpt7mYBBBtZjs52joKSLqo+YaDBlISpfgx3GKiTDsTKd0?= =?us-ascii?Q?GEoXXqww6IyZ2sZGvdzXABCFCRWfXSNHbGYxsp9xi99yaQ9rEoQmN66u28iO?= =?us-ascii?Q?gtw/CweTYbldXaksqwLvMyaswL8RzivxwB3phcGlmrqKeRctX/l4ftDeLfsm?= =?us-ascii?Q?QRpROnB+YAvfpOc90aaZFnOXA5+5IDTkkeZFCkVf1DG1FvKxZaqRlWf/ELQu?= =?us-ascii?Q?xyCLnhnLPNnVbCGLshIFEsB6b+uCLCmm0q6dwAOo3yyToCXS6bys6T3QOjzg?= =?us-ascii?Q?yD3vnhVA=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:v0ZwPd+WbGco2LVdMyNZZicG4bxCYBXaEQ+C+CYkd77yQDjutRoCxaL7Ahz9IEbinhs/nwMFwVw59VzYcjrPynRb4QI3PFbNlMs2zo9cDR7gvlsEmPQzI9Eu0wqqldggZylj5Hb4b0NRCIylbuU76Eqfb4Xv3PPbtWYt3AwvJ81zIatDJ0OLnEtR5s0sNeSex1V2rqiHSXLV0j/VtSYea88OUFXiHUx//D1r36scmThUYf+LwXTzYesreff+Zqq8OmtDO6jUgyKp86a+nIYFvANci2WAVJXbepeclT8eNl1vtgupwEe29hhWs4UeJha4IwdQyfPK0VzKwibMqRfgxBU5AzZQ3GOdCkV1VZ033ZmvsBOOMCjHlLLFMUXD3VMT8G2/aITnaJ+M+G0CrvkGRWrrMN64XgXnIorS8dXAJOae/kLjgMtMdNUYWr3VQMXtTC4uYTD3kXFSq7xzSSBmjixOSI8JduE3Ogo8xpWPckOOkOVJ9YGB2uP6lGAp6mdZAUm7qSydhIR30WT6dIg//w== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:VFrbx46WC3yUktDWb3G86I4XDy/fLo3JJJsjZlLhNjIKVOMed57bzVN0C9hTSNtonBIQfUO7bnSB/WbGYAqYpIs9cH3aAq1RDXBJQje/9lIR9JrlSiLDkZk2sp3MjVyOKixXyeuPoHqFptysB3xePF6dgo65qVAoxy57BwpLE1WfEslH/vyxqpBBadn8+dnUmFmzb4e9zV8tMQ6ugXHg+VEzWoqNT12B7PaIRxzmvScmNfJOAksgD8l5BG1RO4lKQoy3xuA9R3zPniz7ny5M6BFDUBujiOIEuN0+7EilGpdBAodytcvdHESXjb2jXwQPVyF0R2iBPaCp07vGO+buHYXafHzcBhxBIWFcEZo1LXYPB8fskMn1caX72O4f/7lMo3EnVDTfQb3Ppx7Z1QCstcvSNWmGK3rJ7VED9aZkrraA6RfSJhAPFJuw4lM4n9IEsCX53ReF6UVXKNG86BJU5/3pSdC1bxHVLZoxImWsOZIP4YsIchmrYa+7fLGhxLO5; 24:HnW9G6Iy5m/WMHH2/r5EVxlzgzYpMyfcoHJDAnTyoKzgIUBbj1OpVFs85Moi0JfOb+/54/pkqkStWa1nKXpXaN0h3/Z60mzERGht9mKNDm0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:gH0Kb1HKuGtro5rwPvAN9Ls/2vTqvcProFz0VLQr4wPRtf13EsWs1zFTBoRo8TUA4meMM+bBJf7aVS8vRo801FI74VmQnl6mb9Z8E55YuiNavfFUATnlEr5dHPBX6pHP5eisujaIVOxqphbyGQHUqNOyoyw3hNyR8MqA7hh0URj6OltIEOdOEc0PVOJW7qY5yQyovSQ92GxScHKyvBC2pHAca+nMyIga5Cdf8+sjJ+diPsCqew6r1R3hehnay13lADmWAGVMUOQc39bSV8WVsbZ7HWoGRWi2/tupSJASZ452hPt4nDOaZNh/2ytTxnVG18TGHuawhzRoPW3I6B1S0w==; 20:qDA9DllcYJgxIL2B3FlPqTZBAWRI3+FbS/NVmXLG+bsyds+eqGkZRu+qpOyGnX1hEiwIFhzuZGlIk8KwesZRTeibHH97+OrwHopvr5rH3NxPBFx/nrWFP3L31uMU77jZZzm9B6gCiChbeJ2+33pedzAIYCA+pfhJqEg6nPvIGfs= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:00.0529 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.133 Subject: [Qemu-devel] [PATCH v2 03/15] blkdebug: support BDRV_REQ_ALLOCATE 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com 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" Support the flag if the underlying BDS supports it Signed-off-by: Anton Nefedov --- block/blkdebug.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/blkdebug.c b/block/blkdebug.c index a5196e8..8b1401b 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -415,7 +415,8 @@ static int blkdebug_open(BlockDriverState *bs, QDict *o= ptions, int flags, =20 bs->supported_write_flags =3D BDRV_REQ_FUA & bs->file->bs->supported_write_flags; - bs->supported_zero_flags =3D (BDRV_REQ_FUA | BDRV_REQ_MAY_UNMAP) & + bs->supported_zero_flags =3D + (BDRV_REQ_FUA | BDRV_REQ_MAY_UNMAP | BDRV_REQ_ALLOCATE) & bs->file->bs->supported_zero_flags; ret =3D -EINVAL; =20 --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 149633021988018.392139605282864; Thu, 1 Jun 2017 08:16:59 -0700 (PDT) Received: from localhost ([::1]:45187 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRqG-0001QD-RW for importer@patchew.org; Thu, 01 Jun 2017 11:16:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRoW-00007z-Bb for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoV-0004eg-Dw for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:04 -0400 Received: from mail-eopbgr40133.outbound.protection.outlook.com ([40.107.4.133]:34349 helo=EUR03-DB5-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 1dGRoV-0004d9-2O for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:03 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=jYg+2OtHP+T2Fn1Wr8t/YsHZ9YWDeNIn50bxQCklhIo=; b=H0NdawuWrENqU3kEhO/AyaVl6q1y0cdEX1HEQWThvhpnv3q0PTUi788REOzT5ch4v/6BmV++PhyNi0iN1d6xFoYqciKrZy9zR4qE4LhOyOkERcV2rEqwX2JBWQGZXIexgz3OTrOSQwQuaKutBgzHJJmAnk8oBaTWlr6N8jrPqn0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:22 +0300 Message-ID: <1496330073-51338-5-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: a3de84ed-3d93-4220-fe04-08d4a900f9bd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:BrU+RfuDm0hpUm/RAhYNoiftKmDXYioGW3RrHMXiGvyTC2l7q/1vnjdro0d+1xlBD0d8jMry+v37EpbNdVPhJcZ49HyTQpe2b8GeCYn697k16Pqpcq0NY55R37z5dbiXU733uHfIakmGQbRTbhhC1tBfZoGh1C8bHtkeH8eQrW3haKx+p6+FTuFJgmsO336Yn2qiHk9UHEChuINwcNwCVcUCa1CAtaob3mHrghM4wgk5jmGFXdPaXuwSXKZapfSGhhXTVT6ts96fZgTFPxMls0rTXXIqKHE5VVrTSz+xPOnHRPBEd9aGRWicD4M/XCgi2D4zpX15RAXRd6rXrPcMYQ==; 25:vxJXvhW0r6/djOc+0EQw4Yu1vpf8R1nXh6YnzETOsf9YiLsLGJleLRkvYBE99F5HU1Vb6mDnRMDy/KViLcwXEeIA0Tfz+sc9ZgR5lrXwsNYuJIRrmLjYSFGaoarJJRkcLtZnyjmaIQzWhtYDJG37Kw9I1TRI61thFmPGeLHY27KeF1bspRlazM9Kg0gyRF4zCeAWJ7iUAZn3kgbrwfRpt7yb5P0IJKBae//nHFfnWcsM7q+q8bavnFb3oZwARpB6cefgkpS/oLTA42jz/G/fWzae0WBdWEzHZH6GyPhWCtVkgsNDNVCvZy3Y8e8sEdWsXIRt5/cno8XnDq/soayNh8M8N0djv/3x/oAHvVRUh/uNOIsjVqMmJgiuaokGjwZiE4RjesQdDrdeyd/JdHmToUIFpBt3sM5sOhi6yBNBe7ZrCgwOSabNd0i233QDcrhhr55g/rg2hFKmah80WABnxpOMPGinvUKUmmMlzo0ZYwQ= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:sbVC7iQ+U5M4RseUR9IjNjRISLJUjXIPOxo3CUOcgwtMC8w14nhXSbznpDCIAva8QAbL1at/i9XXukZNbGkNzMGSSR/yACSS9xDXO5ejrIdL0bUFV7YQeEJFwIu6rIYUHmNAGckqDuiCjSKY7wDB3Wjtc+Z4ifWt2CgVTUzHpSnMG/7qSf/GbCvo81MuI3i2WUgBEwi3AupA4RMv0Ag94ruVGSf6g1mmYo1n5LmrutY=; 20:bQH37/FPhbqoh7HYp5F7TMl2uyGAqraxHSTod6pHDzAf5AfP9aL8BpNk2LLE8nwiTr+34MGUSbrTx2C3J8akXMSdAV+qSGRl8YI9hrSJV61XHELRUH+IALtLWYP3Hu6+VzoH8mwDcAGgAEZlmL8Tunk7pxW44kdb3RGNhfmCeFfdoePUx6eIvkj1iI5Y4dZJxCk0XuWFj8k83tj4ZyXFVmGPD5hnNWzLD4ZCu60WMohOzx6JCtR4KLyLMFqSKE4jHZiuKf/zpGbSB0FRGdEelNKXe62n5I/+Q6GADFGN7SIr1jPlSIYCH5nnLf0lRivHscS/2XXbAgiWi4c5n+1Xn4dFDsvon3XtmoeCU+26WKrhRc7CMGrVME/V/n4no+vINZu839xzH6JPttNcsJL0NANquC1Hzb2xOMsmP6se1vA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:rQm9XwGFl9PGs5BBLqXFXB5IDA4QssQMIbRyIxlX?= =?us-ascii?Q?yh3RAVGn7IU+CvxKRcWo3NAjEQLps8kAccpp3f9163gls83vlwckiTrhws5V?= =?us-ascii?Q?6rS1VWNjRCaSF+IVKOgFUX/dUJRnOhzvlzT+52aAJnsqCsIGq9sJkHlz7/Y9?= =?us-ascii?Q?7qvi3hsNy8I7lnc/M0f1RKnmnmJMx6siN8YWym/FSIXzY0xaaP3MInex1KAo?= =?us-ascii?Q?EDRrw9dNS4qudLjdnJHTHGAI5eImn2RBV41PptVU4WPHBXFK7x1dO8NsPdL1?= =?us-ascii?Q?72f41GWi+6Ckgft+UK6HaNzFxDnE8KA0aRnJe+HkcIdaUlpTLNWb5/Pwakuh?= =?us-ascii?Q?CpELPGEa7C5QXqegN1fRq658JszQYm4vptSL21mXwPbv6UTqMU4sK2eyMyDO?= =?us-ascii?Q?UM8WgogZwNGrmycORRAFCc26ll3tq9MQOu5b9bTCJd2X84x0jhwILM0+ZSwL?= =?us-ascii?Q?4WvK3rYG0nKsYU3Wy3cVC3H614rhc2wkuqgsIuCunX6eZxVImpW+Xx3PTYK8?= =?us-ascii?Q?tRSDcFQt8rV3hRyumCWNgMbq8BLQ2o4hfAdgI9rXPgjH/FA99/mENJHdTQM1?= =?us-ascii?Q?bFlD9DJLmtjoNfhuV7VJVD/p2PZxPZiBDV1zbT1uJUH4KdDMfMHtAP2JbEoT?= =?us-ascii?Q?fJYJ3kgh+rojWT0WjsdBMAOsN18qIfVrHnRrT2zSQT2dbEHVXxOWh8H3sikY?= =?us-ascii?Q?XxqFtYYgVxTKkGwEBHoB9B9NNsYUz1THGgMyjwQNcQ3fpKJFZmEPzzHcQsaQ?= =?us-ascii?Q?NQ3VFs99WQ3b9xAlqJJc+eU4vt9aSVFl54Q/S2lQlsrFURnubQ8NCHJyox1r?= =?us-ascii?Q?euMvJbxDO2AFLC2UxI6QwtUp0jOoy2ALTr+8d4DQ/32p8kTYVW1vVmEZUIds?= =?us-ascii?Q?TzEPoMesT3P28VAja0j6n2eJj71GwXXgl1d2Zl74jIS0PIjihAGSIM3XykOW?= =?us-ascii?Q?zEtg1927r1sG5ofLOCFPMyp230e3gNan3ypfs9f1rH28TIPeo5AdgoG38Ck1?= =?us-ascii?Q?5zNvgJSnPX9EUKWKHVFPY2ag3mUKAps03Gmc+BrDE2IkZFSgkNSwjhZ9SSRw?= =?us-ascii?Q?7+lBbj2Sr/kOMrCEd2xA4v1fpADd7DstDzyhNH3ylYNO24rTJadZtwp3r42b?= =?us-ascii?Q?XByeYdR2zp7kBb2Jx+0n2101FHELiWX8?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:aUUoSTM51oQd30EE1cGe8axqCCsHG5Ll5GggBwz?= =?us-ascii?Q?6nb+RHGm8u6MIo1HSui+n4ZQtJsfkkwUEWSKbISCkyk/yEaUoVE5UVu0vJcp?= =?us-ascii?Q?1+RgsAjE858YRgjszzAqDSdHwi88FMiPbj2/U4cPLDtJoRBSmirKo3YXP6qH?= =?us-ascii?Q?3SPuYz7UNdBnJC8X+r3p2MMGQkwru4idX03YqgFXhy/0i++EEyPUljjJOQad?= =?us-ascii?Q?bRXe0S3J7luHEqb5Y4R9UEtuTiGLB3b4SlUhXhB+Bc0516UV9Esior1KtE74?= =?us-ascii?Q?8WPq44/MNW/SybSkL2fvvpurOTQoUECXUax2B0a791pe7zXP3V2lDYYGa0X5?= =?us-ascii?Q?G1LyN+URBL2xsFr09Tq44dXhSB2iFx+AwjIOZmCMmkR+MRizGjY6DW1dRjlH?= =?us-ascii?Q?qhTXpjhHTVBTqiZ0NwJdcSCs5z0nBLT+sBGqxQwAHWNWyWY06O25hn9fMPZ9?= =?us-ascii?Q?Fv4krOclBGFzAKfYjeff9uA0pRgbk6OdsXt16wXE8iiSESc2GKSv+AciMmmT?= =?us-ascii?Q?SNYcOALmShT4MIg7MZXoAe4negEBBlI37P8kXKooy2p9yI97UQfMlLB47SsX?= =?us-ascii?Q?bwrbNY7u2dl9c1sbGhHY2vlC4rsCESgDtftt2mgi1fyBcbmMjoYmc90mNpMf?= =?us-ascii?Q?9G/DBChfl4FDvCRHJ3AFP3J7cZOOJtVjuPx1plex/2thpb65Hl+YRkEmveDa?= =?us-ascii?Q?OZsdGLHlI8TKv/ejxpSswLbogkHNv2LeyUQ9juPxoo4VjSsYVL6Zr6LRD4ab?= =?us-ascii?Q?EMHZEy5RHNN01hwUf/3otwshOiAAz8lqq8eLo9RaC81WPKXbf2Yd6JR4Z/8g?= =?us-ascii?Q?4mM/GbkATBCTDP+J8YgX18ljcjewTNLxnmWtXtUC7z/HyKbJcUqIWnjX7/a0?= =?us-ascii?Q?yjhg/saTxHjr1UvJYntd0KPWW7EhYkfOTnFdJZoQtAcvlkLrZLPlcGoQ88MO?= =?us-ascii?Q?K5IldQmVsIFwr63Kua1wkSHAytWYcLkTWfznZcZNnLVdw/k6qjV51vqm+VnI?= =?us-ascii?Q?0lzLr2UyDYFPbb5cSmyx9Rp1hTI4Y5aL1KA+81M4lICbtE0/F2nAucsuJgC+?= =?us-ascii?Q?KV+3L0HU=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:FviGbkbb3vVAkYCgZl4RAag/+Zq7Mw+/vYgrZeFh6mjQXuy21PCNjalHAwsI92PYji6ElR/3OrqfFyBUMG2/qqin81M3CbspakT7Kb7ekgwum7hw8xBF343Fy+psC+mEfNJXQwXWOjmosR//rU8/c7FKX0P4sk/QU+60nAwK990kjFu+sa2f/B1Qwz/3mBQ07qIivX7mXOm/G4wy3bK2vlOp/Qm1EPgxd6vgpRCTxWS1z0lEyvg2uNqP+4ISw8kktLJrY35ln0KN7e4ApcGhXrlA/DNokGWDuh/VZCORPxtRTgVyVPWSgqjryqCmdwAY2p6/kOdbGmPGUmKDOEWhlIuDEtw2ioma/HYNP+yL4ShcYSqFolWIjLb6B4Y53ycdsoH2qR0ZPz5g+7kusyBem7a+WyP9XZ3l6eR36J/ATuPbxx0pEK0buGCE9OEJANbfayb1Xb1qzZ1h/LgBy6DnM3WMgCAtGFRivLzXvIq8uqDJE3Hpny4h15eWiRCITYWz/bLFCnEt789YoS7OHkoOiw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:D/pqRSGwYoy23cciLhypPNlEdVfo+FpaIA/e/kBQFbHxZwmnBmhG3mAY6Wh0Hflp6RGku3byNLQo/2mqteWy0UaSh0F2X6PawyvwGZ4NAKUrJMnnmp7IDlsn3Iw3gxDuTy1Zr5Yrq+/h8jxtj9C9kPQ1GyAs23OG01LoM3IlKKpSms0QOs2W+Clz+cZOwlwFf/QhVpL/tO6C+Fw0SW2hNLtbgxsEByPATY6IzewYViZ0HACyoR+qOKuP2G4x4M1vg8Vy9hKSXBt4YHOCbyMJYBM5lmxmshZM7JC2V5I0a9Vp8TaXO0BE+pS69LEXdnlj+pPmaVoi7DbxlY32w1qkYs5siIq6bFUjgGNngEARv4Q6VnatrAGNeu4DqY1OpaFLvfZ8SqWifAOUasZh0pMZif06ELCG0RkwU1cTL6prDrmgPPXGwiOYkq1hh1YOmPSV9ksPMXipCvSMpK0m3yzAPKhiHj5+69zYthG8tKGkq2HDzCgWYkqahAM6TbATmg5l; 24:dq1Gza1AApphoa1SXqGLWYR49VYrQDNZ5rfh698n7vdkbhhWo9ht7AUJn1vlhivVh26An27uFMlgpPrKUVn6/7BxSf/NpS/ONmrltT7lD8I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:KIju5Mrw8YflIDJwfQr0PwkOoqdUqE6WaTK51AiOxa4jdAyqybV00vnjK9P7As3XvOJl3nX4iS3Cvvr6On0byBqRs5d+qfRiJQIaD0j5r5/7vb6TCCxdJlX5q8ucXZW7URZC9/Pz59QPCnKwUXhsUq0hpB84XEggklbtrjTzRXQygdaypydgMFLnvlaVQVKWzCX1H8js0u2zk1fOHBqTU90OJkZPPUjJUacTGFkWRHsrSpjwrqSb0G75H5urgN51+xl28wYGye0hwVYKJG2kdGl/hW/QK3ATkmzPvKmFvLr6Wa0HpxtRKX3QploDpVaEJlBXjrL9v6iSxZL0LGW6dg==; 20:93eL0jMdh5SHJVB7K00xgSq5icFCG5YtM4h2irLzZM5VMbyHkxijoIAxQEaC5KD7YxoYbd7SoZ51ZDBq/EqT26BcpA5pdMVokYzJHzCl1bUbR+V3ESZeY/k3dZzynpMfWbOaWPb35llSY3HythrubwEPQYjyHN3/iVfjbxlP1eY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:01.2404 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.133 Subject: [Qemu-devel] [PATCH v2 04/15] qcow2: alloc space for COW in one chunk 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V. Lunev" 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" From: "Denis V. Lunev" Currently each single write operation can result in 3 write operations if guest offsets are not cluster aligned. One write is performed for the real payload and two for COW-ed areas. Thus the data possibly lays non-contiguously on the host filesystem. This will reduce further sequential read performance significantly. The patch allocates the space in the file with cluster granularity, ensuring 1. better host offset locality 2. less space allocation operations (which can be expensive on distributed storage) Signed-off-by: Denis V. Lunev Signed-off-by: Anton Nefedov --- block/qcow2.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/block/qcow2.c b/block/qcow2.c index b3ba5da..cd5efba 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1575,6 +1575,24 @@ fail: return ret; } =20 +static void handle_alloc_space(BlockDriverState *bs, QCowL2Meta *l2meta) +{ + BDRVQcow2State *s =3D bs->opaque; + QCowL2Meta *m; + + for (m =3D l2meta; m !=3D NULL; m =3D m->next) { + uint64_t bytes =3D m->nb_clusters << s->cluster_bits; + + if (m->cow_start.nb_bytes =3D=3D 0 && m->cow_end.nb_bytes =3D=3D 0= ) { + continue; + } + + /* try to alloc host space in one chunk for better locality */ + bdrv_co_pwrite_zeroes(bs->file, m->alloc_offset, bytes, + BDRV_REQ_ALLOCATE); + } +} + static coroutine_fn int qcow2_co_pwritev(BlockDriverState *bs, uint64_t of= fset, uint64_t bytes, QEMUIOVector *qio= v, int flags) @@ -1656,8 +1674,12 @@ static coroutine_fn int qcow2_co_pwritev(BlockDriver= State *bs, uint64_t offset, if (ret < 0) { goto fail; } - qemu_co_mutex_unlock(&s->lock); + + if (bs->file->bs->supported_zero_flags & BDRV_REQ_ALLOCATE) { + handle_alloc_space(bs, l2meta); + } + BLKDBG_EVENT(bs->file, BLKDBG_WRITE_AIO); trace_qcow2_writev_data(qemu_coroutine_self(), cluster_offset + offset_in_cluster); --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330614508260.3750653693569; Thu, 1 Jun 2017 08:23:34 -0700 (PDT) Received: from localhost ([::1]:45213 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRwc-0007Bf-Qd for importer@patchew.org; Thu, 01 Jun 2017 11:23:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51580) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRob-0000E9-1W for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoX-0004fR-Q7 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:09 -0400 Received: from mail-eopbgr40095.outbound.protection.outlook.com ([40.107.4.95]:11349 helo=EUR03-DB5-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 1dGRoX-0004et-AD for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:05 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Ci8/9tP+OpplEg4I2wk7E3XYS7L/ebNRQ9iG6EMSOe4=; b=BoP5w2NixNR4SE2wyxVJZoUGEvvJvsaIvvtz/huAXNNG1Tje34EUyv6UU23RG8C7xusElmoah42/AvwvQ7iuhcYPP/3x0uzY7ENam7fRRH5IdWFXHYvflczDB8g6+ATZ819DcMaUrwp/3z/bx2S6dvfTPDlzMB9VDsu+WIlf9Dw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:23 +0300 Message-ID: <1496330073-51338-6-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 096044d2-95ba-4ed3-f664-08d4a900fa77 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:qY0qLMxa89VWal9sSMRmENm6mlb/PEu93xHzmIRxN+6dsm06wT+XdcWZP+xoXtpvp1JZIKmX9k/dJvnqU++hVKsuwO6hQowyBDkfaxEwgvvsF9cXLSJxQxgBKgESMh3NhTCpVEYwYng9+zfEDrsJCojoNZQbvwAVnDD4k4Firf6HVdGyW9oDNMyG078szi46wJ8ZOy873lV/2T5x9sQa24V3lMY7SBnxDVmkMYE8oyzUu7ueDck5k6CSmVx9LHEInidiMOZHUoX6efoa7ykYuAG6b5hW+ylo/0JJU1YqUylsJi+lSIwAcEEMKli95NVW0nCBg6UDZjUPUXxBO7PWIQ==; 25:evATzKen1f5T+XBk83PWfDzzuMrt+HOPlSyN/UW1ygNrAapvuj3eJtexcFzYWe1AEzzAl4gI4syCf+8Sk5H6boOZY9vOwwQudPVtK107JztbzehgoGLA+8haZFo8Kh848dbUjBjt10AAfjLaGKXFfKXze6niABH8ubDfi8lKzoqvLM2w9jRb+jPr2+PBxQyYwnEPdLlPk6mttw2Ou40tfw7xxwHRJuInYatey0AEtIy4S+L1spoo8BXg4TvttZfOGjXFkVjRnr5+eyWtQj0qA1SOy0aYFcVbzn+VzuRniZ9NeaUEdQYBlY+zamDNuYPlG55Bqeftrn0u9fWi0sJt0D8RcjHlrZS0FhSwEBiTQXShzMxxb8f4GmHugVO0x/uk8r+YujtTJ5NZPe4ZIxTQWREDNlHaGA7csEY6cy2Wdj2/GrRYPmQQW6Y+iDJy6nZgxH7lp2ESJhbKvSnKy2nPJwGnhhPmTvI6BHTMVRQzi/w= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:lUam7DcUPgIMhFa89VSBAW4/fBhoGPH46u7pYdGLvYasrhT6kHL2o2KiG+fTis4AgC9zEgBoStQCGWz3ccKK8cCYgAOTDnS8fWnaUIMwvuhe2VXu/PHB6UPLJUIb28VKTd3aMydaZsM4quOiA+JrQ0hsviQPQsiWSL7L/ZqIq4ZxC3a+00cePVKjCgm1vwmD3rKW+GmjbIkLn9s+iMgyJ7rvyTAbJitDwc+II/whsAU=; 20:G2dwba8eHb644tZ8aImvW/0n86KVhA5z5ZPqNniR29Jhm8shLKeEXfwoll1CBBtC3lBTI1dUAkFTjlLa1vua5mPnLpcLfEo16J4zd8ujuihHo17Co2Ag2YQ8gIy1chaAsQkM8IclgaCwv86H5SyNs0qnPC+T1CTGTSemJ0vQzVSaRP0JCViOecr3effXTM+R57NBJLUkco7EkmHlA5pY2/LaWInrXNUlSuRqIVSAShX1QblfLWDiONQRJvAb5AYse4U3iYS0hSQVKm0Kp6M6N3PPOtZ8t9dG/ZoQvnHvDG13LbWsyJfQe5Bf6gkRfpzNEs1Sh/USwwppvzKFKY7CX2WDpUk43ZrNQaJy46s8pX3STNRmp9CdDJPaeIddpSWeBPssdll+fLa6INHPzE2lf8mGdATi3/F1NPit5r88HJc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:eRFcF4axrfAzo10P2BQdcjmgoCufFfvJsLp7+r7f?= =?us-ascii?Q?DKUa2r0ZrBVVB58gsyI5z0IA21pd3lqP2Bo+63k4lJXpaPxJXyySCWhAYmUw?= =?us-ascii?Q?1tSUVw+JFGCk1Rrijnna7NH0TEa5Pl5u4DENPAJ/vB/9KwgDOsTFIA4u5X8W?= =?us-ascii?Q?/iqg94JUxFE0QDW0r3MW2KLhxvkiiOs9uRu9vZOuEH6IQQXyWBvykFJ2my/m?= =?us-ascii?Q?1yY+spm6t+mmVLHmtfNiJPHFwQTI0o/iTDnkVdZrCoKlLVeWLeRkgcpxun/h?= =?us-ascii?Q?J5rbiK4H4WLkMY+C7YUelj5hnkB0wu5vHAzEEa6qo3YXuvYbY+8rXK2THEip?= =?us-ascii?Q?5xUdb0ijl3pHODu9lIyLqtXJcbXY28kpzTP7Xxi95gmVcsloPmkA0EcXop+A?= =?us-ascii?Q?ZfD8konFkECww9NvHZV0LIzWUOsJ2PJLa3zadTRJHC1O7o/WWVAEm0NHc5E2?= =?us-ascii?Q?Zbqj2y7Pja5015KUOQG27v7ZEr++g7VE1DwR0YXwH15lJkV/LUw6UFtvSO/r?= =?us-ascii?Q?/gp3ryS9FjLNd0l8iO4oqrvVF+gdagf8k59QgCiIqvyhLEmHs4TbQyu0/WBt?= =?us-ascii?Q?QtjdcnmN0wrvW84vOFjGwxPFu39OR/YJV0tJTF4B3m/fhdPfvLnReJ4hO6AQ?= =?us-ascii?Q?DyrY23kv4vX5YCsG2zNfdhyuz7VMHzR4KpipUMRsdrMldUif11VBXgMLC5UC?= =?us-ascii?Q?9zEesFKol02CCow8EKgkxedfZK8p/SKSZ2awsefqEmGcPiGr0yjqCjkYmwCS?= =?us-ascii?Q?jFzvhmvad2hF32TriUJ1Mv8hVdsNBV3k6gTZ6ZxXsRir5I4Et3hDpHA2trZ9?= =?us-ascii?Q?DMleHcxw633hrgNHErIvb+rPAlDFuQRiNdlwbVyA6nnsQdQ0oUMmEIg8tTRS?= =?us-ascii?Q?RzsYiWOkoiy/aRmwhkO7k+kkRjlxtOGVSUeELgaEtaFeEnI5+DKJj3S+N0pw?= =?us-ascii?Q?oL3wj9n2KZzdY+I/CFXJcvQfVr2t54g+6HZleOGAA89EkFYjtZ/bZR493WLD?= =?us-ascii?Q?p280eDcjdcx1LsR6XjEuwnavxq1DFA2Rie+X/8T6XJ+5QR7Zna+UMVbcKy9v?= =?us-ascii?Q?uZC1utsCO/YDo/lBgxsFVLzPwFgJ2sT5tO8qIC+80MpDdcu5bF4lkvx9H4WQ?= =?us-ascii?Q?0onnwUCV6giUB41N5wyi+v6bSAXYa83d?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(575784001)(53416004)(189998001)(21314002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:v8zpNhQ0Ll+STfCwGdv9uhLiaxz9H9faOeJCOgE?= =?us-ascii?Q?Ec/f+RR2xFAgpyixBNLOpoRbOgNw9Qi8CeVkwSsnoZEwrlJPggFQF1NpQwcZ?= =?us-ascii?Q?0oLx6tVR6x+O4k3CCg+UkHuSpjhwMcGsQz0uSQ/jAKJRpwTTxE9q+e18wqff?= =?us-ascii?Q?vZ5i2XMXuZFxoCVh9+DMQpNyZLKV0elFSyVJg30sOohElTmujFQjWs24kslv?= =?us-ascii?Q?UCQ+XicfyiFG421z+vhjEbHOBWeQrPg3snHGe/efeArNoPAJMIaMG2LSBMux?= =?us-ascii?Q?t0EboBwZ4CAY4UtWAL4ZJ/qOzFYiRGxsLiJz8vzzpUtgnYuZqPlu7YdUTeHV?= =?us-ascii?Q?tgluzZFI138i5Asd2sPaqKMHoMSgO6jiv3kh/caH0ro6NKg07oNy8gYqs0qd?= =?us-ascii?Q?vf0vvHuczaONKbaalmZ58imbjusa7pRNF2cCxFk/HZ7CQ556ghA+O4IXxoKj?= =?us-ascii?Q?m+xjT6/BlxONPRRdbVmH263zkZBtpNkc/a0nNc/V3JGcRwRYeLWri7LDdf69?= =?us-ascii?Q?vkOL8MSb+Kt87o6YBW6IVHYM3dUajnvuK0IG5TgU0PHyAybWbH4auO6US5HJ?= =?us-ascii?Q?HptkzmAb72BydHTAGjj0sDGEGoIC45TVkJ0EsqJOWADUc/QkjrYL75mh/kss?= =?us-ascii?Q?QS38anacTvAwh5nMh5hKY4jSJkGwweScAJXrz/vfeoRlwCGbaKVkIWdPY7sh?= =?us-ascii?Q?+1URRRsDanE67WbQ6eQeFOqiZ9+Pj1eFEnyB3ERlw8wfpQ9dAcXNdUkrj9Qr?= =?us-ascii?Q?YLQjGjooseUa0/ca4qPBawpQUKqJNig3TBH9dY7qd8Ybw13h13ckz2rtuNUI?= =?us-ascii?Q?xjN1sqvrKVcIJkB7ogVIlZgIYy6TRyJPE7MuqqdzmNBjptV1/04/Ent9DtK8?= =?us-ascii?Q?B04Tzjp+IKKqXOTX6zn4S/IzEeVf5Ev+z+zSg4aMjPXCSv6xNc1WFqm9WND3?= =?us-ascii?Q?Eqggs3h8qG2jvnLjhd2jhvqDoTk8jgvhyUO5knC8t/TcFNJX49zMZiGUNVN0?= =?us-ascii?Q?O28RlFcYOS2rJyD/laqTSWj86e2X/GEMbLzkiSI/ZiSAAd4/Gu6jP8i3kgTc?= =?us-ascii?Q?u0BCbYMZgUWEYVSbTJw6ry3kxAhWQ7ucvG00saQwEwiJNRXcAHA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:AV6BztIKiMjk6OB+N+ZV/4Te/a3RODK14Kf+rkLJh9BvY0/Q1YhI0U6wLfT/P/j7qPwQo12UjUX0SpOwlt7XJTbrtrimR0dWM9qrXomgdDS4OlLPy/jkigyQ49+W5xDEY0NqIRs/UBL+ibJNB+3x6OJEciptVS1eJ68mZD0BrcSfzurae4qqM17TAobHECBc26MlsAWB0uBvTj89gqDvzCzK3yJESBpObO0DPr9vsoamkoqS3EujukiCQtWqjCm3xmmuxHkk7j2Xn1j3Zon2fTKsw4PS1zWYQnxN/2TCgYxF2VSeSReUj9IoulMh1WgQoCmvJsVzBb6E9vSUxeUdOV5ozuP9nRqAGVr5FyTt1LKkwP1o5iTDXeUSIUOGMznJMgpEeX4OSp1ncTAuSzUvOzSuj+tVr94mtzMyXZgsG/1aR4ZfUWSU2iE99DmTFFBSxFHepgs1CXlqzMgk3kEABwmbCh7MLIENS6Dc11scE9Qo5uwjyMwxtKdwZTx57HOCtEiqb3lbAh71GR3u6HvLdw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:9XdwyHhD3pt6eqQpRjB0eTYTX3b7KBjxrPOW2xS+gTNR5eKyV5ZE2q6/aGK89bBmPGoCtOWAPAqyW+Ap4GfL2k3EKMY6gFGFFwaeLGgVoCtoGkVqfORTd+3Mns8Wiob9lxl5dk5Q+F8AyGbCKQDNFi6gzWhN5UYs0ta2cmNXGpT51ZGI7LlYMWX1QY96lQR/xeef6TNMxfLtom+0lqhvHSPHiCFWbBkJID0Sa0o8QhIv8v56wpsHuqjru6Wy+ocx71ar8Pd7wEN0OpokM/BhuY17WwJdheqcFCvsz8TbbU1NRphlKKhkv02h3j71nH+aJiJk5YPK69fAcS70vJtbRQzFs3Hrq0CnvK00d10MXbLB8eT/gR1n+eM7GgKVteoFRQb/2TrR2ydP/Wwv6XS6HM5yG3KDMnMaIkbzpJ15LqQbF0HaKuFIKbPgMOu5xewvgOS/p/re4ZdLtpwz2XkIN0FFEiM4GL5JHGI2WSwbRyaWOg4CBspU6PQ50cVDyqKd; 24:tbsHVIXZy2jQ68IP9DEdGUxVKklhgVhuHrVsWdNLeHRjviwsEVQwXMbMo8JJGbM2l9AT+vlzAiJ/RZsxF3yNIsjmSLpneqn6eBJcOmMNAOA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:iZKfII8l6+IV2cNHCa5fjBlqjCNx7PpsL+x8JI7PmslBVv3JS3mDQOO7ffptMI3o4dW07lORdHygJ4smw7Qf4FMpsAjnjUcGA45IOe4moOx+Y6jjPz7GxdAB2rnON7GhRkvEJQcW6mjZY8zN0+k60t8FgUF8L+FX/f4AnfvaloOgzPokB+I3NjDkEIpUscepvOcGLWlQ7GjMQNLNPj9jXAj11Nw9NOJ/cEAiixm9kxT1cyMrPu1oTnLQbyf16tsyVtHPWPKx4QQOnNL8Eq9ZkBWEamJE2YWzMsSNXXuyUHWcI7cgGMU4/c8QabsGyOkSlGeCHGwi1ijOXvDg3WPLCA==; 20:aa17aq3Q5PTvF7ODyjyuMSqnp/7ediVluu1XuixtNJiZ195XUsJgbHwOXHbgqpQMtXj9tc2vH17cgQntNsVZeJRcdpW16qXG0KIF3lQIy797+3dygaRU4nc6kNedg2sZ44pQ97WWGoN9EjE4agQ/HmmMuyT4BRtEjAhuSCJgqaI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:02.4592 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.95 Subject: [Qemu-devel] [PATCH v2 05/15] qcow2: do not COW the empty areas 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V . Lunev" 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" If COW area of the newly allocated cluster is zeroes, there is no reason to write zero sectors in perform_cow() again now as whole clusters are zeroed out in single chunks by handle_alloc_space(). Introduce QCowL2Meta field "reduced", since the existing fields (offset and nb_bytes) still has to keep other write requests from simultaneous writing in the area iotest 060: write to the discarded cluster does not trigger COW anymore. so, break on write_aio event instead, will work for the test (but write won't fail anymore, so update reference output) iotest 066: cluster-alignment areas that were not really COWed are now detected as zeroes, hence the initial write has to be exactly the same size for the maps to match performance tests: =3D=3D=3D qemu-io, results in seconds to complete (less is better) random write 4k to empty image, no backing HDD 64k cluster 128M over 128M image: 160 -> 160 ( x1 ) 128M over 2G image: 86 -> 84 ( x1 ) 128M over 8G image: 40 -> 29 ( x1.4 ) 1M cluster 32M over 8G image: 58 -> 23 ( x2.5 ) SSD 64k cluster 2G over 2G image: 71 -> 38 ( x1.9 ) 512M over 8G image: 85 -> 8 ( x10.6 ) 1M cluster 128M over 32G image: 314 -> 2 ( x157 ) - improvement grows bigger the bigger the cluster size, - first data portions to the fresh image benefit the most (more chance to hit an unallocated cluster) - SSD improvement is close to the IO length reduction rate (e.g. writing only 4k instead of 64k) gives theoretical x16 and practical x10 improvement) fio tests over xfs, empty image (cluster 64k), no backing, first megabytes of random writes: randwrite 4k, size=3D8g: HDD (io_size=3D128m) : 730 -> 1050 IOPS ( x1.45) SSD (io_size=3D512m) : 1500 -> 7000 IOPS ( x4.7 ) random writes io_size=3D=3Dimage_size: randwrite 4k, size=3D2g io_size=3D2g: HDD : 200 IOPS (no difference) SSD : 7500 -> 9500 IOPS ( x1.3 ) sequential write: seqwrite 4k, size=3D4g, iodepth=3D4 SSD : 7000 -> 18000 IOPS ( x2.6 ) - numbers are similar to qemu-io tests, slightly less improvement (damped by fs?) Signed-off-by: Anton Nefedov Signed-off-by: Denis V. Lunev --- block/qcow2-cluster.c | 4 +++- block/qcow2.c | 32 ++++++++++++++++++++++++++++++-- block/qcow2.h | 4 ++++ tests/qemu-iotests/060 | 2 +- tests/qemu-iotests/060.out | 3 ++- tests/qemu-iotests/066 | 2 +- tests/qemu-iotests/066.out | 4 ++-- 7 files changed, 43 insertions(+), 8 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index d779ea1..ba8ce76 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -758,7 +758,7 @@ static int perform_cow(BlockDriverState *bs, QCowL2Meta= *m, Qcow2COWRegion *r) BDRVQcow2State *s =3D bs->opaque; int ret; =20 - if (r->nb_bytes =3D=3D 0) { + if (r->nb_bytes =3D=3D 0 || r->reduced) { return 0; } =20 @@ -1267,10 +1267,12 @@ static int handle_alloc(BlockDriverState *bs, uint6= 4_t guest_offset, .cow_start =3D { .offset =3D 0, .nb_bytes =3D offset_into_cluster(s, guest_offset), + .reduced =3D false, }, .cow_end =3D { .offset =3D nb_bytes, .nb_bytes =3D avail_bytes - nb_bytes, + .reduced =3D false, }, }; qemu_co_queue_init(&(*m)->dependent_requests); diff --git a/block/qcow2.c b/block/qcow2.c index cd5efba..067bb87 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -64,6 +64,9 @@ typedef struct { #define QCOW2_EXT_MAGIC_BACKING_FORMAT 0xE2792ACA #define QCOW2_EXT_MAGIC_FEATURE_TABLE 0x6803f857 =20 +static bool is_zero_sectors(BlockDriverState *bs, int64_t start, + uint32_t count); + static int qcow2_probe(const uint8_t *buf, int buf_size, const char *filen= ame) { const QCowHeader *cow_header =3D (const void *)buf; @@ -1575,10 +1578,30 @@ fail: return ret; } =20 +static void handle_cow_reduce(BlockDriverState *bs, QCowL2Meta *m) +{ + if (bs->encrypted) { + return; + } + if (!m->cow_start.reduced && m->cow_start.nb_bytes !=3D 0 && + is_zero_sectors(bs, + (m->offset + m->cow_start.offset) >> BDRV_SECTOR_B= ITS, + m->cow_start.nb_bytes >> BDRV_SECTOR_BITS)) { + m->cow_start.reduced =3D true; + } + if (!m->cow_end.reduced && m->cow_end.nb_bytes !=3D 0 && + is_zero_sectors(bs, + (m->offset + m->cow_end.offset) >> BDRV_SECTOR_BIT= S, + m->cow_end.nb_bytes >> BDRV_SECTOR_BITS)) { + m->cow_end.reduced =3D true; + } +} + static void handle_alloc_space(BlockDriverState *bs, QCowL2Meta *l2meta) { BDRVQcow2State *s =3D bs->opaque; QCowL2Meta *m; + int ret; =20 for (m =3D l2meta; m !=3D NULL; m =3D m->next) { uint64_t bytes =3D m->nb_clusters << s->cluster_bits; @@ -1588,8 +1611,13 @@ static void handle_alloc_space(BlockDriverState *bs,= QCowL2Meta *l2meta) } =20 /* try to alloc host space in one chunk for better locality */ - bdrv_co_pwrite_zeroes(bs->file, m->alloc_offset, bytes, - BDRV_REQ_ALLOCATE); + ret =3D bdrv_co_pwrite_zeroes(bs->file, m->alloc_offset, bytes, + BDRV_REQ_ALLOCATE); + if (ret !=3D 0) { + continue; + } + + handle_cow_reduce(bs, m); } } =20 diff --git a/block/qcow2.h b/block/qcow2.h index 1801dc3..ba15c08 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -305,6 +305,10 @@ typedef struct Qcow2COWRegion { =20 /** Number of bytes to copy */ int nb_bytes; + + /** The region is filled with zeroes and does not require COW + */ + bool reduced; } Qcow2COWRegion; =20 /** diff --git a/tests/qemu-iotests/060 b/tests/qemu-iotests/060 index 8e95c45..3a0f096 100755 --- a/tests/qemu-iotests/060 +++ b/tests/qemu-iotests/060 @@ -160,7 +160,7 @@ poke_file "$TEST_IMG" '131084' "\x00\x00" # 0x2000c # any unallocated cluster, leading to an attempt to overwrite the second L2 # table. Finally, resume the COW write and see it fail (but not crash). echo "open -o file.driver=3Dblkdebug $TEST_IMG -break cow_read 0 +break write_aio 0 aio_write 0k 1k wait_break 0 write 64k 64k diff --git a/tests/qemu-iotests/060.out b/tests/qemu-iotests/060.out index 3bc1461..d057aa1 100644 --- a/tests/qemu-iotests/060.out +++ b/tests/qemu-iotests/060.out @@ -107,7 +107,8 @@ qcow2: Marking image as corrupt: Preventing invalid wri= te on metadata (overlaps blkdebug: Suspended request '0' write failed: Input/output error blkdebug: Resuming request '0' -aio_write failed: No medium found +wrote 1024/1024 bytes at offset 0 +1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) =20 =3D=3D=3D Testing unallocated image header =3D=3D=3D =20 diff --git a/tests/qemu-iotests/066 b/tests/qemu-iotests/066 index 8638217..3c216a1 100755 --- a/tests/qemu-iotests/066 +++ b/tests/qemu-iotests/066 @@ -71,7 +71,7 @@ echo _make_test_img $IMG_SIZE =20 # Create data clusters (not aligned to an L2 table) -$QEMU_IO -c 'write -P 42 1M 256k' "$TEST_IMG" | _filter_qemu_io +$QEMU_IO -c "write -P 42 $(((1024 + 32) * 1024)) 192k" "$TEST_IMG" | _filt= er_qemu_io orig_map=3D$($QEMU_IMG map --output=3Djson "$TEST_IMG") =20 # Convert the data clusters to preallocated zero clusters diff --git a/tests/qemu-iotests/066.out b/tests/qemu-iotests/066.out index 3d9da9b..093431e 100644 --- a/tests/qemu-iotests/066.out +++ b/tests/qemu-iotests/066.out @@ -19,8 +19,8 @@ Offset Length Mapped to File =3D=3D=3D Writing to preallocated zero clusters =3D=3D=3D =20 Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D67109376 -wrote 262144/262144 bytes at offset 1048576 -256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 196608/196608 bytes at offset 1081344 +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 262144/262144 bytes at offset 1048576 256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 196608/196608 bytes at offset 1081344 --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 149633045314566.64054947193222; Thu, 1 Jun 2017 08:20:53 -0700 (PDT) Received: from localhost ([::1]:45203 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRu3-0004lK-Iz for importer@patchew.org; Thu, 01 Jun 2017 11:20:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51581) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRob-0000EA-1i for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoY-0004fb-Ag for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:09 -0400 Received: from mail-eopbgr40095.outbound.protection.outlook.com ([40.107.4.95]:11349 helo=EUR03-DB5-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 1dGRoY-0004et-2P for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:06 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8Ykx1PjAweyL2E6yESLB+MNpHqbLVycNnYbo6YAD59o=; b=CptEB+wg/g1RzxYSzM1r/bX/sFFX61Qp9t79xgr9je/gr7TaNPMlhc5km6/eJ5LcIOVHo9+4S6djYNcdZnVVO7wJfk9Lk6nd9Jf4AeK3bZU9Vl/GHQg1t+SpJMvLmb8Yqm9dl2/Pmuwa0KjVp6bxFrHqryAV0tP32ma8v9mZAXQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:24 +0300 Message-ID: <1496330073-51338-7-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: fcf91db8-6421-415b-7838-08d4a900fb3b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:r4Lazw909gHkXi4IRx9lcpYznLY6CZSr13ghO4qzClgCb4UMjAjrkHy9YI1E+sL6yRd3X4AEtE8InblKr7kY7Bk9X9I4jBlv8aIcRYdgM81HXi0yBquLznPbcndmU/CAPyhUTQGkI9sXVNGbil8PdUNuVDAA5fKMDwdkjrLvnBn95DfS/ScJr8LK8iuJJ8O8BadzxSJVybT3oCj5QBvR8FhSahclSSTi9tigZA2dN2710JLrYsGBk4tuipaO6b4VKwMzHlye32iGgXgci3uAOETkqtmxEny7SzvXc6jLxezhc3V53YoEgL6yBLDOWHE3tQFuQ8JRB/mJClFGymou0A==; 25:RTR9lZhF37fjspTjTRGY5twYF75p+08LjqjHsRypKgUbbgGTRva0Ox/rGYOJx2XvUTIga1PJJJPC3ix1nczEIkCITivMu4eiUHSGmqb6knFeIBggp9F3sXGpoj2ppryUzZHLb7e/sX6nuOe+a2nziXWnVCpZ7Nt3/b6KwD29nYPpHg2WBiBjiq8G0jvEGCo1khENGDd2nbjDJyhIiee6s7P2oDLXmockJE1TSHnbbnZULkDTmVOuNB5YB4zLah2vZmfYgdHWFyNqwRgRnA4dhaVwYnezNe/hpKLMbSzPeyyA8KT6vSeVHPcVjyQUE/2KIwo6Dic9xVzARqj2+xvCO3/PKNfr/N90nb8UM5YZkbzap+8hcV+HEa6TUnrlKvNYZRxryAadtE46k2GqrMSwNVtc9UgpBhU700+KckOaAmTAcDsu6yvkF+70uKM904QPUKjs7qA5ijOKTUMD6Pg5bhPpmf0Uc7ipXAqndH1lLTM= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:ysHS8o+IMVNEMZiQ023WnLFJIszAOo+pCPQX7q+M8l97l/hLe+Tv7+pX13NeNR0uZv72k6d0G60EzuovBoMwp1tsr2PSyQst0f7rEunkQPbLcfWpNdLSVwZZqGpYW3lgDrFT1L4rHnJc0LknN/rTuWlS3iNLnld2hZBtkG8+2i/MFL9WU2N7o+Eg94bC4CVgT/6H9XXUzuBQ+xd6uJcOUtbySzXGjg0ScUZ2gQv31Z4=; 20:+/C67ZVnNn71EJi/oLVWRCQka3bjMhhFo35ekrRIvnJMeuB1Yan7bzqEhmyLQ6Gg8XO+DsS+oSOLXAd8cKw0ixD68x1k/+qqTrdex4wEGe1Cw/n5B/bhjziCziKKBfiaLlKLItz/2IrBFvpTAF3SqZAUOoNXmwjTG7LxQa3QIF73LROIkYMZonh6fG0ag6ky20tLjfQT7aQTgmIlDui4kf2E7tqjF2IimWPRMdy/XGcQfn1w2AbFQ5newlEGn6mUBBINuuz5vHzoRADhV2Bnu6UV+oYkOkLlZ7/30tBD6rKTewueIUzmn6n4xZ03NksePieyOuXGfhCiDbM9sZVHxfln58DdzbNkVMW3UQOUJ885e4s4U554aovwBvT3mG1G0mB5LxX8jwdwKn+MGpak3Ql3GdO3CRwXL9hh3up7uak= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:8/cxNG2hgUUAglQNgA9A7E33wO4X3ecWPc+Os7K3?= =?us-ascii?Q?t4zcxHaVorBXSIiRE5EgibOby/UfkX1YQlZBCtO5BTlSsZXo5+v50BXubhPl?= =?us-ascii?Q?thBUJVYZtuLf6jM9LzfaB4hjFd47ja05Zcus/bRlPxl5ThEMS9ai2br6kVRA?= =?us-ascii?Q?tsNr0hLobHw8Lu50MZcqtbWUyEW3kTfbGcQd2EN/Bveeeg5a+x49eFojVjqB?= =?us-ascii?Q?Qvv/FX826aZfC3yaBqPMBmVO6HJ8TbF4v8xX6mGs1y5irsxBIVaRUJcrp3Qq?= =?us-ascii?Q?a/FEeYtbNT7uRFKPpCPGtIytSx2ydlRJVglE0teJuHXgOnW3CPJGYs3OzvTL?= =?us-ascii?Q?yuQRcMI7zXhTHTJs4ejgUrc65s9EjBVRm5Y7cyQyzSYSTcSDF6GL2HUHItOc?= =?us-ascii?Q?LAwCFwTLcDBrzJAzR0l9WVLIKMhfSL5gSgL2DmYK/PGCBZZlN7KH4Bm30erx?= =?us-ascii?Q?MXToyXXce1MXjGSLl7RIyg94y7vaVtv0zNqPyNK4Cw2D6/fbpYeMHWiRGz+v?= =?us-ascii?Q?MPJEiN97+fJBFISBT86fpgZ82Qm4dZygBFeQ0XYoprIeRcP5jQkUa9WBdql1?= =?us-ascii?Q?aNxdZNcJJcmztS7mvRVQg/FpAdtiWpbhEd1ZYDupKUwTfe59ag3ZEv24URzJ?= =?us-ascii?Q?WGgEwvt9Z+Da94A/1i9wwvI0Gdq2kkVmghM4OuuWMxj0mcw3QscDyFhmY6iR?= =?us-ascii?Q?pIfK2V5euYJS56kPWwrlF7lzflRhskS42g+rpugm7rdUSg3XAe5U4FWx6oAl?= =?us-ascii?Q?xF0i45on7BHAkQKhB4rQA33eNS0U8ju+USPR11q+O5o3e7C6ag2ObYWxrRJi?= =?us-ascii?Q?qGMlBW3gfwyhQgBKwNnFL8nEwnZfrQTR+Q6vHwFtoVCHCzCM2uiy2J6zc4x6?= =?us-ascii?Q?olnJB5dDCEQ7w4Ruyt0BKaCTDYwvNzLfOO+ZwHen/z5wPsIKFW9eVRfCGsZv?= =?us-ascii?Q?5moshYTvkKkfcKfwwn3ZWdlqistNrB64FYDln90YeSOHZcRiiqlheeFICH/z?= =?us-ascii?Q?0t5ZDg786GS3/oEqyj68q3TPnK9NFtXQBi89B0Cix2DsjmyKPBlLN6EQdPzz?= =?us-ascii?Q?XSk3DI5lvOOYOwQCYAlZqzZsIwHo9cqt72QJrTOV8jNFYTnfI+PSaLMbUaWh?= =?us-ascii?Q?S1mO8AgnP8oi/fUfELs9pB431yUFMGAQ?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(575784001)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:1/lBZix0SLjUpgEi9G2y8H52EFLLCt3HRiBoJv7?= =?us-ascii?Q?Bm2aPojciu892fyLOGbyqAvgfHy/2GLM6GPWFjLb6xdevDVpCBwNxrPuQfUx?= =?us-ascii?Q?VH7AgmlY2lqgY8PayKRFJV7u8J2Rs7Bx6ppCKL16yv2MU5al/4++00z0y9bj?= =?us-ascii?Q?mN//ytUEvTUgpaFeuR37YqqpnTIr5cg6Hh5mCxhzBe598VGi8mrhGCaqPqNy?= =?us-ascii?Q?Zgt0mowU+UfGht/L8pEb7XzPVWQ8Aih5U+54jkwKH/iRdUjbZnfSozqnrxNE?= =?us-ascii?Q?UdY2wGgNe71dFnl7E1Ilee0zjyVCsI+0Tbd6q3aK65vsChHfaJJXaszekISa?= =?us-ascii?Q?x/R97p+5kMZdLap/LbSPtJwtJ8psUG4piUCswnJ02oljNtjv2BdeJ40SZ3Lr?= =?us-ascii?Q?Nhh2BFaRlj2SCfGndxkhGzAdqfvzpeAZwiZ6iYg2Bky3f9DGuzcu6JT7vDvw?= =?us-ascii?Q?9aJRIqhfgKf19L5BON3U2zMRRtH0PEvMb/DCbAqNviBW7k6lsL9L25IXcqtn?= =?us-ascii?Q?WuhVuf62jwJx8xl4xUgidHwyZex2S8e1xoOx6lvx25cgLS69S1lHQlZqcX9i?= =?us-ascii?Q?8zT2UYHiam22Nzd4s8ey8QeHxd8AGz6cAU881GygHX0qr8b5sO/f5goJ5jw3?= =?us-ascii?Q?pEJgIpqg2hnAGEh/y1R1DASMtKe7J8bkdzNr8btHRukLK0IFqaNEI7tfmTj5?= =?us-ascii?Q?FK0iuKSHsIM7P4u5tBG9YLxRFiTJe9xoiElAX6wMXKoAbSQZoft2fdASgtOG?= =?us-ascii?Q?wrSF8elJfKyV5HIImABnQvN3rsvJHChWoCwzNoXq5MAmtDbSJTrahnEJ80SV?= =?us-ascii?Q?C8keaaSrg0q1Jb2/MRTlVUqKeFDjg55FdPXPrEEmLLM5BMEejPX01yqV9bZt?= =?us-ascii?Q?JLINP69jnlAZY1RcT84ttW5lirAuBk5fxLgOAmQs3FeV3rjO2EloS7YZHWJ0?= =?us-ascii?Q?hUHiljFPK2sB1vx+mkPt4V0ffcS5lhNwYY1AyXbiGdq/viTdv6FQx1LbJpzj?= =?us-ascii?Q?PSOdPC5OD3Xa9L0BMDbxbZSVMhAgUz3Le6agHtrc3qxg8c/gY8kHSx6noaoq?= =?us-ascii?Q?i6iV26ZP23AHJjUkoHMSjX1Oa3QGD?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:AtVfu2Op71FCnE7UGqPJI8ElUOpfCLmHIdHOBge0tg2rUq1x9OVCujN008bBgQrqsHbcurBvp2r/CMlfyn/Fk+Y1gUnNwWbbzNe/NSuRiB8jEpkyUD5zyoJCuybwmcl0zdEhoBHkZ1JDFdzRmGu7NzInzegxl2iL3630NnLU5VNGSVEab51hSDNhTqzScyvWbhwgY3Dzxl3TRJPcWwJdhn8AqN79poZNIicxXiXzDRlRprM+QsO4BKJ2uGBwlEGqGdNcvofdRP2lmh323Utc6jELFCHW5BuwqsI9rMPt5pt5N2trK2wAlnQMUAAlR6htY4LGRgNNcPkxpM1vz8sMITqY0HN1omdQ9T77wJzWQQALh9EdxcONuuR0LvqrtWYHO9rDXf3Yg5hwvRaTGVCoKISD3m0Rx+JFZP1zc4QR9myTDoLDvbOndCvDM3ErplXNmHAMB5ncw8S379Gr8vLpXj5/RTLWtgdVW3jf9+NInwGVdKf5nLjmBVu5jy1ZXPP8fZYBBb8r1Xzf/YbNU5AQqA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:QEO0bgfQ/UBVJyRy4QVm5mBjXEOuSfaKUgItMZ2kcQhmHwEu9DCfuz/WDHWcEFNkG+G5ZRy+kJz95GP2/fi9GXSUL6PHeW1ZIE+r35yRHljJbXljkflPhLn7xYg20k6q7xm3Xeivh438mF8nXbxLWcTFbVEPDpUSNSB19DsHAE9b/nidk6XSOGqTDadd65G3Jgk1SFisrnNFyuwmtFu/+7vsLkF9WEfOrmmv/cWEE4ogn5lxNHLxAsM0D5pJ8jJTgIuZql8vdZIRfTTxntNm2pb5L94jbRZSpnx71TMbacbe3IE9zVH9AK27IpUSi4Qah5z+4Bgq09X4dCNYKD2x+n/OpgW3vSLfWafHeN5VCg8TyLCXvQaWmAAD2czRRtUFivrWSwsZP+oEToKSVKlTT2CFtXhdkopxCkWUwWPwk1J1Gegy21AY0uZyY+QtUcruV+oMVQpBYEW+IoMeV9h2EJkWYVv8TE0KPjvyzsftZ1BejG7CQEfvqUBAaZpy6oLA; 24:utbjBJ1d0oBxGK1BMAm3l0fqPopUwdriTMsPdx4NOafvlX8K5OXIblHek3j6GLYZJxRzsMDi1830odL8pR4X2dCPsCCl4VEBsNoLwZEoCY0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:702tHjw2aMl5+hT/bn+PCd6plbyPagPdQ8cP49/Y8SMiccIvWXI4EsDPBwaD8B3l0Y4WaFqr4OmqCqEZ3DMXe3t78ztXToxSOj8l0oES4XnbcRiPHY0/HbokcJP5SZYFK0VT9H47BeIDPSFpjMvdc/+Od+OGMpoxz/NaOjRW4U/xy2n7saPG3lSuV/iAtzEcPB8euuiZpHnbv4eFajlhCI8bTERCd94FJLAouf5LJNIaL6nGVRMoV78SvIZVznrhJ5cPWNFYZphto8D3dUxVkzKLUSLE4X+/MHCeLLeTEwtgGEWjplIJoagsp8qkpnnAVY1nJf6eroo4SB1Yc15Tow==; 20:52TkHgbCYL3J1jB2MByVQq7jMug1OlL2EFCM8zgMsPAYr89cuNw2ZWTUAM+jnA2jq6eixhgVtxQejyx9XebxitFJvFJQDm2APmkl+cVC0gc8j8Qr1v06hqBQ6NWcQ5NZuYIQwLG+mPkYnezqsMjyKCe563IUYJBAAQMEwALX7Xw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:03.7405 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.95 Subject: [Qemu-devel] [PATCH v2 06/15] qcow2: preallocation at image expand 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V. Lunev" 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" From: "Denis V. Lunev" This patch adds image preallocation at expand to provide better locality of QCOW2 image file and optimize this procedure for some distributed storages where this procedure is slow. Image expand requests have to be suspended until the allocation is performed which is done via special QCowL2Meta. This meta is invisible to handle_dependencies() code. This is the main reason for also calling preallocation before metadata write: it might intersect with preallocation triggered by another IO, and has to yield Signed-off-by: Denis V. Lunev Signed-off-by: Anton Nefedov --- block/qcow2-cache.c | 3 + block/qcow2-cluster.c | 5 ++ block/qcow2-refcount.c | 14 +++++ block/qcow2.c | 147 +++++++++++++++++++++++++++++++++++++++++++++= ++++ block/qcow2.h | 5 ++ 5 files changed, 174 insertions(+) diff --git a/block/qcow2-cache.c b/block/qcow2-cache.c index 1d25147..aa9da5f 100644 --- a/block/qcow2-cache.c +++ b/block/qcow2-cache.c @@ -204,6 +204,9 @@ static int qcow2_cache_entry_flush(BlockDriverState *bs= , Qcow2Cache *c, int i) return ret; } =20 + /* check and preallocate extra space if touching a fresh metadata clus= ter */ + qcow2_handle_prealloc(bs, c->entries[i].offset, s->cluster_size); + if (c =3D=3D s->refcount_block_cache) { BLKDBG_EVENT(bs->file, BLKDBG_REFBLOCK_UPDATE_PART); } else if (c =3D=3D s->l2_table_cache) { diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index ba8ce76..88dd555 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -108,6 +108,9 @@ int qcow2_grow_l1_table(BlockDriverState *bs, uint64_t = min_size, goto fail; } =20 + qcow2_handle_prealloc(bs, new_l1_table_offset, + QEMU_ALIGN_UP(new_l1_size2, s->cluster_size)); + BLKDBG_EVENT(bs->file, BLKDBG_L1_GROW_WRITE_TABLE); for(i =3D 0; i < s->l1_size; i++) new_l1_table[i] =3D cpu_to_be64(new_l1_table[i]); @@ -1821,6 +1824,8 @@ static int expand_zero_clusters_in_l1(BlockDriverStat= e *bs, uint64_t *l1_table, goto fail; } =20 + qcow2_handle_prealloc(bs, offset, s->cluster_size); + ret =3D bdrv_pwrite_zeroes(bs->file, offset, s->cluster_size, = 0); if (ret < 0) { if (cluster_type =3D=3D QCOW2_CLUSTER_ZERO_PLAIN) { diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 7c06061..873a1d2 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -547,6 +547,8 @@ static int alloc_refcount_block(BlockDriverState *bs, } =20 /* Write refcount blocks to disk */ + qcow2_handle_prealloc(bs, meta_offset, blocks_clusters * s->cluster_si= ze); + BLKDBG_EVENT(bs->file, BLKDBG_REFBLOCK_ALLOC_WRITE_BLOCKS); ret =3D bdrv_pwrite_sync(bs->file, meta_offset, new_blocks, blocks_clusters * s->cluster_size); @@ -561,6 +563,10 @@ static int alloc_refcount_block(BlockDriverState *bs, cpu_to_be64s(&new_table[i]); } =20 + qcow2_handle_prealloc(bs, table_offset, + QEMU_ALIGN_UP(table_size * sizeof(uint64_t), + s->cluster_size)); + BLKDBG_EVENT(bs->file, BLKDBG_REFBLOCK_ALLOC_WRITE_TABLE); ret =3D bdrv_pwrite_sync(bs->file, table_offset, new_table, table_size * sizeof(uint64_t)); @@ -2104,6 +2110,8 @@ write_refblocks: goto fail; } =20 + qcow2_handle_prealloc(bs, refblock_offset, s->cluster_size); + /* The size of *refcount_table is always cluster-aligned, therefor= e the * write operation will not overflow */ on_disk_refblock =3D (void *)((char *) *refcount_table + @@ -2158,6 +2166,8 @@ write_refblocks: } =20 assert(reftable_size < INT_MAX / sizeof(uint64_t)); + qcow2_handle_prealloc(bs, reftable_offset, + reftable_size * sizeof(uint64_t)); ret =3D bdrv_pwrite(bs->file, reftable_offset, on_disk_reftable, reftable_size * sizeof(uint64_t)); if (ret < 0) { @@ -2845,6 +2855,10 @@ int qcow2_change_refcount_order(BlockDriverState *bs= , int refcount_order, cpu_to_be64s(&new_reftable[i]); } =20 + qcow2_handle_prealloc(bs, new_reftable_offset, + QEMU_ALIGN_UP(new_reftable_size * sizeof(uint64_= t), + s->cluster_size)); + ret =3D bdrv_pwrite(bs->file, new_reftable_offset, new_reftable, new_reftable_size * sizeof(uint64_t)); =20 diff --git a/block/qcow2.c b/block/qcow2.c index 067bb87..c6fb714 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -464,6 +464,11 @@ static QemuOptsList qcow2_runtime_opts =3D { .type =3D QEMU_OPT_NUMBER, .help =3D "Clean unused cache entries after this time (in seco= nds)", }, + { + .name =3D QCOW2_OPT_PREALLOC_SIZE, + .type =3D QEMU_OPT_SIZE, + .help =3D "Preallocation amount at image expand", + }, { /* end of list */ } }, }; @@ -754,6 +759,15 @@ static int qcow2_update_options_prepare(BlockDriverSta= te *bs, r->discard_passthrough[QCOW2_DISCARD_OTHER] =3D qemu_opt_get_bool(opts, QCOW2_OPT_DISCARD_OTHER, false); =20 + s->prealloc_size =3D + ROUND_UP(qemu_opt_get_size_del(opts, QCOW2_OPT_PREALLOC_SIZE, 0), + s->cluster_size); + if (s->prealloc_size && + !(bs->file->bs->supported_zero_flags & BDRV_REQ_ALLOCATE)) + { + s->prealloc_size =3D 0; + } + ret =3D 0; fail: qemu_opts_del(opts); @@ -1597,6 +1611,129 @@ static void handle_cow_reduce(BlockDriverState *bs,= QCowL2Meta *m) } } =20 +/* + * Checks that the host space area specified by @m is not being preallocat= ed + * at the moment, and does co_queue_wait() if it is. + * If the specified area is not allocated yet, allocates it + prealloc_size + * bytes ahead. + * + * Returns + * true if the space is allocated and contains zeroes + */ +static bool coroutine_fn handle_prealloc(BlockDriverState *bs, + const QCowL2Meta *m) +{ + BDRVQcow2State *s =3D bs->opaque; + BlockDriverState *file =3D bs->file->bs; + QCowL2Meta *old, *meta; + uint64_t start =3D m->alloc_offset; + uint64_t end =3D start + (m->nb_clusters << s->cluster_bits); + uint64_t nbytes; + int ret; + + assert(offset_into_cluster(s, start) =3D=3D 0); + +restart: + /* check that the request is not overlapped with any + currently running preallocations */ + QLIST_FOREACH(old, &s->cluster_allocs, next_in_flight) { + uint64_t old_start, old_end; + + old_start =3D old->alloc_offset; + old_end =3D old_start + (old->nb_clusters << s->cluster_bits); + + if (old =3D=3D m || end <=3D old_start || start >=3D old_end) { + /* No intersection */ + continue; + } + + qemu_co_queue_wait(&old->dependent_requests, NULL); + goto restart; + } + + if (end <=3D bdrv_getlength(file)) { + /* No need to care, file size will not be changed */ + return false; + } + + meta =3D g_alloca(sizeof(*meta)); + *meta =3D (QCowL2Meta) { + /* this meta is invisible for handle_dependencies() */ + .alloc_offset =3D bdrv_getlength(file), + .nb_clusters =3D size_to_clusters(s, start + + (m->nb_clusters << s->cluster_bits) + + s->prealloc_size - bdrv_getlength(file)), + }; + qemu_co_queue_init(&meta->dependent_requests); + QLIST_INSERT_HEAD(&s->cluster_allocs, meta, next_in_flight); + + nbytes =3D meta->nb_clusters << s->cluster_bits; + + /* try to alloc host space in one chunk for better locality */ + ret =3D bdrv_co_pwrite_zeroes(bs->file, meta->alloc_offset, nbytes, + BDRV_REQ_ALLOCATE); + + QLIST_REMOVE(meta, next_in_flight); + qemu_co_queue_restart_all(&meta->dependent_requests); + + return (ret =3D=3D 0) ? start >=3D meta->alloc_offset : false; +} + +typedef struct { + BlockDriverState *bs; + uint64_t offset; + uint64_t size; + int ret; +} PreallocCo; + +static void coroutine_fn handle_prealloc_co_entry(void* opaque) +{ + PreallocCo *prco =3D opaque; + BDRVQcow2State *s =3D prco->bs->opaque; + QCowL2Meta meta =3D { + /* this meta is invisible for handle_dependencies() */ + .alloc_offset =3D prco->offset, + .nb_clusters =3D size_to_clusters(s, prco->size) + }; + handle_prealloc(prco->bs, &meta); + prco->ret =3D 0; +} + +/* + * Context(coroutine)-independent interface around handle_prealloc(), see + * its description. + * Must be called on a first write on the newly allocated cluster(s). + * @offset and @size must be cluster_aligned + */ +void qcow2_handle_prealloc(BlockDriverState *bs, uint64_t offset, uint64_t= size) +{ + BDRVQcow2State *s =3D bs->opaque; + PreallocCo prco =3D { + .bs =3D bs, + .offset =3D offset, + .size =3D size, + .ret =3D -EAGAIN + }; + + assert(offset_into_cluster(s, offset) =3D=3D 0); + assert(offset_into_cluster(s, size) =3D=3D 0); + + if (s->prealloc_size =3D=3D 0) { + return; + } + + if (qemu_in_coroutine()) { + handle_prealloc_co_entry(&prco); + } else { + AioContext *aio_context =3D bdrv_get_aio_context(bs); + Coroutine *co =3D qemu_coroutine_create(handle_prealloc_co_entry, = &prco); + qemu_coroutine_enter(co); + while (prco.ret =3D=3D -EAGAIN) { + aio_poll(aio_context, true); + } + } +} + static void handle_alloc_space(BlockDriverState *bs, QCowL2Meta *l2meta) { BDRVQcow2State *s =3D bs->opaque; @@ -1606,6 +1743,11 @@ static void handle_alloc_space(BlockDriverState *bs,= QCowL2Meta *l2meta) for (m =3D l2meta; m !=3D NULL; m =3D m->next) { uint64_t bytes =3D m->nb_clusters << s->cluster_bits; =20 + if (s->prealloc_size !=3D 0 && handle_prealloc(bs, m)) { + handle_cow_reduce(bs, m); + continue; + } + if (m->cow_start.nb_bytes =3D=3D 0 && m->cow_end.nb_bytes =3D=3D 0= ) { continue; } @@ -2720,6 +2862,11 @@ qcow2_co_pwritev_compressed(BlockDriverState *bs, ui= nt64_t offset, goto fail; } =20 + qcow2_handle_prealloc(bs, start_of_cluster(s, cluster_offset), + QEMU_ALIGN_UP( + offset_into_cluster(s, cluster_offset) + out= _len, + s->cluster_size)); + iov =3D (struct iovec) { .iov_base =3D out_buf, .iov_len =3D out_len, diff --git a/block/qcow2.h b/block/qcow2.h index ba15c08..a0d222d 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -97,6 +97,7 @@ #define QCOW2_OPT_L2_CACHE_SIZE "l2-cache-size" #define QCOW2_OPT_REFCOUNT_CACHE_SIZE "refcount-cache-size" #define QCOW2_OPT_CACHE_CLEAN_INTERVAL "cache-clean-interval" +#define QCOW2_OPT_PREALLOC_SIZE "prealloc-size" =20 typedef struct QCowHeader { uint32_t magic; @@ -294,6 +295,8 @@ typedef struct BDRVQcow2State { * override) */ char *image_backing_file; char *image_backing_format; + + uint64_t prealloc_size; } BDRVQcow2State; =20 typedef struct Qcow2COWRegion { @@ -493,6 +496,8 @@ int qcow2_mark_dirty(BlockDriverState *bs); int qcow2_mark_corrupt(BlockDriverState *bs); int qcow2_mark_consistent(BlockDriverState *bs); int qcow2_update_header(BlockDriverState *bs); +void qcow2_handle_prealloc(BlockDriverState *bs, + uint64_t offset, uint64_t size); =20 void qcow2_signal_corruption(BlockDriverState *bs, bool fatal, int64_t off= set, int64_t size, const char *message_format, ...) --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 149633055538471.80417868530606; Thu, 1 Jun 2017 08:22:35 -0700 (PDT) Received: from localhost ([::1]:45211 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRvl-00067R-0s for importer@patchew.org; Thu, 01 Jun 2017 11:22:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51610) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRod-0000Gk-5t for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoa-0004hZ-0U for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:11 -0400 Received: from mail-eopbgr40094.outbound.protection.outlook.com ([40.107.4.94]:49888 helo=EUR03-DB5-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 1dGRoZ-0004fj-L4 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:07 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ulcwKxAi/eTMffG/43F01jmTDeBVEd6Pa1OPa9lM8qY=; b=DXraiFlJXInU14TDmWhxpoOuqKaLuWc5iJDxILMeWEwOIwVRXmZ63zTYC0qbKSbKZw+Fbz/cvl54H41q3RoQnYjKxZ4niEox4TvCcM/3j0aJv6avxfcjiSUa94pOyEEOFlK1FG01ubeWDwlWfWJnPFdYfIcjjf1PKfInyzn7SNU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:25 +0300 Message-ID: <1496330073-51338-8-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: bb22b64c-0a26-4e67-abd5-08d4a900fbf0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:fFDjXNXiZjbriCbYkZ3nvXBoFEpI2EGt3OkTnr2WRifDaNuN6GIPr4j2zXZckDYCOPRmUFEHbRKL0Hb+M/My9T0YpbYHH5PoQbuk/e/I65zvZfBIHuhPvm10NB2ZNrJeMsfbJhxGX+CpcpbY0Ww5kmF3Gv+2GJrsnHKJbgjyGXeR6TjbVMkMsdynJmjD3Q3JiXN7+Wsv6suDzZSZgae80bwPK06rDjyjEDpjRKVek9iuVm5Z2WKMUeyUCS6zOZMA4aYSgIyJaqDERnFekaXaimZFPZlzN4rRlNO60QvlFqzxsOEX7QZgut1tG+vgfZ2DVGdjiIauXr1bzSiD7GmjPw==; 25:Qsnl6npAykT1vJbYWj9CpVHw7kbFiX7P+XRcCxCP/4zwy6AZcWkqMC8yr/M+8Mhjs2DtfqJb3ZLaxTXUugJ84eLdYhbXc4ginBcQblJAk0OV+KH4uLfCGIYuA6HjeIkU4VVapaY+IX86bN4FsNAKa/SXSyQbnAfP9Hx/jsohI96Y2zAp4gSunUPRMaN3VpmoGWwwm4xORBwvkuctCFmLrLYrxyvWBf2680Bd3YmjbbR2wTy6VRDOFniY93Mmy+Sz+Ov/O0AV2bGnmRnQ6dGBVqv4l4d3E9j9Ans/Dde9y+X+0hM0nn1AFHDrN3GjfRRwaHCOWiuuNiovkfYnAy5l+NyzdeyVU1FMWcNSThajHqH8tI1/sJJN5d+w0aPNVhiZ5Fye124EwP70Ej9QqTl374uJCVs/7zLLcnRCZBjFk3E1gTnSlKq8nZAPXErIeoCXbMPcgYViz+mQ6UcKo+i6X8d6Tdq8PesQ/SQ5wYPFDhQ= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:N0iZzomtllYQCw81tzzSmzUSKvHk0SL/+5UlcAHkl/HTYVsboL8WOT+7wVriRo7u982g7ZSoWOX4lFRBTWXMXRPMZw1HOlNawUNufQrFrl8uDncdVqdqQwsdFuruAW54x2fQTVvSSzUlsFMxRmpnNtLqS38a7jLeMBRRhw+B72sU2w35LxpYUnVNZnr3d9v9d3u72n4zmdxkPDQfyTzN09JVMukI4yZIE17Z5MYfuOI=; 20:OdH7qdymZ++IWxceSlGynptRssMnaFzDPtkFcXJVl21ev2xLQ32FEGseizNFzTxq4tYLLtq2VViHOrgVB8hEB3czAjIHtWJnoUNRvO/qI9TbJD/F9tRdG/A9qFC5dFeDplo7b/fIgU9/STJVYZL10DgfYdVacVYjJq/PIKbr0G8xdEz72NJYTNMbApCJ3wD75gXOf5poE4qQFkdvHVaxAH6uuragBx1t+uzQBvjJfi28v2MszZob3Gx382PeQLQ2znzadXsHr3qqWHiuNIDtHv/28gEV+UT3x3rRhsreUKlpx/+bE3Uaqhr8IiRyllLgRJWFTO/CvoUkR9K+BzJv+PtpeFBfLIAbqR7boP6zoGwbWXziuPQfpAZkVABACHrSfDdAk4spWg31uTQu1zwut7rGTzjUZGkh+HSHig6IhMA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:lj7sSGcHwPxiLjfrjXey5PlMEJshmr6VWrhDsAvm?= =?us-ascii?Q?JmnNMB65j0ly+KH3EitCOOGSmRBEA3eTHSgJacjNnElnMbg3GSsdtsoPOSk6?= =?us-ascii?Q?MTMQQwKp+Xzuv+ZZKUG23aVRD9YfjXPQ7cxfJdknbEDHgBcDYdKJA9XjVb1g?= =?us-ascii?Q?kbYeZWMgDns0fvw0VgS3wjQuxvOe+E7ybyV+SGbOqwNQq3wrmWwblZc59QlQ?= =?us-ascii?Q?qX4NlhICwYRmlFWuMUFJ2rPxgqUgjVWNR3AECDQbd8G1GbjLoByboZQyvCXD?= =?us-ascii?Q?o7wBBztmq4NHKCHJYgeiLqH5B4R0Ln4+uEpb0TRJapUCDzuTwb0e9uQxYduv?= =?us-ascii?Q?jKtGbzORkchXrvetWKqDL1H5pDViTEVrcH6uxVLOzbCZbh7/aYPgp8QtcKVp?= =?us-ascii?Q?VFni7QxZSKzWK+raDYz0Xgn2xa9Dc8aVkLiOTHdjq79vgvGIUu0elfrgrlKF?= =?us-ascii?Q?Eu40z5F7EHeAYTDSV28SAgRf3wuOgdE62Os0DLBs0ZXBe18yjq4c/K/C1OMr?= =?us-ascii?Q?hPRe65S3fmBPwMi7nKjjl6KNfMbT5iX57H2TqRiPbur8EVux2nLPrDZ3LItx?= =?us-ascii?Q?r8dAE5/n6oz9pvz+dVQlK2Nnbzi1H0oL/d29ME6vOQSi4fbvKmBcMZal+Izh?= =?us-ascii?Q?5f3E3xHg0Wb3i6wuUyqqyC/IWH8l9FQaYGVyCFC+LetrM64ljU6U0D63E9or?= =?us-ascii?Q?hAZV0cjt9+JypW7Ag65F4r4N+pY0PdNzO3oycpLsJMNsig7PJN7JUd20N57D?= =?us-ascii?Q?tK8OjYbb3UVrcgiAxWRMg3Xh+M4wbqZgH0+R1kf/Z1543V5hNITali/8zJUv?= =?us-ascii?Q?emUQTZ2Qpbo+dv/82s0+3beyKOpa7W13WkSoeTYri622oXrmU8E+xuD3NYyp?= =?us-ascii?Q?1E+LeawM40yoIH+T0XVSpKdXRAt4YuvuSFnhcDwxAAz1+6H79ZWya5nvfRwD?= =?us-ascii?Q?emeuS/I24I6R754NTOTbwU1GqSajrUu7vSAKsHsz6USuQihibITk1oDftyGq?= =?us-ascii?Q?wstfitsktvI9kZFSS+TQOV2PQcvuE4Wh+E1AAOnwrgn/d0/f3QTy0CU9cxFF?= =?us-ascii?Q?+hAi54Hk1gcmye+DO0EafpJqo7o9WE8OxLTTWU1y35Psh0pqryUvilzbctQ6?= =?us-ascii?Q?kzanxRrYaJTvtzFwRSVAg0+KPQbbV9+I?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:W1ZRzMNVmi0Gc7IJl6m2ECZAnJW9i0G2uFaCR+C?= =?us-ascii?Q?l2ye7/dDNzmgC74wcKvBnjMhI8PXKXMXLnyjbLY/0Rbynl7/IVCXie7Uz7qo?= =?us-ascii?Q?hI4RCez0LuR4PXK3pywsa5n0cPJhhe7ALlxx6AXqglsVlZ3sDO4UnaZKlnTx?= =?us-ascii?Q?yNLny4RaqJ+7iWVuqpMu5NxnD9cZpO8vj5A6uOOBBHywvgktsP+aM65GcEb7?= =?us-ascii?Q?sb6QbgBV2EqcMVAwf41QJg7X7ZQ+PVghuJqBW97wsc9M0pdPtKhry8iuUHtD?= =?us-ascii?Q?G7h/NOpVSN02smATQEtJjdE/YhWuGupqkat47K3qkxQ1BObHgVIQvc4Ykk+V?= =?us-ascii?Q?c14tZw0WdUIfx2KtjCKhJ8u4IXo/93qdCV4bkEnjlvInU0aN90Q8pbwL1LcL?= =?us-ascii?Q?KNyADRBZU9UnNciaXSgOZ0/x/W6chqOhn+jipAjY2cjbGDyT7k+baHVyHcN0?= =?us-ascii?Q?eT2ZgvTZSiI3c8CTXh5Ych8GXi5wdeDM1DI8alurJZuHeAy7jeO9zc/X7AIl?= =?us-ascii?Q?t0aVJUklBKLPnqXbzWHKc2eEX+Da1DOhe7nMjPLZoJR1jNZmqjTwhRAb/roy?= =?us-ascii?Q?rklRQvnf0BNCoMw/L/RWuRAX3kbr1zKRdy3LItLAc5iMsNOe1eIRnKGcs0Jv?= =?us-ascii?Q?5lhfyTyMcMDOhwR/U7Bp3VHEwFCp0axbkDzbhgQ3apQidlnDNohvryUGfQZG?= =?us-ascii?Q?KjHP6b9xe/NZEhu7pYC1Kko+fRXTchKVsR47jpP+M9f5M2mXrx54hsQAKXfd?= =?us-ascii?Q?11zEVX6zDg5J0JAayih8jvucHKdq0xBh2s+pUcpgd7EksU9r24ytyqY0ezoc?= =?us-ascii?Q?dlboRQ7g7OSNWpfTma9mJUcFuyB1CN1XLHvGhczpXxVqsD9/YEKmPzvBukD1?= =?us-ascii?Q?ajVgEMwP3pAwYL7jLy6s8DVe1kP2J9Rtx4Y2qdfruvPqs+fJpcGLpCzhytAk?= =?us-ascii?Q?PlS2nDyhlPjLGjkucpYAguJP8GYPmXxmobRbzjuk17RxMo+rPCcCWNheYB0I?= =?us-ascii?Q?gPJoUQu9xNfbNFb5E+wXrax9C0UAd9+F6s8yTYjguXGByL57pytvZPDB4Qyy?= =?us-ascii?Q?mkKyc56o=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:U4HYJuFNkYVZrEYimeJex9n0WIgAkcBVCGjA0iK14ZmkFJMIoXhHtdCPQpQf1KHg329uy5a5rKlqF8MR9xUHiwqaI0SgAbjVQpSeHA8Aa8mzD8xwWW/PNeRHQIhrKOiCzATlK3QbTxPCJXbXmlbmrmdhOjUOTDL2UNn+qDo5xFkuqSRFP8xy4rfQlALl5xOd/fDASMycU2JXMZZ/S6KUVcPtMOrM03VaZ4/G7csu/ji8TtcBQ+8luoi8IDedQRrhzzLzie6PKBrfCD6w5mb5fHg31/PmLQM3yu8KeU9+qbvvEfQrLNH0BU/6y3LnQb/W4e9RCRCPYl+0729iC98gNB5RoyXwZ5aYbRI2SXlGozt8JePaFsuaRm5ABsfXeeAEdyIy0lIHR35CkNkZfQX6veXdLC7JgtLFA0Y5ZfqMteuwV8nrflcHEnHtINky+VxyHEWLWPMRBIEpcr76dCPqDuyXDqxfRIETc4YVsVI3K/RHs4PbilVAftEbIIwI/p8rOMGVWuwUjrEMNGGfvsDE2w== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:e+zR3Ekzp58Lbkqo6KasAsNZz7ctL5EdKyZFssKC0yH8OR6RSx1tjdRVCTWGQqqDMjfKk5Z5R18RuCopKPA3Wb425drWMj/VgTrqzrajFrIR+0RRvpTfgEW+bMaKB9IwbT1w4yJxoWV2RenKMuiMMWiZjpCcM2fgP7QRCMUGC71EJY1JrVCOZ9hmrXGNBZuj2qbDI/8lq06APlqMFMk/+72YSuJiXWKDy6aE0H0nEp9ukeP8vQoLCDN5MrtHSzm6doHFsWMEVhJ2bWAF5IRQ3ACdummUj09KI49odfwelA3/uq6PmI5eojZTQ93JvdV/C19w8iWdj1bRILfE0V+Y50e2ouHoDyhaNzO5W6SChy6A1L44dH3TYAUeQYK1ih0/Z13/lctuNJ9HttHmhxRxHDOp7lH4XVs20sfhAoRvie8PoIOuXFfX8x51vLsAcGx68/u0rvvbko+gaYy2KthtLE+87lI4ggqkhKzvJCOgNY/MJ2/qAEUrwtdwx0anoW2I; 24:Ec/VN9bPwG2bsR1vD+FsHFR27rCO+2mwurdRayuGn9Ar+0pFKSuo55AjENtvGTl4tso29BvRsnbhH3PuSVSHXhK3DmSUK+TInmoGTAnu3Sc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:g1US/8cMcvGzFHNk1KfsVxGhb2YeaSZeXjHGUv7WttXGZJqo4AgSugezQ8b1Pq6PREbN8pXyZoPSeDxzXPqs+eN/bk+Hv5toCfaHVWuyCp+WQNbizjrFHzIcjDvEMoAgOaBiVdfwfbLQBxu/oBCZaM8JMMUTlfOqOFGbFAaRfuEFopDCHzT7IlVf+Yrz/gVGCji+eK+rg3gyhw8QG+ZrK4zESdqWh8eX8RwB6uT9ICOuBjefDXA35f5VaACjtILoBxYvQGacYhJpqbZxEp/O6gZtl4yX4yFcMash8tFMSy6FylB3KN4fTOLqPtTaJkH8j62bO9qLq9YUoOo6PU2K6A==; 20:5TAeOIK9+Dhdn9vOk2F5yD7x7pUcDMRRGX2PNR202H5ysKY1BZYHxkmNV9U5P9ZzxAe7aC7ekIHPgQ3j9q9JW5QL46f/7Y9MBXWd1G5Ns+PsDaDZMyuakay7Yt4Ltzep0ZoUshkCyXQEjJwe8mZzj3V//N23Mm47PW72c0wu3Cw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:05.0061 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.94 Subject: [Qemu-devel] [PATCH v2 07/15] qcow2: set inactive flag 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com 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" Qcow2State and BlockDriverState flags have to be in sync Signed-off-by: Anton Nefedov --- block/qcow2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/block/qcow2.c b/block/qcow2.c index c6fb714..b090833 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1932,6 +1932,7 @@ static int qcow2_inactivate(BlockDriverState *bs) =20 if (result =3D=3D 0) { qcow2_mark_clean(bs); + s->flags |=3D BDRV_O_INACTIVE; } =20 return result; --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330719767363.30302982497346; Thu, 1 Jun 2017 08:25:19 -0700 (PDT) Received: from localhost ([::1]:45225 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRyL-0000C3-Mr for importer@patchew.org; Thu, 01 Jun 2017 11:25:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51609) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRod-0000Gj-5N for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoa-0004ht-HW for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:11 -0400 Received: from mail-eopbgr40094.outbound.protection.outlook.com ([40.107.4.94]:49888 helo=EUR03-DB5-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 1dGRoa-0004fj-9z for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:08 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BA2XgkapURGBsoGBENcXnDa/0F1LhYFKh3F/WYHE9uc=; b=HcOTycO7OAMp3DqSJdBe6q1PsxHUT+5UWbKEGvPCRGjvzkSwj/berZZahuKfdaFyFakmWV/qeflj+0flOqVczkLKpNeZVwMwF8lKjx//bMy8UrtSCcxheHM/OCkQzCxhkh+wuBp/N0sxYwdWxP4XnrshHNVuGkV2OPs5SjAqyGM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:26 +0300 Message-ID: <1496330073-51338-9-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 577d35c8-7cc2-426e-68e7-08d4a900fcaf X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:g69exEB5p1oZrqDoPBKdg3HP13kgLIq+s4IKTeLh9OGFL28agCM+BrVE7t3B3mjWwOki3AFQTq0fbP1UshLD5LrS/iG+rzq+EAhZA8wU2xwINJ2qCMqe5vTotJ4n+sqbOWBnjWi/g61cwMGUJNSVG23Rbw9sdp4bBrEDyiJgj5/2fYa79pzLmc4z0Fxp9lIr+BVjopos1EFUPVtcmA1oMaIbXomRjpGII9ugeBn8sljNW0wgxKKnC2GGAld8R6PxcACJ0+ThUG0mmDqfjo3YbRTCkzGGZY60sh05EoLEU3ccB791Bm7E0w0If5hzld6RP0BS0zFnLLcuyKRrjeM9Zg==; 25:QsNstodDzan/UijNbbIKRYR8wVITTyDO2xADAW0UhLZB2TfohuMcks4t65nkJHj64jf+nrnXTNtmSZVO1Za1WBNSf4Avtop/3qA+mjb5i3bYnVX7klftXUuvPcb0Apzy0EIDanT6QwMUpSys4WnbupJCl2FHh+va8rqVnwgyInCiun3WfZLjtOXj/4md46+BXxHsMPkZ1bYPt9JemTT0gp0/3nclRl3FhsOobUW4CQYKpmb+hAHglOJGry+PNFnv6sZqfzTui1MKzYKdShB6/QifVS6NMGjatdHgaUdcCDMKYIieOQ/rPS1pFXzrzZhXejTyyjj6WUh5Nb58XYj2sTEs5DWYdJxeuMI9vg71KeNlzScxIzigMNPTS6HpjUngIU9VSvvSmgcE/Eg5TMRkFfAZWRoqyBcMpatb2ZARwXIjsTF8DSwfB6VBozq++qOSfEUE+Rf9vL2B+UNkf8z/pQ2Uy/6UmU2fbeMvLhC3bZI= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:lSRNk7/C3LrA5PcawqaOSA5YPFYX2hWVnZN6UYfF6xORJ0I584MZhzchZut/TkddmhzUU+D4Bqh3VX74UAaSyNjZzc0+3ERBxvCVuoqPvDIKS1RrUtnlq99edywlLosG5Lce01PSXyKyOuUzpkbzdre/qnSQmgCAuiumx2j18WuDng2NaM7fwlHgCDatsY/D2WzyrRFUBI5n80Izp9mjIHDgVa83GmK5sNi+5jUssrw=; 20:WZhTQHNjhuAL67fKMgoPowUhFwmlhh9DsZZAUcgFRIYPw0iM9YiRZrdOmUEpqlALkkvHgiuwVNvwBPYKjj8T8wWcK1Zi/A3coZvKIJcQBjPQ4t9e/lsL30kXT+FiBVxNjo8eoF42N0p6QWx+E+2Tlk6t6XsI52PgzUW7ZmLjYUHvmXHQ8k99A5VjHTXGI/SX1a7WQNRqONqMZqXmB4Pm9F6WMHewwJCStBiJTlvtsOoQVcNM7iPZmfeTpjcpWWc1dnR818XoVt+Lx/ePgKk/cuCNJh7X+zIxwsJrJhmdr31CapnrYcObsWIIteS2SRMRbQDQ01aQe+47sURj5Z3N+p6LfovAaGiwauybZs5Ev95Q6pt89JRNvnTn9QZF3qqArzi0rl16tM/T6TWSoUYZXhgpu2aJdD5Cq94+bKz3iG4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:naJxMw7KiJ3ub+JtxGSOfFcqJ8YRjyNb5sqPbezf?= =?us-ascii?Q?mUXJqnerTmjf26RiQ8Vw1BsVmdCry7XxDCPVCiT1dsYVnEjNylOyeQ/L5zGB?= =?us-ascii?Q?rpbHmxPgEp3WaEFshoj/Ud1E+ARV5LflN5YtM7J3VE72NkkFBPMMATzoW2Vb?= =?us-ascii?Q?minWmPMsd1NYXgJ8MtTv2ZrXEjgsslflYptyb9tGLqBG+jGnRYWorm7ZK4yj?= =?us-ascii?Q?TDrZnZLaQ+BVfMrDmSMFv766PzqcbskDONJJoKNH9o0Amta8xDe+UwO9eBan?= =?us-ascii?Q?d+WGfvucvoJHIhZ4A7ILXsa6QPDCoxcqPfcPl7XkbbDENTj9G91l6dTqb9sF?= =?us-ascii?Q?6pbXnWUy9BsGcfNqnuiB+RSCyQsKQd6BUMujK4bUNLDbZxt5p+XwDDMI46qU?= =?us-ascii?Q?gIGtOioFuFRbcN7auE4o268b4VerSLCum+O1WQcTNi6B4CjTRotsRz5IYr3+?= =?us-ascii?Q?y11pwlynq1vw9uvlAdEp8SqYhX+cD45rNcy26lDTbhujsfp4GIwUvMpmK42o?= =?us-ascii?Q?hJLWOwHm3nvn8bNGF1xNkBz81+guxmpOeD+3Bh6H7U3PiRMYEqJdxvYnyE3i?= =?us-ascii?Q?8wbXT6oQgQDkW2ZWjg79LM0RY1J6RCIF2Q3vDb0kWLwQ6OlraOZ51Vn+4lt3?= =?us-ascii?Q?U/loD48pMAGaFGTpDxk3WgiQMlP8/zsK5kBJY/VcvRtq6E+r2wIiKHY1x7ZB?= =?us-ascii?Q?urtZFmiDYUNx6NcJ60wYcg55EAAhcdu/mu6XnVMeWm/KanzHZlXOy1A+OTew?= =?us-ascii?Q?lRH8Wgns853Wi7PiqRbigVLBu1XyMedE2sCCJz8WXIEgTRAw01CeIFKZTLXR?= =?us-ascii?Q?9HZCh7A9uKvGKkMtB7B0tSURTul1HyYLy23VR+c0wNQWZUv+I2rfg1bjwC1I?= =?us-ascii?Q?1jlfNf9tOPlFaoxihxraLDQU0U85EPa64NOgT7KgXJ5ypsm6rDEGXfqMcMtE?= =?us-ascii?Q?Q4XdQI02STqrIBRgzJoBoJj+ozoHz7VpbyY2fc33zy4liwx2+Kkc4pEMlaE2?= =?us-ascii?Q?fpmi6V2BJA2HBF74e3dJRGTXqaWZAlCzEnvrRKSihp3iY6STI5t8kaMDRNqU?= =?us-ascii?Q?a0pX8+gvXtA1r79RqvPQ9NEGgL2z9Ddr3I25RKF6BSP5vvYT/hPrscE9GnKN?= =?us-ascii?Q?3wYfSmkGv8Asa4ywcQHOWngIYXQ0rvxP?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(575784001)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:zVpslw1xRQveRoURl1GnN7SnEeF1izK2iW4Bpz0?= =?us-ascii?Q?smG492GSsaeWjHAZ+f+9Wb/G2Sf2gZD0K45+9zwJJbQGzzj/eMcKaCI/4bPp?= =?us-ascii?Q?XFvtPNOMf029ZlCZ2U8d3+Su8kOhFTYfw6dW1fls0zzFAc+57cFRLMyyOhxN?= =?us-ascii?Q?vIVeT5BhgZUte+JZhzJMG4A5WGTQ5l4FO/JpGbC29nHFJ/coeZ6VZD8sfj6R?= =?us-ascii?Q?dUzjoRo2S6anhHKN55QATRA8swWoSHG1nIKfx8iCohK+WFpULCbXGUiUk4Kh?= =?us-ascii?Q?iFyY7B1cFmACjP56iI22RPQSOLn/pKKRsWfBcbQAklxdcZ4QjyT8tsYnVtFw?= =?us-ascii?Q?UvY0ZCfycbAn+dP8xbqWsCEdlM3lgby+k+ODj6dJCb8UAILdF0nA04E7oXik?= =?us-ascii?Q?E+Ck0UAUvcRhUMEndOr7d305s1karTmvZqQek58sVKQbMsz/Idn2uK8PDXyl?= =?us-ascii?Q?6wOIrXL/WMRBapC/0t+4KX/9iciUgJTnHpqVpKe/5sNn09xdMep28VT4gqIf?= =?us-ascii?Q?PhcDR2XCJS7IUh5DsCXXWITh6W+dmqJLGw0Rii2wlSaUhWsnB4MM5I1ImT8s?= =?us-ascii?Q?a/Xy3I7g9eGlEpbz5v3o16Td6AHTmSgMF0wJc7zyk57a/VjbwddtY8BZfm7y?= =?us-ascii?Q?lXipeWAuSH6Pi1ppxvPqyAJTARZeQDRPGWWxcCQPmqK7ieHJyx/daBFpLZIA?= =?us-ascii?Q?tvHqhJNddOBUiG8HDgbuHR1OZBlkU54BZXLDZ50azIygOCVJ0CqFfoW1vBcK?= =?us-ascii?Q?tITy703wfeODD8XWh2QiKMJ7blHgDT1QIWVTM23Nvs5unDNO/7gQeEj32l/V?= =?us-ascii?Q?lurUDzirY9yyb9RUIZL2rtQ9AiWBDMXqU3kY7RbeG0is3wKUezJw/nNSKyEw?= =?us-ascii?Q?wrv7aScrOEleiaBHM/onlDT0FIOGKup++w7a03ha0nPDuA7AvcEdfChWiS8F?= =?us-ascii?Q?gTBmmbETG/9mg6ZFRaEzn8Zj4YdK9oZVgPwWRPE3maMVUg5T+9xOLqLHUO7v?= =?us-ascii?Q?jjNcOe0TuYZ7pT9/mljvNCc7nbCV1PQF20bwBU1a4qbaZmmknmnHNGqPHStl?= =?us-ascii?Q?CNKFyMLVmtF88renXA7QC1psflinq?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:asamXk+ptof1S3Z7gmACoOB5XRQWvLmO1Zc0D4SDoeSs1VMtXqCEm9hLeyxEHwtTeMSF8tPnu0MjUAG3dCEE1Au5kxb4fWOPBlX+X1j/o/n+YenCqSZfUV82bWUc94gJ8bUiB6PJvuDe7oDwBFJXSO4F0avcubaalsjA6KJ8kbt3i8fMEf1xgd9OYI5bUFuil0pyZoPCX6fpgbAofEz4iysiVkhKBmE8gw8IMjreupJfeRnxj7/SfmFXjHJvmh+AB6rXm5LjcKaiGorQHjRsMlbe3AcydLnI569GWqeAzFi5UGWXneJe9O+z5BTIWqd44cw9HVcGxAQrGSoT4Ec+SAnh68EJ+poR1XjuO1xgPz237MmM42YVsdw7iLvFOTsxYKVQXTZwtGYOiOYDeowu54InFRURBddN8SQERKJtA72xZnB3eHl1RAjnGWDQtBBhk9NC0SPuuCXPTPk1BFoiPpd+R1SbPxscwkU/VuuczUiLLrjB8snATLJAcVpwbK4N/WUYVNM05apAxYzcJOqV4g== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:9lXGl1+URP8709WaH4XdGnDOpE2COc/2Fh5CXUYGtLt9FdP0roOiyKs5bhv6ex+9wjfhhd5FmMOSqwNC1aeUFZwiEM2GWOtpKHl9oRepaRJqWrN994zwbs/b79bVV/SLoNLgGZDtcrak5/6SBoG0UiXK8tKhjN0XknCqRD2X4WTX+mVAF8DhbFbNhyVvCEl6vY3ExbjA5mN1TzzJMB0dStKzhy9U80dmGR9u9CiH/0HN29ipbdC9R9ckZA1ChmxezpMxR3nRl5+aYiOaHH7bnNmaJMUp9rBedd9K0IbeMUu3XrieEQwpM70oRBT7jJa5oZid6Aj/9Psgql1zvhrLUGez7vySWAU2B63pEYx313LwvcF08pm9lSv9jpdGOnujd4TQXeV4meXBwyu+Cun4gQFqcuMBT4YpRTQXWUyDUiJ95U71YTBv8llIrTVqsWC0EnCyzwJFM6+bcEWfPwhKnxpZ97ThCi88LpikvxwsS/dgG35/ooXM/i8b3ZL2mhtL; 24:iMlbFEEdaMjM0Nq3Q+Hoea2u7EcmCA5uvtYNyBZBDy/7h++mvP2skB/k0MFSe6pGl1s9TuzK3/ihyFqTudXyA3zil3v0rikgLYWJgBKPSLU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:ipckjSx2uQUyiG0D+RRvR/dQwAbcvSWc4zAHYSiRsrp7Vd2zvk1MsCkgjHYN/v00499DYQ8X8n30ll3uQ3q0ZlJNg38ruF/jgZOyxoidaBoAAfuhHPJaQFzNpjLv5EtsJ5l8nLKYNSlgnWmqOtCm3HKeFdWv+bZ5nWnlDm49CDmEdexeWVWzc7a6tkwdi23QStYSQvCGS9oNyDiwPxo0CAq1NFFF61b4IGz8GX0M0rLTlU6Ki1jIzdU+7XyKI6sCNmfr5c2RTe/DGzDoZMjnWW4Odcq9d+HTnVpcy4SBcqV5T/wgvQVJ11hlhPOP2waUQor7REJ4Ll74O3HizdJS9g==; 20:dyElEVi/UOE3T33j5CoweVBybGEtGGiMp9oSAZIMGkfVXhwJtVk79ICK3nIT04zNAERp6zRMsPHno3Px4ucO1PuKYhqm0zy2gXaFW6DNzJ/UQxMJ5T2C3ICXxcF+ykYe3Ck/8+xN7y1v3O3kzOmH7+/tq7OMEYljCWH6T4DJUDQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:06.1780 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.94 Subject: [Qemu-devel] [PATCH v2 08/15] qcow2: truncate preallocated space 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V. Lunev" 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" From: "Denis V. Lunev" This could be done after calculation of the end of data and metadata in the qcow2 image. Signed-off-by: Denis V. Lunev Signed-off-by: Anton Nefedov --- block/qcow2-cluster.c | 9 +++++++++ block/qcow2-refcount.c | 7 +++++++ block/qcow2.c | 8 ++++++++ block/qcow2.h | 3 +++ 4 files changed, 27 insertions(+) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 88dd555..c39e825 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -1958,3 +1958,12 @@ fail: g_free(l1_table); return ret; } + +void qcow2_update_data_end(BlockDriverState *bs, uint64_t off) +{ + BDRVQcow2State *s =3D bs->opaque; + + if (s->data_end < off) { + s->data_end =3D off; + } +} diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 873a1d2..8156466 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -744,6 +744,9 @@ static int QEMU_WARN_UNUSED_RESULT update_refcount(Bloc= kDriverState *bs, ret =3D alloc_refcount_block(bs, cluster_index, &refcount_bloc= k); if (ret < 0) { goto fail; + } else { + qcow2_update_data_end(bs, s->refcount_table_offset + + s->refcount_table_size * sizeof(uint64_t)); } } old_table_index =3D table_index; @@ -865,6 +868,8 @@ retry: s->free_cluster_index - 1 > (INT64_MAX >> s->cluster_bits)) { return -EFBIG; + } else { + qcow2_update_data_end(bs, s->free_cluster_index << s->cluster_bits= ); } =20 #ifdef DEBUG_ALLOC2 @@ -929,6 +934,8 @@ int64_t qcow2_alloc_clusters_at(BlockDriverState *bs, u= int64_t offset, =20 if (ret < 0) { return ret; + } else { + qcow2_update_data_end(bs, offset + (nb_clusters << s->cluster_bits= )); } =20 return i; diff --git a/block/qcow2.c b/block/qcow2.c index b090833..33e5455 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1194,6 +1194,8 @@ static int qcow2_do_open(BlockDriverState *bs, QDict = *options, int flags, } } =20 + s->data_end =3D bdrv_getlength(bs->file->bs); + #ifdef DEBUG_ALLOC { BdrvCheckResult result =3D {0}; @@ -1941,12 +1943,18 @@ static int qcow2_inactivate(BlockDriverState *bs) static void qcow2_close(BlockDriverState *bs) { BDRVQcow2State *s =3D bs->opaque; + qemu_vfree(s->l1_table); /* else pre-write overlap checks in cache_destroy may crash */ s->l1_table =3D NULL; =20 if (!(s->flags & BDRV_O_INACTIVE)) { qcow2_inactivate(bs); + + /* truncate preallocated space */ + if (!bs->read_only && s->data_end < bdrv_getlength(bs->file->bs)) { + bdrv_truncate(bs->file, s->data_end, NULL); + } } =20 cache_clean_timer_del(bs); diff --git a/block/qcow2.h b/block/qcow2.h index a0d222d..e28c54a 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -297,6 +297,7 @@ typedef struct BDRVQcow2State { char *image_backing_format; =20 uint64_t prealloc_size; + uint64_t data_end; } BDRVQcow2State; =20 typedef struct Qcow2COWRegion { @@ -607,4 +608,6 @@ int qcow2_cache_get_empty(BlockDriverState *bs, Qcow2Ca= che *c, uint64_t offset, void **table); void qcow2_cache_put(BlockDriverState *bs, Qcow2Cache *c, void **table); =20 +void qcow2_update_data_end(BlockDriverState *bs, uint64_t off); + #endif --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330409051513.8370712661059; Thu, 1 Jun 2017 08:20:09 -0700 (PDT) Received: from localhost ([::1]:45197 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRtO-000470-AJ for importer@patchew.org; Thu, 01 Jun 2017 11:20:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51657) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRog-0000Mv-OG for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRod-0004l2-83 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:14 -0400 Received: from mail-db5eur01on0136.outbound.protection.outlook.com ([104.47.2.136]:6143 helo=EUR01-DB5-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 1dGRoc-0004jz-Le for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:11 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=y5CMc6LnXUOGFt5lM/kyGDHvNT7zduKmgaO/E8jlmS8=; b=VOFHC8H6Y4qP5o4qIzV8rNhsLZZuM3zGQPutl8O6Dv5d5vgNlXPFWqek/ty0jqGkEV3trwrS1YUINh9+9hMkKHBjfsUP5cgwETGjG/7LoF9UcXh+E1CZTGxRu+00LUY9yMy+fMeP7lfuc5u+C8dbL9Vweh5G6/6+npJnU4c63lQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:27 +0300 Message-ID: <1496330073-51338-10-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 51f6c74d-e2a3-43bf-38e5-08d4a900fd81 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:r0m0e6eorg0wsj87DoyFU7zmtePLHjcK95G4iCdqi50DL3zY+1FO5nblaWTvyuES4p43AAH9cEBUrOO9I1uoJpEEWwfqUGipeQf3JOxBvBOo2k1nediNzMOZ7E8jXkuDHinZFddTvBCJGojn5eGbArcc9rCNOaUScsjzFardgKZtMvcML83F0aK04n0OLC6ttxJvece75UbFrcnwKAZfqhx3mJHwQTkTDXuneZP4orEKAmj4UNsAgavlETWXURU49awJUxdQADxHDIyya0+R3uURC9MCW/xLDhRfxPOrUdFSM5Lg5rZ3aJQD0XmfOfs8GKqh/RdnhrZXjb/7xor7zw==; 25:UPdLGTensV25iptomL4dfJTM5KtuTyojhMIJDMu7n4ySXVpEKxnaOHexSJfJBw/znQBDJ1LUR+X2KWs5orpu3yZj3KycoS+1w0F0Yk4mSkqRmTEfFEIImxrAexnhDhrJYhYbM5oOEqjHfvMRaVfwhVfyyLXvzXumyMkPoj6SpcvIOvAuaiD25+N4mN1ImfAXoqjb+rfiLK1z0FTG8SOe1lq7nfLkXOW7GoE9KZLyMOw91A/FJkq9ojaAZtQTZZ7my7qRjotZcdZV1iiW3gBMPxXcrPrT28aOATW+hys3yDYV6s4GA2tlP8ya/WQhEwZ/d0NlEMdgxIBPtjdtQAvRydLOVBCsInM3TUrExgyRSbiKSQt+BukhfHqsCdXARxPkjDcpPnEXCsvtd7yEZ6IHUBhVEvuxEQofqj/WVph2yCFGyP3R2Zvfg/gAf1DKr5V+zjPTpaG3Cx0eBarI/9P1f8T1Ek45aQ2lC6fuxeSdvGw= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:hEt7GIIbnXNdbZ7lNjSIQ+z6W593xvF5gEnq97oXB1HgAyNYS7whI74uKsckC+Y7OlfFFdDhqqDp1O3NrYjUY28h23wqqJw8g5wF2WlJ7VTwXHvF4MqaB5qr2tNBHeb3HDmba7yTEbbv/VPw5fMA6or23cnD0x71WdxrCjhS+RZBeqZ+/H4yhjqKbFHTPjyegE9HX9sgmDSZcnk9sA8Qaub38b3qUmWkkEJCK4PMz6k=; 20:H/EN2yJorjGfbUc/KwPQOeuvcsAdMHI7i7MgQTFIv60TTW4fEqWHtWzAVd5RJK3n435M7vwElH62JzImVTGJ1suoZsjvcF9QIOHSsIKZg8LGr5+3o7Qk4Vxd4gArEIwFDnDpVRLmaZ2voX6CHnP1lBUy/y97/O9ppXOWP5BqjjIMiGtgHZ3LaLi0DMPjb1z2K3NqMIuPVI+DX4KMUeg75iGuEC2OPYgMjoovhxWqiEBtTCtN3+d3CahlTlyQUFSP6kbyI5LazbG/1zubTltDQ3oUM8w6m72zO1ViXEDrPEqId+TQ+iJUvitsbaZyGuINACZEt1zSsdhXsor7O3ddQRWIGdiD0YHtm5/RJbKb1ONJYYXuqgLjaJvjlG4nn6O4u+dX4coC9ENOhRO3EVDqY4mjfQhZMkyKc5Ain+zD/2I= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:YSXvAkN9QMOAWYeGx8x2P4UhK7MU7rqX+uwfXKOF?= =?us-ascii?Q?IW48zCbMwFsJLLOKVMkk95YmL24OuxBpsE66ry7pjq9V18P0E/bT1iOlc1jZ?= =?us-ascii?Q?H3s48AW46EqZoKluQ9Ft5L5qQXf6BRCfDU9u6HIeldGT6LR1A+3wQp3Gg60x?= =?us-ascii?Q?F40gaVhWg5h4YvcRWXQlIV0eArOyMS/8YpJbg44zx8nMoRSpcvb10Ba6Bw/x?= =?us-ascii?Q?IwNFFnT5/Z+Tl5+5pk2A9C4yKTmgXWbLPYZ3SNfmjIn4nYOoYF8U4q07GKq3?= =?us-ascii?Q?dADhcFioQYJCCKF9NbL6A3+mHqcZQV+8Y/wGsXsRbTvS05P4I+mriP24nYn6?= =?us-ascii?Q?+JOgHAW9RVMPVosK4GwwQHrHS40+tCTtRRUGeqgc0tcPiFV2jxIPlEcgAk7s?= =?us-ascii?Q?VhrWTu9YO24t7pAGvNRbKDvxZWODwVntL0hizK4h9lD8DeM7bihpfq1HDQRG?= =?us-ascii?Q?CJSC/qvcdI09fK13MVd/vItNY5dDEnVhrzQGUpN3JLD0sKIeeuYBYQQK8oEI?= =?us-ascii?Q?5KBmf/HT/XzzyI+qPun6/rBQB0snT5Trs3MK9bLnbwHXHQT1Z4Z7j2+WzsZz?= =?us-ascii?Q?8BGc9L0iN5jGllptCZTunaXqmzAlgMgWLRWNhkUk8ZmEG1ScIHraKwlqvkj0?= =?us-ascii?Q?B3oTwcEMnbj53MgRRRbQoauSd8E1jJtD5M7S5tUcNVZ5KNe5CB3OQ5H4SpMc?= =?us-ascii?Q?yFRG7+9LDCql/x02MQUgDWtdwUeXFQsRUmhfW2AAAW4YIz3+ulPfCjdTpcn1?= =?us-ascii?Q?s6Ou+s4HwuZJtj5c9EaVWwihUK329U71x+CXXczFD4+Boi6swtA6G+WQ9pUg?= =?us-ascii?Q?6FVKu9so7+lTgVrlglBajkyBW+sGPURDpELvn9fBmhAwD4qUhqf+krTR7dq7?= =?us-ascii?Q?P0gTj3IhwykfJDdcdwLH5uzmGvZBG2fu/zMgjAzIWYkvNWLn1sXTJ5HFwjYX?= =?us-ascii?Q?2G2EHxXjUPtaBvlINAmLpdO/uhKvGX+GifMDTBlP5CVDZlbcS282biGAPGuT?= =?us-ascii?Q?MxTdf7sL5ltdrriH274ralyyG2g6aa4Lcv1B8A5N9m6fXu4gPc2za5tLRQ/e?= =?us-ascii?Q?zUgF9UkduMiP5Af4wewwo1uNT8UzUuPjHG6Dk5LBtqCn4I6TZGHLWZxI8QUW?= =?us-ascii?Q?hRfwGNCrwL+lAxFOnZ5il5939VPWwcuU?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(53946003)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(575784001)(53416004)(189998001)(21314002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:Q1wrL/e20gOAF6jynJYKF9HrThpqFTSFmotqXAx?= =?us-ascii?Q?G/oeg/WpXqxls6x+PvIV11sPADRRVIJMLNojeYThA/xbJR0nHFvcP9UfRQ2E?= =?us-ascii?Q?Yw7k4N/cRhsNlA2zZ2VZIILX8MWEZ9P2wjsFsTcUmYhz1Sjk8Nx/cMkmFKqc?= =?us-ascii?Q?omuKuqNhfV1LIpQVz7lWIiGzt2Karmouex1bY/mRHVtlKLHHiQnTK4tsLXrk?= =?us-ascii?Q?B2bqTkTrDyr7OzfXLfaPJ9bT4LNaQ6hLVvOuLXyMSxrfOC727DlXqbdTKHtJ?= =?us-ascii?Q?ipuS95+DjxsoWvOYp18tK2VhSteq3vH0txI1I7BVzEVXMZ3xWW6kSR5XK7r8?= =?us-ascii?Q?zzxw6tQ26cNll8vZ+J5oQVyp07i8GHUImDdB3Oyl56Mv1wwK9gFs3jUkmzcz?= =?us-ascii?Q?0QXDMMBfnA8RnN5RDcC4ViC4i/x2Wbmzmfm+h8CZ7UgAsvcIgyVtjlHXf3SL?= =?us-ascii?Q?NamTrysbFYQySF1XmaHViuyR6ANHS6VaHv917Rggqpcr3SS9dS/XAIrRbsWc?= =?us-ascii?Q?P5d6UB5reOjA5MxnCqk1crIRcjbpy+G98XOvKwTesPFfXwQRsB83uVuZmB0i?= =?us-ascii?Q?RFRT6hw1llZ4TzybirENekkijpg8JO5PqnLZjkcJj62IlBn+E6rs1kdXjDsY?= =?us-ascii?Q?k2N33Yz4P/gRN/sLBTEnWU0Ibeuw1Ea/xy8m5VbDOT6C0cwdSEoNecFPvRL4?= =?us-ascii?Q?U/oAFjCamUOrBIPx2l66tCGzJHHfqTOlLZmz3GysS0Db+QDidzOdWgg1Upnp?= =?us-ascii?Q?w9PIAkzWzKTYylurfm8yxWIofpiUz2OPVrszFM06idOsLuCHOERWEyqBHH93?= =?us-ascii?Q?gfnLzxwFYfkHvz+JpsmDVXRWp6QzHHgouRQDNzEA0QXcHejVfAHQtyDDgnVK?= =?us-ascii?Q?GAFGaW9GRuT21hGfb7SkdTcaysHOt3PJkqYkX1y6H80F44NfurqlzyKTDHRo?= =?us-ascii?Q?4ZFovVMC7KvnVBZ4j36KNXuKYyrDi44zvnafiG4uxPffKHtN/LebXBi99QCD?= =?us-ascii?Q?HcMKy7ybLMi6df6bpxJcRhXirzEP0FgrIj+tAycdAetHo5kVWxs8Px3uNxdT?= =?us-ascii?Q?vrJWf+4j0c73MEacv5bOzcf7QTROtQnr3RQUMTrwsi5+9IEQZ67mgokM/xDH?= =?us-ascii?Q?sWI39D9dSv4U=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:gMoamHSudDUB/BGuQmxLwqDZZXZ7fF/yvJAzw8KJfI3TgtC3E2kCTy22ABv6le7OBTWuDHqWeczb5cKo5YQTWhb0PxFwWlwxPM24QlQw7gw1NmMQeCxKLv/364aXJAVLgut0gKlhnIB6bjwYzEIZNThxwhtzrZ2BMgen264cD5D9N70XBoQnIjwfq8kwgRwB6NNj09t2ESE6upg99J0dotBNiwjGAKlME/cs3oIweP3Htkgw4vmB+yM/AmhFPa/W2r40RMCQrvWjQ5YeCwsyGV8X4SJZ/qbBXvVq1i8GUM2KbeCICVewo6vIdriz9cdtw+LMxVtVbRGdAnQjuq7A1jOPHqJ2KBfHBL85vmzaODLmfy9LdGnNzPH3xYT2mPCHlqJfxbLXDxsBEg38oLwBArPsG78hO6WQYq1eTFVTxnQvxGHzGZdRsq+46XRSkRteiI8qQXYAWZ/eNYeUpX+5el0T5NRgji3v+trHn331euGirovAK1hVF6swNkGl/EyZbzol2XLTaHkTCq9Cp3of0g== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:t+/1s40EcffWgFCZKKMAWT6fJcWjALOERRzK6GuMKPBZ6mGvF4QPud4lVAgVTZB8lgHh9aA9y1CBOu30nE+vcdmRZ5lq666APhFVab6gwLisUPXPsp6NnYWc+GEpv7VBHg7MwyNVNf/7MnGxNI5T85kJnFZKG9g57ttmBES9rEZcF86Gcw2JiuvfH8MuNjDDLI0gjkqY2bG+FUXK4VpFJd7idzG0i5ObJIlmggasCQ8OsRlswblkdMxCyPhc8WI+1S1300Wv26vB1LT7TniEqLMRVzMF77P0fG9qRagF1rpj0YRthceGv9ENeckYXvX8Yxin+qhPcRaqSgJjHoZUvsL3j6Yw3g0dFOT0TWTNeYGLQWXOkJpGo2BVUoUfS+gLC3adc33Jyp8Ss7Iqei0rnhpv9zDpEtbXvomDc9UduCCSjndhwQiR6Wz3+CPL97ziERyphdohx96CDn1+wJ2KWmJDceY6WeLHnZoTE/R2f87jfjWqn9BpJWO5BSz3DRL9; 24:dc4yQkaAVvrF7DFUBZc3N51gI+zSepAr+1CaQfPXpPpoY6nF0xlO9MZnvqQYJubM0I5IiEaBq04tCLpl0KB/xTLQGOB23dfDv4UvL5KQ6Pw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:1u/6RAElE4iALDgGbEv+fbh1DnHuPPiIjyEQPyfdT/NiBbbR/39lGItv0O8wR2vj5v+n51EZanpgv8yqjMBP4+rmpli3lhf2+/v4YB+DpylVft5WUrI5mREWzlndVHNzOwziPYnmK9mlGmBj4TMZP/UEsaxHQPqPcjXdYUwqOxZ4BC6E3D9aI7GnynNbZTFaW64v0ltuwUUlMjYVibdFM75H7QsCi3CG+X5pHp8Bl07SAcNW0+1CYHxy9c1/h9DtC3HLPzrbEd/Qx9i/Zw7dUwXQSdp2iDbZiQL8YXS+wvaUzo1LgTbEDJGQORAnkTWADi+zM5TeqZA7PrpfiG9wCA==; 20:PFf/IoLDiXLe+XFDdaoT0W4yUNgzhMPC7lA0M2BkDIeZ4dfpgWQb025iL4bOf7c56DiPOaqg7iMHxRYuJlQXjih9SAiky3FTJP6fQg1HoTuOfXgH7D//jTk9+dUYApENr0D8nVGCivFHym2O93K3xvJdOv1pNS5o/rFjT+pl4iI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:07.4437 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.136 Subject: [Qemu-devel] [PATCH v2 09/15] qcow2: check space leak at the end of the 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, Pavel Butsykin , mreitz@redhat.com, "Denis V . Lunev" 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" From: Pavel Butsykin Preallocating memory in the image may remain unused after the fall, for the qcow2_check adds the ability to identify and fix it, so as not to store extra memory on the host. Signed-off-by: Pavel Butsykin Signed-off-by: Denis V. Lunev Signed-off-by: Anton Nefedov --- block/qcow2.c | 31 +++++++++++ tests/qemu-iotests/026.out | 104 ++++++++++++++++++++++++++++-----= ---- tests/qemu-iotests/026.out.nocache | 104 ++++++++++++++++++++++++++++-----= ---- tests/qemu-iotests/029.out | 5 +- tests/qemu-iotests/060.out | 10 +++- tests/qemu-iotests/061.out | 5 +- tests/qemu-iotests/066.out | 5 +- tests/qemu-iotests/098.out | 7 ++- tests/qemu-iotests/108.out | 5 +- tests/qemu-iotests/112.out | 5 +- 10 files changed, 225 insertions(+), 56 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 33e5455..809102a 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -322,6 +322,32 @@ int qcow2_mark_consistent(BlockDriverState *bs) return 0; } =20 +static int qcow2_check_extra_preallocation(BlockDriverState *bs, + BdrvCheckResult *res, BdrvCheckMode fix) +{ + BDRVQcow2State *s =3D bs->opaque; + uint64_t img_size =3D bdrv_getlength(bs->file->bs); + + if (res->image_end_offset < img_size) { + uint64_t count =3D + DIV_ROUND_UP(img_size - res->image_end_offset, s->cluster_size= ); + fprintf(stderr, "%s space leaked at the end of the image %jd\n", + fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", + img_size - res->image_end_offset); + res->leaks +=3D count; + if (fix & BDRV_FIX_LEAKS) { + int ret =3D bdrv_truncate(bs->file, res->image_end_offset, NUL= L); + if (ret < 0) { + res->check_errors++; + return ret; + } + res->leaks_fixed +=3D count; + } + } + + return 0; +} + static int qcow2_check(BlockDriverState *bs, BdrvCheckResult *result, BdrvCheckMode fix) { @@ -330,6 +356,11 @@ static int qcow2_check(BlockDriverState *bs, BdrvCheck= Result *result, return ret; } =20 + ret =3D qcow2_check_extra_preallocation(bs, result, fix); + if (ret < 0) { + return ret; + } + if (fix && result->check_errors =3D=3D 0 && result->corruptions =3D=3D= 0) { ret =3D qcow2_mark_clean(bs); if (ret < 0) { diff --git a/tests/qemu-iotests/026.out b/tests/qemu-iotests/026.out index 86a50a2..e8cf348 100644 --- a/tests/qemu-iotests/026.out +++ b/tests/qemu-iotests/026.out @@ -5,7 +5,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D107374= 1824 =20 Event: l1_update; errno: 5; imm: off; once: on; write write failed: Input/output error -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: l1_update; errno: 5; imm: off; once: on; write -b @@ -33,7 +36,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073= 741824 =20 Event: l1_update; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: l1_update; errno: 28; imm: off; once: on; write -b @@ -181,7 +187,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l2_alloc_write; errno: 5; imm: off; once: on; write write failed: Input/output error -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: l2_alloc_write; errno: 5; imm: off; once: on; write -b @@ -207,7 +216,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l2_alloc_write; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: l2_alloc_write; errno: 28; imm: off; once: on; write -b @@ -468,20 +480,27 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1= 073741824 =20 Event: refblock_alloc_hookup; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_hookup; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 394240 + +770 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_hookup; errno: 28; imm: off; once: off; write Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 5120 =20 -55 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 @@ -489,19 +508,26 @@ Event: refblock_alloc_hookup; errno: 28; imm: off; on= ce: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 265728 =20 -251 leaked clusters were found on the image. +770 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 394240 + +770 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write; errno: 28; imm: off; once: off; write @@ -520,20 +546,27 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1= 073741824 =20 Event: refblock_alloc_write_blocks; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write_blocks; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write_blocks; errno: 28; imm: off; once: off; write Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 27648 =20 -11 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 @@ -541,27 +574,35 @@ Event: refblock_alloc_write_blocks; errno: 28; imm: o= ff; once: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 21504 =20 -23 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write_table; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write_table; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_write_table; errno: 28; imm: off; once: off; write Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 27648 =20 -11 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 @@ -569,27 +610,35 @@ Event: refblock_alloc_write_table; errno: 28; imm: of= f; once: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 21504 =20 -23 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_switch_table; errno: 28; imm: off; once: on; write write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_switch_table; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: refblock_alloc_switch_table; errno: 28; imm: off; once: off; write Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 27648 =20 -11 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 @@ -597,8 +646,9 @@ Event: refblock_alloc_switch_table; errno: 28; imm: off= ; once: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 21504 =20 -23 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. =20 =3D=3D=3D L1 growth tests =3D=3D=3D @@ -651,7 +701,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l1_grow_activate_table; errno: 5; imm: off; once: on write failed: Input/output error -No errors were found on the image. +ERROR space leaked at the end of the image 98304 + +96 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: l1_grow_activate_table; errno: 5; imm: off; once: off @@ -665,7 +718,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l1_grow_activate_table; errno: 28; imm: off; once: on write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 98304 + +96 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824 =20 Event: l1_grow_activate_table; errno: 28; imm: off; once: off diff --git a/tests/qemu-iotests/026.out.nocache b/tests/qemu-iotests/026.ou= t.nocache index ea2e166..820ce0f 100644 --- a/tests/qemu-iotests/026.out.nocache +++ b/tests/qemu-iotests/026.out.nocache @@ -5,7 +5,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D107374= 1824 =20 Event: l1_update; errno: 5; imm: off; once: on; write=20 write failed: Input/output error -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: l1_update; errno: 5; imm: off; once: on; write -b @@ -33,7 +36,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073= 741824 =20 Event: l1_update; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: l1_update; errno: 28; imm: off; once: on; write -b @@ -189,7 +195,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l2_alloc_write; errno: 5; imm: off; once: on; write=20 write failed: Input/output error -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: l2_alloc_write; errno: 5; imm: off; once: on; write -b @@ -215,7 +224,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l2_alloc_write; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 1024 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: l2_alloc_write; errno: 28; imm: off; once: on; write -b @@ -476,20 +488,27 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1= 073741824 =20 Event: refblock_alloc_hookup; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_hookup; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 394240 + +770 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_hookup; errno: 28; imm: off; once: off; write=20 Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 5120 =20 -55 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 @@ -497,19 +516,26 @@ Event: refblock_alloc_hookup; errno: 28; imm: off; on= ce: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 265728 =20 -251 leaked clusters were found on the image. +770 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 394240 + +770 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write; errno: 28; imm: off; once: off; write=20 @@ -528,20 +554,27 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1= 073741824 =20 Event: refblock_alloc_write_blocks; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write_blocks; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write_blocks; errno: 28; imm: off; once: off; write=20 Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 27648 =20 -11 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 @@ -549,27 +582,35 @@ Event: refblock_alloc_write_blocks; errno: 28; imm: o= ff; once: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 21504 =20 -23 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write_table; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write_table; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_write_table; errno: 28; imm: off; once: off; write=20 Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 27648 =20 -11 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 @@ -577,27 +618,35 @@ Event: refblock_alloc_write_table; errno: 28; imm: of= f; once: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 21504 =20 -23 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_switch_table; errno: 28; imm: off; once: on; write=20 write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_switch_table; errno: 28; imm: off; once: on; write -b write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 33280 + +65 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: refblock_alloc_switch_table; errno: 28; imm: off; once: off; write=20 Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 27648 =20 -11 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 @@ -605,8 +654,9 @@ Event: refblock_alloc_switch_table; errno: 28; imm: off= ; once: off; write -b Failed to flush the L2 table cache: No space left on device Failed to flush the refcount block cache: No space left on device write failed: No space left on device +ERROR space leaked at the end of the image 21504 =20 -23 leaked clusters were found on the image. +65 leaked clusters were found on the image. This means waste of disk space, but no harm to data. =20 =3D=3D=3D L1 growth tests =3D=3D=3D @@ -659,7 +709,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l1_grow_activate_table; errno: 5; imm: off; once: on write failed: Input/output error -No errors were found on the image. +ERROR space leaked at the end of the image 98304 + +96 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: l1_grow_activate_table; errno: 5; imm: off; once: off @@ -673,7 +726,10 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D10= 73741824 =20 Event: l1_grow_activate_table; errno: 28; imm: off; once: on write failed: No space left on device -No errors were found on the image. +ERROR space leaked at the end of the image 98304 + +96 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D1073741824=20 =20 Event: l1_grow_activate_table; errno: 28; imm: off; once: off diff --git a/tests/qemu-iotests/029.out b/tests/qemu-iotests/029.out index 5bc93e0..7176e38 100644 --- a/tests/qemu-iotests/029.out +++ b/tests/qemu-iotests/029.out @@ -6,7 +6,10 @@ is smaller than the current L1 table. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D67108864 wrote 4096/4096 bytes at offset 0 4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -No errors were found on the image. +ERROR space leaked at the end of the image 65536 + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D16777216 wrote 4194304/4194304 bytes at offset 0 4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/tests/qemu-iotests/060.out b/tests/qemu-iotests/060.out index d057aa1..3d4e5b3 100644 --- a/tests/qemu-iotests/060.out +++ b/tests/qemu-iotests/060.out @@ -77,20 +77,26 @@ Leaked cluster 9 refcount=3D1 reference=3D0 Repairing cluster 4 refcount=3D1 reference=3D2 Repairing cluster 9 refcount=3D1 reference=3D0 Repairing OFLAG_COPIED data cluster: l2_entry=3D8000000000040000 refcount= =3D2 +ERROR space leaked at the end of the image 65536 The following inconsistencies were found and repaired: =20 1 leaked clusters 2 corruptions =20 Double checking the fixed image now... -No errors were found on the image. + +1 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. incompatible_features 0x0 wrote 512/512 bytes at offset 0 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) incompatible_features 0x0 read 512/512 bytes at offset 0 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -No errors were found on the image. +ERROR space leaked at the end of the image 131072 + +2 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. read 512/512 bytes at offset 0 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) =20 diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out index a431b7f..69fb929 100644 --- a/tests/qemu-iotests/061.out +++ b/tests/qemu-iotests/061.out @@ -328,7 +328,10 @@ wrote 131072/131072 bytes at offset 0 No errors were found on the image. read 131072/131072 bytes at offset 0 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -No errors were found on the image. +ERROR space leaked at the end of the image 196608 + +3 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. read 131072/131072 bytes at offset 0 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) =20 diff --git a/tests/qemu-iotests/066.out b/tests/qemu-iotests/066.out index 093431e..81ef795 100644 --- a/tests/qemu-iotests/066.out +++ b/tests/qemu-iotests/066.out @@ -13,7 +13,10 @@ discard 67109376/67109376 bytes at offset 0 64 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) read 67109376/67109376 bytes at offset 0 64 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -No errors were found on the image. +ERROR space leaked at the end of the image 327680 + +5 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. Offset Length Mapped to File =20 =3D=3D=3D Writing to preallocated zero clusters =3D=3D=3D diff --git a/tests/qemu-iotests/098.out b/tests/qemu-iotests/098.out index 7634d0e..733249f 100644 --- a/tests/qemu-iotests/098.out +++ b/tests/qemu-iotests/098.out @@ -20,7 +20,10 @@ Leaked cluster 4 refcount=3D1 reference=3D0 Leaked cluster 5 refcount=3D1 reference=3D0 Repairing cluster 4 refcount=3D1 reference=3D0 Repairing cluster 5 refcount=3D1 reference=3D0 -No errors were found on the image. +ERROR space leaked at the end of the image 131072 + +2 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. =20 =3D=3D=3D reftable_update =3D=3D=3D =20 @@ -34,6 +37,7 @@ ERROR cluster 1 refcount=3D0 reference=3D1 ERROR cluster 3 refcount=3D0 reference=3D1 Rebuilding refcount structure Repairing cluster 1 refcount=3D1 reference=3D0 +Repairing space leaked at the end of the image 65536 No errors were found on the image. =20 =3D=3D=3D refblock_alloc =3D=3D=3D @@ -48,5 +52,6 @@ ERROR cluster 1 refcount=3D0 reference=3D1 ERROR cluster 3 refcount=3D0 reference=3D1 Rebuilding refcount structure Repairing cluster 1 refcount=3D1 reference=3D0 +Repairing space leaked at the end of the image 65536 No errors were found on the image. *** done diff --git a/tests/qemu-iotests/108.out b/tests/qemu-iotests/108.out index 75bab8d..d178b1e 100644 --- a/tests/qemu-iotests/108.out +++ b/tests/qemu-iotests/108.out @@ -68,13 +68,16 @@ Rebuilding refcount structure Repairing cluster 1 refcount=3D1 reference=3D0 Repairing cluster 2 refcount=3D1 reference=3D0 Repairing cluster 16 refcount=3D1 reference=3D0 +ERROR space leaked at the end of the image 720896 The following inconsistencies were found and repaired: =20 0 leaked clusters 2 corruptions =20 Double checking the fixed image now... -No errors were found on the image. + +11 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. =20 --- Signed overflow after the refblock --- =20 diff --git a/tests/qemu-iotests/112.out b/tests/qemu-iotests/112.out index 81b04d1..7386be8 100644 --- a/tests/qemu-iotests/112.out +++ b/tests/qemu-iotests/112.out @@ -93,7 +93,10 @@ refcount bits: 1 =20 =3D=3D=3D Amend from refcount_bits=3D1 to refcount_bits=3D64 =3D=3D=3D =20 -No errors were found on the image. +ERROR space leaked at the end of the image 131072 + +2 leaked clusters were found on the image. +This means waste of disk space, but no harm to data. refcount bits: 64 =20 =3D=3D=3D Amend to compat=3D0.10 =3D=3D=3D --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330226855833.3390215903815; Thu, 1 Jun 2017 08:17:06 -0700 (PDT) Received: from localhost ([::1]:45188 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRqS-0001aQ-4a for importer@patchew.org; Thu, 01 Jun 2017 11:17:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51655) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRog-0000Mh-F0 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRod-0004lJ-SX for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:14 -0400 Received: from mail-db5eur01on0136.outbound.protection.outlook.com ([104.47.2.136]:6143 helo=EUR01-DB5-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 1dGRod-0004jz-Hx for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:11 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+yAW6M9/agHxKAaNfJZgD73pZ2GrRhKIKDKLf+6BfuQ=; b=ObXlxjRp3VZni4cJdKsUncqjqBswyxx97GLDR7+ytSqb7I1mb5ohzPuXIu6VXIrYees7nib1+L1AIOcAPvOJ+Iq2Q/ZFa/UPWeA7UGwN0q3OceX9xUEzNjutO3MeG3lp05HE0PwqwcZ+Hj1HdM/t41MIaVTr/T4itWSYLR35c1E= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:28 +0300 Message-ID: <1496330073-51338-11-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 1fb818f5-7902-4fde-4425-08d4a900fe4e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:C9bGt6/DH5HkiY+5zLUMifssLITNNRmka3zYfkrvn/aPkESKKiSy947iQu7TO5iipNBrgPEv+EI5KgHotO8+oTBbH61zU930TfcpamA0zLnlyB9PsYfLofm4ZMW8D1TraEMrx4D+UFS0qApqhDBQ75TxF+zOCxyVU+14WST9tjvTsxXFctLqkBRyrglJ/NMq6hMfMVXxDg8jKBw8EN4GgVNU3c5ylYqPYArKH48cUyzAP8QvOvK16gG2bBHOBkEahjG3RrNk34CJJITP3/c8/dm3qhXJE6sMGfRK4XdGfL7gCkUz+HGnNsfxmcth0UpGnQz8D7R7UrNnIxiiQ4q4gQ==; 25:0aE/F/Dmu9AQDlQiKqNYhY5656Kcd4L8ty/xIfkl4/eBMFx0OXa+eqGJ1uKQUeneT5h3kvnS2xNxMoEyDA4LkAd/jda9mfh3R8mgCfI//4WAn5/jVzc2QfLCOnE0BdBKGGwSyYhZDin/+3onVVZSiUp64U3mIYqoUmZ/7rK5gZUCtOf2VFsPYErAUFUl+smEliVVRxXV+OicaIQLH+1iPzTW5xBqIBAskeIPnXgZodErsTjAA3IOFZYEijdR2geZR47Vb58zuilKRdjt6VYtnAWoC6G6koeYzP+qvls2Jxx6MjelQgRMn+IMkmd7oAljnKtlkmBCk1JfvTavvahdxYBiiHMEJC0YNtKNCwHZ1Qn9L9Rn0WlCeQUCs0uswcw0NdQN/jn0LnDpITDNntX7pX+dnaBiBIxPPKN/zYUUAdcU90FbDlrDI5YZgsmeQY6j9NkIjaQnVTJ1GikcEXabrPeoCau0MF7jVVMiwEEg2nY= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:zf1rVvvFhDdhWhIv4nKaDtNPI1AcG+afIF1o0zowkOhJqhPUTEsnMfAdakFOL/PEbn18PjSS7Diba/OPKJ9Twwm2so/0RSByyBbaOo64VjccnxkcTbVcRBf/ajP0gbvP+1irDRcK599/jwowd0EBmWFj9cfyNTJ5yK65xMe76sIrTSQZdalZC7i3ZfBrhoW7UfR/X6kymfVF5KFXmboSlfilD/i812lH0/gSDfmA1SY=; 20:VO8b1JFhN1Gyd37HThk66WTmvpnFph/iMPpk8MAqzZwQmwCPWBySFpj4Ax+cROzPF2B4nk9kLrou8YQXqi3i4Dm/4EkIImq74qroZwwz9uwwJlit2C/VYeH02n7wTaVeisdXBDjpRisfKkfQs2uB9xvUUqfANyyZCL3h6jqQ9D6aA1rYZHh2vsz/noRiRMjazDqLt3Vsl0lIIzpbp2F4yeZX7RMUOezp7ohdj293mMUUMBCbaCisANCIjfZIpQUxF5bsYI0GyBwYWx3Ci5Qlc9EplvoHqa7XQox/zYKnlG8SVozKULOE6Z9iq0yoKKRfSMcLXx1qGXX2JNrAYDOxiyqPIqbWlhcJWxIuuOD4Y/Ng0wtH66ykZGzCBzVpYkocIzFhry9Cj1uNdgQjNQx8cTTZnpLEpxRk4bqHRDa3oWA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:ifLx7INg2cEzoxmAVukmJQA8BVCJLxcM2TzBW0lC?= =?us-ascii?Q?r2xCpeyepiG0GUoh3ceLewv5Osq3BlUOp2UvNOzny7t24vY6V9n8pNHUwarQ?= =?us-ascii?Q?YbLBPqIhKGorDeOS/ay4LjGeF7F3bMbhyWl4Fj8nD1MvzHKlZvJd3SMKD1bK?= =?us-ascii?Q?/sCiyNXOYaYFNh6G234DtCFNDWcDkru79YoL6jUKtHyfG1TmBtRyJgxKpubY?= =?us-ascii?Q?5Ay2i5l5/DgMsLNVM22uubF4VMgOFxy2pTQsCQChy71sODICmus4rwFpZWjw?= =?us-ascii?Q?1+zkpuSMDmYA6VHYfKUwm10sWMFL5mnJ6SfkIn1mwRH0nRMFTDjo4CnqNkjb?= =?us-ascii?Q?INtxX01e3WNUQOVshcGBX9F8aleVjRfnAXDa9rUzcF0ZhAyzQyy1zHhzLUe0?= =?us-ascii?Q?DRjnwcDeCtzWFS1/ylsOZiBngVHuW/hvy9hFYc0WpEnIXBrSasifliMxxrud?= =?us-ascii?Q?UDYH5bbI3MTtUPlTU9asSSHK/ofR2fYZl9g6SpesKRN1NYLeBerXxIJp0d6a?= =?us-ascii?Q?auX2IH7iNkHK8H9CKV3L9o8TEpRBWZlQceArswWwvJaxakGzOLSr8GfDR/nG?= =?us-ascii?Q?3i8w5ZC7hbZjNVmbLJ5M3dWjeo+VtgGDO4lUjJzLT5n2+1S0Ie7WmkB4OVdf?= =?us-ascii?Q?ueAuZ19TTI9yfI3S3xDzy8IeUB6EzeqQtF6ksR4ywsjc5gTpQwcXhS/MShJl?= =?us-ascii?Q?c8c1WL7lYo+lLXI0yxrFJzB88SQE+ywddhvagePbBJ8k/exzdUp23zXodtII?= =?us-ascii?Q?UPagcQbE6b2omIFwpgKcwnGL71NlAbFaFPKDQdECjOQwux8XOxuT5T+2vVm2?= =?us-ascii?Q?zBDhWBG9hbUp6dmi0PTJ9zPddSnW9vqwGuZ5Xp1Fa/CWLFvwzE7ML9iu7FWm?= =?us-ascii?Q?2bIDWle5m0L3w79ualj/SuV3qJL82k7usKsnAZduoaTkMuSTpBX6EqREZmJc?= =?us-ascii?Q?Dy8EbWP44W3+8dphFTx4/vL9z05fqIyqRKrnn1XoWzF7m3F02f2jW0WTs+nM?= =?us-ascii?Q?NaZ3k12S8jun3fxvqDJRrrvWEYXpZdBPMX2UaD72KC1L74uJOCC9H3nB1sYQ?= =?us-ascii?Q?yT3OIuLTlIsbxl2HoMxcmzYNzo93y9jyWmEKyfFp4baaurYXRLS2fPfbdbAk?= =?us-ascii?Q?NnGceaVXCgxvnxFz5vxu62FKhSwbIfes?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(575784001)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:4l+IZxVdG5dboGY8cbTSqTabVzl+tDFFi1YNLmL?= =?us-ascii?Q?WfEV4b2qpYFPHlfWynriOjkIn3s3RWsb5uGXuF0PJR/Q4JFJ8eZJPBT3WkOw?= =?us-ascii?Q?ysKYS/3V7eJTnMa9TmFhvIAdbg9KchWBdIMM9YtNctbJzCZe2TmNcWlxxvm1?= =?us-ascii?Q?QdBqyzDfoPPGukbwaWsy4RiaNP8/VhX/3TvkAl9s2S4EYoh1SypV2W952Bvd?= =?us-ascii?Q?sJe9SZdtxGpxmI0z23bwSEgfGQSb19zXgCbgmzMi74vTv9JdHim1koEWiz5O?= =?us-ascii?Q?br1AXANS46mDVLI9KqRgESFKV+Ziq4EcFALpOH3QQQEx6QLI4jFuuGyhd27i?= =?us-ascii?Q?phZrzws7oXi8AtX/ogbiQ2Y+tATSeRBnFUDMbEd2Q59Xo0Pe7DlkRgyBpoO/?= =?us-ascii?Q?uHnTH8sVU9bNIJ6I4UTIWd7FSMJYw5utmZce5VX1kOOKRZYNwuZqdJDDhAZS?= =?us-ascii?Q?HZy1lBp26ReOTIx1FFsbH6TZc2usQHGcRBThQ52XIvHPlX5uqIdJZFfKBejc?= =?us-ascii?Q?M2rjrqcKscGXnseKFEpFX2ujNO36D5NHNggh1rtS6g7NtXB1AguYb0h+JFpS?= =?us-ascii?Q?YiEG9X3Bu/Y/4OcnMk2B8ykP4Pplc2oyNynqayWQpWymqY4ODxoqBGii/lV7?= =?us-ascii?Q?n2L3Rj60VyTDDKwPyAObQQq0Sdr4p0zo0VLfyfIcefhfwupFneSuqWa0WJ7+?= =?us-ascii?Q?bSQEAk3HXWMqAtqkq6dPNhK921CF9qOzV7TyxyyS9o8FJ9edYHnjfB0IeY1u?= =?us-ascii?Q?fIfe/Vi0B5na3qEzUXyyYc/bxHw04kbLSlgUxukwQz6q4Hmm6zPBFRkYweLz?= =?us-ascii?Q?xVmibWFnPVWpTUWqKKbnlWEkGVEv59MkU3uo18XL5rfmZhQLnd7waFoG7O5L?= =?us-ascii?Q?EKM/gE6l8DJVQyre5pF2GrwvSMMQe3DPJkpPby1DmcKLl4o3OWq8Ysl9lJA2?= =?us-ascii?Q?LKqxwOfAc5HniLmCf8n7znAZiSZNNFY+CWWlNr7l+/CCqR0kJBrqWhqS0pCP?= =?us-ascii?Q?jv0Kb9oYU7p8D/x37boTqfNoFHiwVd9WxqWBdzeHqIrcmz/jeR6GhQ43ZHKq?= =?us-ascii?Q?GC5fzPPZ5GkgPCoJ/oBr8Ei4LlKnc?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:WaD5TL3VwbkWSOlCryrYP1aElh8pvZH4bvsPw9XNDy5Pcfvc9ZYhdznV+uUhTY/RG03KSDb1hKbugilsairA5nr21fq1Nb1bH/K6HZfBUhVne6HQReTBpyDBqWSEyHQAZE8LKos9aKboVH4d0D0XS7uWm2FzYFn6pxhrdRrDKPC8CygJa/7OBIceRF1sims0f68p4VOpwvfVzONVB2HGnAgtnc50m9+tjg2F0Hdwik3lEb8Ng4QGPT3M1LvC4B3/4BKsdmls2iDOK2DyXiWQErXZq8RbfhKP2nipERE1ZwYyMzL0Ome+xZZ4Anap0SBAwWNXN7/ExXGUM84elZewlEvmrDzdmtfHSvXMxVN46m91m5VjM4rR/YwvDJLzm7ZsMNqWrc8kWPMgpqfFbKvJzb/rGE54GwvHGWN07/loBijDpGCq83OAZKXfLjehLUQbhZeK3/w1m3UhAvz4jmnfIwNJCwhUKOAi9v/cTjC5Qw+G8quQ1YMUtFxDcyJReDo6XPhzjd1Da+yWWdGPcG1YTA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:F0N2B0cDI7bDppYnFoP/5I+W3MjH0+GC4U230l/jfde6vyS0p9he76Rktvp+5sx24BY9d/2MIvXnM0eA27jlfKFMPtRhPgC13HYj8SYp2zHtbdOBpeGUSax2YsiPMziXVTt3qrmYxRyIT5nFztNgtyqRBtnHZOqu2Rl7YiapB/Mimr8Mxsv4Ut/1fXK8gkAofCwMJDFi8x4oNyO8dOP1+v/lQZxuyZkS9Qz8IJkWTZLTYeQYkGAhXhnrhozVcmampasVbup5tCsAMsgxfK0eFkz/lmnG0aSwZ0PgJJOD6ZEpC1/hWQHzCtL+tiGyloY8Md+kYCLhqsI85Z2in60oit11CUOzokZ1DeWMqACcwQ7NcWQQBKzmvFS0WmwQrd9Ps58WhOnKUKCaSudxR6KlZa2sYTp6cqRrK1O14y8XQaOuTCA0HPSA9CNNuIP30FR4BoNX+QYLQOAWwyxwNqYSW5jEwzlpk5a2CmN+Uzq+knZKhUfgic2wNIDquXRuafRo; 24:VP2dRalMO3gHxw78QNHuAU+yp06u/gAWz/L2lm2n0V2AT0tV4lqIHK+nZIIMVnLB9cjSSLBMDU1RSs8tmZc7N2pCmoaRNd2R2PxvrK2K6es= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:RUZHnPf2EdWfvLaU3SXuU41DYZK2lN798hCOXQ0VTGzuin3HteHgAaQmXhad+nLHNjSNe9J8s8MQr0yJvX2qJx6hxMM/azLKOjjG585tLUkb2ozcqPT33aZ6xvHYjvvFjdTMi40wVrYrWngykqJyK1PwG2oxzT6I4ANw3dUTotDxIXt6nlYjjozYHwtXztBWkFABttnr6fVIymE5gj/YWqVAP4VlnyzRMtTrlY4fji6rH/22OnaTvGM8gby86yJwL3tJPY4d9YibpK5dfeS9F4wP18GmJneAZ+ck8Fhl4NmB+AS3sjgqAOLK6EYJVrX+JTDZoKoa0UPhTsjzJD0OTQ==; 20:+ilUZWjupr8zrnf2JGSJXyt6mkcrGnVBy+5Jj10ytaHkqGuzr9c1DOR7sxJNYPmVPEu1q7OK533YMBtKhwdXj+9on+q57RCFQI6eBgBxjZYakj583BMupXT7VBxC0un7JlI+lqvUy6e4fxEGWclElj+/sdgngDYfkUM6d7PsYlQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:08.8968 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.136 Subject: [Qemu-devel] [PATCH v2 10/15] qcow2: handle_prealloc(): find out if area zeroed by earlier preallocation 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V . Lunev" 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" Signed-off-by: Anton Nefedov Signed-off-by: Denis V. Lunev --- block/qcow2-cluster.c | 2 ++ block/qcow2.c | 8 +++++++- block/qcow2.h | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index c39e825..ed65961 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -1143,6 +1143,7 @@ static int handle_alloc(BlockDriverState *bs, uint64_= t guest_offset, uint64_t *host_offset, uint64_t *bytes, QCowL2Meta **m) { BDRVQcow2State *s =3D bs->opaque; + const uint64_t old_data_end =3D s->data_end; int l2_index; uint64_t *l2_table; uint64_t entry; @@ -1264,6 +1265,7 @@ static int handle_alloc(BlockDriverState *bs, uint64_= t guest_offset, .alloc_offset =3D alloc_cluster_offset, .offset =3D start_of_cluster(s, guest_offset), .nb_clusters =3D nb_clusters, + .clusters_are_trailing =3D alloc_cluster_offset >=3D old_data_end, =20 .keep_old_clusters =3D keep_old_clusters, =20 diff --git a/block/qcow2.c b/block/qcow2.c index 809102a..92d0af6 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1686,7 +1686,13 @@ restart: =20 if (end <=3D bdrv_getlength(file)) { /* No need to care, file size will not be changed */ - return false; + + /* We're safe to assume that the area is zeroes if the area + * was allocated at the end of data (s->data_end). + * In this case, the only way for file length to be bigger is that + * the area was preallocated by another request. + */ + return m->clusters_are_trailing; } =20 meta =3D g_alloca(sizeof(*meta)); diff --git a/block/qcow2.h b/block/qcow2.h index e28c54a..2fd8510 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -333,6 +333,10 @@ typedef struct QCowL2Meta /** Do not free the old clusters */ bool keep_old_clusters; =20 + /** True if the area is allocated after the end of data area + * (i.e. >=3D s->data_end), which means that it is zeroed */ + bool clusters_are_trailing; + /** * Requests that overlap with this allocation and wait to be restarted * when the allocating request has completed. --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330569407537.3989703136012; Thu, 1 Jun 2017 08:22:49 -0700 (PDT) Received: from localhost ([::1]:45212 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRvz-0006Yn-JC for importer@patchew.org; Thu, 01 Jun 2017 11:22:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51699) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRok-0000Qr-CU for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoe-0004m4-DC for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:18 -0400 Received: from mail-db5eur01on0136.outbound.protection.outlook.com ([104.47.2.136]:6143 helo=EUR01-DB5-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 1dGRoe-0004jz-5d for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:12 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=IzkBu0dT0RkafqbaUStSbVfX902IBprOJqOsweLPLuE=; b=Mm4lwZ2ApQhvtlLASdt9NP7zxwjYQJdseckO0sRSJcE1T9D9U+4+bsUgDTnnIini7E/KZ3DOxTH2qXLR6bzldwJjv4pkmKk0EPjpppWVzQbjS8Y74MlZIuKKJhY4ZzZG9LMn4DTOol56Wxg4aIb/Hcy23KTMfwF1TSGJ8dAVGoQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:29 +0300 Message-ID: <1496330073-51338-12-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 3bfb4078-cfd2-4994-c5f4-08d4a900ff11 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:wa13CmvdjejIc416+ghfpYTKy3twvsVEMKeXRKUiW8QjblKlECbMq6eUa2lgPwxfcfHu3DwCWpDHVUB21zxq9xbcBQtJzAqF4DvHXq5I9fkL0wHzPMMx2elS4ytRskbhGnrFXu/cqTL4I1fd82m/B+DXkxhNX4Zhpdh4RDiCVaK5fDwusMfgk5h7Sui4/OWZu7tJ6S2N2Z2AyU7Rwc98Hfv0q68ncr11416bCHn9+HfDhc214BiUGhjCkSCKu6nN2T7pdHimNt+KvHp2FIetYhllXOVQnuHvm29Cpi7OF7gF6ivQ7FS7s2SFqKwkvC4hsQDVj1mugSKlUq/5mBmKyA==; 25:zazTz13iZhIN3z0mpklnU11P6SZykaNn5x8w+9HipaSmXopzQ3//rBa41N+O7U0DLQB05p8i/smPQ4T68T8W0CR4qQCh3qjo3PLRQx5ld6HyZIbcovQ+zMRQngcpThuEZdeJpl6A3sWBVoiiGCLw5vcHTlcXkN1FrPqgbqfW+icaLYYrIfeAhoNeronVuBtARZzL0FPNjt7JFsMRubA9lBXJFYVEEtAu58R/XOCvRTRuWRyDpqIMWrJ1dbKR8PgegjrZHxqQ5Hllhy4qzJwTupWVr0F94IQAHkYjBMGkHvD8i7Q8+CXVUDuhMzG/oN1vtvqCA3efeYR2fQl+JN0fTC2RfdSzEk4ivCPRR6Ov82wvteGNhmWLBLH09cTfvQOwgmQYQ59nLbcbvHYZmTDqUk87sM5ZmDBjRlgMC/SG5MwAO/G4mwvcRCCEyWs2ulmjmJM49otn4sGsjHCLC+zkWwLLt7Um8ijgrQxULgPXB04= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:sKk1/INqBdM7dnPR11pFW2xu4Z5jzuWd0MFOsRAAJzMBBtKkCb1b/kE6DCfiQjsJeAt5Hei7B9fCO+9puqv2cLsXRu+ZTJsDziI70hzT/c0LHArT7P4qH+hApbXreK8dyOXUQ+71MmLP4/zEWqXLYCSHjjqvxmeTvTUzxHWwXBbiwZugIHZwZE1uxTEAarILQjbA37xo2645oTJ+47+ZB1b7S2L9zJZU9+dLx/zkM7A=; 20:s1vncv0m5grgt1BDCtiPrcuOSQ0UB3lHKaszTux2sv64bQS0Ibxcs8hfkzPNQLaRHYjHdKWt2DGO+vDanv5+WNY7UkwofPDh5s60LHc5PRIgQSDO1208ulJUTa1hSisMo+6C3Q+avmZvM5uNT84bLm0y+tCzwI/k4bcfFfbqQf7kOJr1/nxR1TDSfdDQPoL6C6ZTAMD51oPiUE4+QLeqaCCHDeV8mFWaG3sEurru87d7nbe2cSrh+kOkLAgaRU2QxCzg8oZts1gr9Nl/3S3Lf/apBwK0C9cY8zeY2FOvDTw1R4bJjCc94A5nysWIM2W3jNPccrTFitAC5Er5ef7i3ZTrh6EjZvRCK7HefWQa/I0xN/ODu0zJbgr+MSvVwedaeJ4OYT0JRQOuDAFVA3CgHLq9KFcPGb49xGL11mclXz0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:qGy14MhuBIkEROyXBb6gHomlP4xFCVktxk9dtLfW?= =?us-ascii?Q?I+GiVxWvu8RHfnWmGuwVrYofRatr2tkRtv4p2JxTK3A2wEiQMAeRGwaJ5FYX?= =?us-ascii?Q?EL1rpL0ROyXiChzVnEdUdB/AhpashmU8iwvRksSckt6pIene1UEpMXrvKiHS?= =?us-ascii?Q?Rrd9ReRnBvnTy79V1Kr6LEqf57PZWEpgWtce/Uxo2+7Eat/pYsKlty+kG7MU?= =?us-ascii?Q?EQyozqp+sWo48vB3CQcRV1pH8Sz5XFdlVk5OQPo+3oWTBfZOd6h1nS2IZrvW?= =?us-ascii?Q?vIQ6AHey+qU4DMNPAFm8DBId1lO9hz1VTNUQKhxhAZg0Tt6ZV5g1kA5EDeee?= =?us-ascii?Q?RjkVVctBe3Ve/fF8y6qVdhIKkesh3Z42xIbvimOqId5AMjUzvpiLnyCeYN+P?= =?us-ascii?Q?D0K2IUbVVgX8bymsj7WsyctT1O7fIV3b80l49FRQ7dMS6VUVFnA8O5GOwVZ0?= =?us-ascii?Q?9ZV7I5r5RTXUTUl4ozvqVzQPEu5u9ecBooj2RrD0O9WCyvFY/h116+bo3B+2?= =?us-ascii?Q?OSNFsvXS5ncnlX/AhC+/g9ErOwcRhMnGVqiFmFp0u2AiIxr4xyeQIG8EeHAg?= =?us-ascii?Q?N11yvosBe8dx4vIv6ecf7ATsfGnus4LkJeqy5eVrsnXoA/RSKicHmnAU0hHG?= =?us-ascii?Q?qKjhHaRbGOcxrejeRC5c7rowvH5edj7eGCC7blk8JlSK5CC2BD5/lkmaHqRH?= =?us-ascii?Q?+U9Z5c1ffHLBehNtYj6ljd/gSPSxT6zrvkjPgzdef2gvk15nboKhePOr6Gdo?= =?us-ascii?Q?lQDeHPl1L8OyqnNkdj5xIHHghBn5XPR/kntceuWj6q4yyb12Yot0ZeUUmb+K?= =?us-ascii?Q?o1ezCJHTH2zJxIf7WYWUfE0Vd5OrkDN8ox1Y9JA9yIzARCJQtIF0fsZpJ2Y2?= =?us-ascii?Q?dN5bE8My0bYyOeH/uwD+5Wjof4VTh1Haa6A0aa6B7BaEEaaMZUApEckRIq3m?= =?us-ascii?Q?z0ZlbiTsEV688jEV7poiRUnPvrUfr6YIjC2gLn8rL8tr5UqAbnwUSP+xmZZH?= =?us-ascii?Q?evLBhaZbPSuvWoNw4pVBJsgwlA7mRg01diYWKs1uVS2oMNc6GJEiHw95I+4l?= =?us-ascii?Q?QtWDCDSz2f/KAk9kTye8TBzYlV0CUY2PsvmxkYo6Cfq2VYzOej04skZtxM5+?= =?us-ascii?Q?jGgOfuz3yhNY+RkREY3sMVO7PXQ36TTM?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:ruLMGPlrPsqxrJF2OxgoU1jclCXZBASjcx9lFKL?= =?us-ascii?Q?YsqMl6sL1bQRjuV8sB327uaWsIlFFV5ZQ+Yaxtp9N0NY7hUy4hw3AKEuCqbE?= =?us-ascii?Q?zLHoJHkrAtrzxw6XEbG1rcNxOD1KsAcbJ5H5fOqO7+/sDiIty/GqZe2Tj/Or?= =?us-ascii?Q?UrYHLozHFe17bjX++va8V9m1Zjpr9iIZtIJrc5bjDANWX7Y+Fl2GtMN9KnH7?= =?us-ascii?Q?fFFBokIKw0m/C4eIvKkL9U8dHmYZrmEySY/BK4oGrRf9WNISwOgypYaU/ZjU?= =?us-ascii?Q?jFwxVyQ4W/v08If1GJTogUGRnXm6Q+XAo7YGrNzLQqK47vubDa9R5vT/sqUJ?= =?us-ascii?Q?huKRrMzRqJ0YOh9PtpDwuzTW8n7ajFs1yomU3BokzqEm+LllVSiUIEINZr9F?= =?us-ascii?Q?x6Jr3OI5+WeV0HObbaMQe/0Mwx6lccUjZE03TFgofVAPOeqekLfzUsCQ3OuZ?= =?us-ascii?Q?Tg5/aOSBSSuyXZKJuJo8lGq2Gs1OeNvKVkLTJjFLKQRcNE6yyPjhuQ98YBEm?= =?us-ascii?Q?w8XHSem8wOObJ5FkzABa+qXWCdP2tCi/X/YXcoqHEoMy5+V79uuZ63mCCAFE?= =?us-ascii?Q?QHDgens17/s+b+ScFwRJLXfvbH2iuU7EhAYzKjpcm9kn4pdxqbt0DXDCglAn?= =?us-ascii?Q?+ghrGb5uqBUjORVq4obK9YMIChSbvR3uPJ3eZBv8+UfvV/JsRqfBUJJQFTtU?= =?us-ascii?Q?Vo+6/gAblmkB5+1Bb11M0RbIDt9r8pEXlJxo+K2r9J8j5eod70tNK9t3ph0J?= =?us-ascii?Q?Q7ivGnSK7Xixvq+N3Zq5aqVTrBZTt3lSan40KZz1pCJPMQDQ0fZ7Of1AyM/9?= =?us-ascii?Q?vHXRF3Uq2iaOwlCFXUh/6nJFVsXpFG/eoeDTqXDoygDHe2h9FgLI/12+vwur?= =?us-ascii?Q?+HmFv64sPe7K94ejjGgNdSTM79fMvK+/AotQtXpEiXIq1V8rLapux+HPRwsf?= =?us-ascii?Q?zrfnePvD6V1xac41cQzOMCPAk76/ljQ6qp6z0wPQGqVzmSTKL1In2TOeM0nU?= =?us-ascii?Q?F+HzMGSyzvh3JaRTeCzJpdqhijCPjzqFIy9TnAuqrc3u4tT7VvsZkO/xywzY?= =?us-ascii?Q?nOzz94Zs=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:y6RRZs5cwHoJ6qxxoih5IYGUjNdGsigzoimqFdC+lVCcFXvX1I7o4wRjmpU9QMX7ALGqoWxfX/sQeVnv6RrgDaZNOsQlGembhG9uIDBrupayztVPP/5kBT/j/XoTRS8qT1EQRJD2rfNI+NVvWKOYou+/3WM/U4gsRTzVOSHALHjrYHoCpmjVwQtgHF7KXGm2TWkpJE/XaM3uTvfCdSiBN6cVCXaZgIB6MTypme1sdkdbcnwmS1tZgF9/BDmpnRDUuPSJLnp7p/OWKtxz5JY65HgayXygIJqGjwjAiWt/67TBBcIuBQ9FxLL0PEgox351Mc6gy83l2dEtfx/Egzv7WGYgyslnasBn3s4hBqi8Sw2eGUNdpcfPzIs1WWJvzhxgj9oDBLYtBXzxjGYtaSWqVofisQip6K78v/u9YkQN6Qz9lUBx2l19ba5kkKkmvnNVjgRI8zQi+gTV0KhXY5IHUJHE7n+t9OsONaY2AWGAZDaYFT3DYhh6hrCOG/GynhtdMllEf9kEgX1xoTQLpGb09w== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:yapSLRHNPKiV9VdtSOjDqWn5HRom1nYB3J09dmUXw1GdQ5XSmHx+FdY5szDMqq4p0HCiOPvrJdakKokGIx3fXck/FdF6R5NeYy6py6mmUmeMuIM4D+omcLSKw0YXYp9A7jWoNBBYdF7FXhB8pwEAGtaWhBqELEpTNtXOj929USmvTw1Rv7UrG/vnn5vXpOSztbvDtOV0NzGM420gVswihLH945U4qgvRbcT2l95IwwX92Ud8JMT5vYh5HPlR9IokxtDpzryk+KH5OwpAy+w/p7LqItdX1ANCZqBIoHLv4MF+ZH1Fj+Um0wBHcy7oMiwYk8XuRtH2MsZcvBJPac8IVrg8Qo0eRdljoNmKlHa55HOOUDsQ2EIOkqffqNa/zN2zs1EouW1mkTJ+9/CsupPFVXxf/KzSrmuoUcFgCZBTSpgtIIniHYjEld9QugucKCeJtMSddGxa10Ds93g6ytgHzJXASRHQvT2CoU6g/jd0scHrZ9urMZib5ZaQtGZcnkI2; 24:EY/JK4cLUBH6tjOVamyXXcESs2cckvqBQ/FTA9PX+sB7Co0vUUt47vcJlnLHMC5dTmDa6Ij08fjziXi6dLigzNfUAmAjhRCd1efX/SsJn9s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:/iPpzZPSqYbtI4+PK5h+wBO4L3iQ7eQN2TNDocFw0u35ottzeGcCkZeG8zn3pXSP/qFPW2zrdMQ3JRvRwGw0RiwgfBGy+AzpM4vOYLXH+qy2RIrdSkxaUjRmFqypaQlNOdAJItLYul3e8YPubgws6NbG0Y4W3rjh+XpLB1bgHpeFPRaRZW1Zv+A/BW1LNbqWdeeVZnP30E4s5QfXTeSBYiE8h1ytedSmVtU8dTBXGxqbDwNNlpsNvWltlmA3Pt+wRlO5d0J9OtO+i+7jTN24+dA0WVbNKzcZiAm4hvPATuUXjt4k48KNS4Unxq0WVjBGTQMzWoHtvpbMXAgFHX17RQ==; 20:+bvQ2rLXmhn3dE/+zDhtpUDB0lhYk68dOY7l5C1soZ1pLoIF+anhH5I0qJWHQfbC+WDU+mrLp96JdIDSVWDCg77xyW8DoRFpAtTIB5sVrXqf9s+zrVaI3sulRC01et0FsS4vcL/izr/ZsKk7mnHQgQRsi99QPkqwI5NKt8Ro6zY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:10.1781 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.136 Subject: [Qemu-devel] [PATCH v2 11/15] qcow2: fix misleading comment about L2 linking 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V . Lunev" 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" Signed-off-by: Anton Nefedov Signed-off-by: Denis V. Lunev --- block/qcow2-cluster.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index ed65961..3dafd19 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -827,12 +827,10 @@ int qcow2_alloc_cluster_link_l2(BlockDriverState *bs,= QCowL2Meta *m) =20 assert(l2_index + m->nb_clusters <=3D s->l2_size); for (i =3D 0; i < m->nb_clusters; i++) { - /* if two concurrent writes happen to the same unallocated cluster - * each write allocates separate cluster and writes data concurren= tly. - * The first one to complete updates l2 table with pointer to its - * cluster the second one has to do RMW (which is done above by - * perform_cow()), update l2 table with its cluster pointer and fr= ee - * old cluster. This is what this loop does */ + /* handle_dependencies() protects from normal cluster allocation + * collision; still L2 entry might be !0 in case of zero or compre= ssed + * cluster reusage or writing over the snapshot + */ if (l2_table[l2_index + i] !=3D 0) { old_cluster[j++] =3D l2_table[l2_index + i]; } --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330729447601.372696766763; Thu, 1 Jun 2017 08:25:29 -0700 (PDT) Received: from localhost ([::1]:45227 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRya-0000PB-7Y for importer@patchew.org; Thu, 01 Jun 2017 11:25:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51697) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRok-0000QY-5p for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRog-0004me-VO for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:18 -0400 Received: from mail-db5eur01on0125.outbound.protection.outlook.com ([104.47.2.125]:27033 helo=EUR01-DB5-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 1dGRog-0004mG-JG for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:14 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=CigHav1LueQGw6+ITFq5j7KMZkBfCLgPXzdhZgsMKqk=; b=ARM0YDLP3bnnzFwDKaxc2WuRVNbQ5Vrp8Z0qDHTM4Cli73tPE3bHkb8fN5IZks6zw1/uAmGQiuUc+ZrcceVlgF8JI+csbngGKudsOlsEjFIFUZLPVbctCR5/O3CXN7X8OAzbI+kXIT1Jy5GRqzkyTA8m0wThKcXprrQ34Gb7XD4= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:30 +0300 Message-ID: <1496330073-51338-13-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: cf6d2a23-fdda-4508-d138-08d4a900ffde X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:y0fgwaMJKT57c0GlnMriulMBIYb4f2L0jYB46ucp7DEJm3xR3gGzMLzOduAkwSUNFY2fR70aPLYUiwRYwywemARz9Zf6gogKmYKDyA+uxWHglwRo8Yf1eNKceERN6jidPgnbUADHp6LAcpkkiGuNm4R0SvgYxVIvhddHsMpaeWwYbi6PZhP2Wppd7l1hKwmZtl+wcUKYAzjsUV/uBO+CHIbXRE44DBsC6OSJqWsQkkFuqasgGP/+T7oHJQBZTQI8G4gGQeA1Iu27s5K11KeEnNlrfx6LbrE7IXxKffdOzdn5aIWGtnr1kiYNQ0jeGpSjTBZldjXl+Ul67gBEfvq7eQ==; 25:xaUZuZQLHz0pCEbzKhxfgNyjnyThoWfh5L9ZrxfVJ1g/YMMAqfeYP6pEihkX5k8NZTd/MTyRzd4siYnso9p/j6NIg6x631zfPl9e9wyuok/5a2JYyaxk1r+/2PtNYRn0AvoLwuXfDmfymD7H1riKv3mO9R/g77DG8sxAyZjspRh50Tz2Mx/0SzHaf+SlEXJmctYddMJxkJ3Fh+NAa2wvJPtLxXy+7WYEwOblWt10zs3DshUuSMmkNsEKi3aO6G6WwlYjTLWvVLPpiU0Wg4nIznpTlNS8Aw0dEPZQIbwQTuBb2L05N7xQyQmXIJYxIhfcEz0ggWQruNvfMnYxj8gzFd6vgi4T8SMbSDUuihA2nC5RJuesg8cCWwGzkusVoTUDsOLxylbzyRfZbugmcD1Qe+aWyZUYFz4cYszIUCWkA3QyAMNbzgjubPoEf2qR+4Cg9LnWwKFjCnT/HBXXasGiDeoLKBO6fucxMyHw25D2/OM= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:NFPqvRL68uHn8XuLpTnOs1s8ffDq08SVBgLi9Ln467bK4POAxhr/d6OMCc+nLSf7XLfkrdAnxtu7cImzUkTNoWLXcawNFHBv+bh95o+rD5m66Q5FAIo1gnKdS6OEB08AiEviEuOA/FHW+nHV+3dNnpge3lyQHssGbZvDIt50H2ptKx8tV+mfn0yucGOqiuuKaI0H+d3hBTCt2A5CedUl8rqTrFEed+xe8zf7NUSrJ7M=; 20:X+TyB5G3+/ND1ZGwv/AZWjGGhVWwiipI+2cdSLSC6QZdTEZsdK+smI66tu6vn4TI3AKIqsvYPJnvIjcQ2rCMm4RmuI+3A556LDqRvBfOg8Z6mVLLelD14MOAHDw5Bw2e+/ENgSb1RM2xwUVa6PTRyD3eNckP+/gl8yZLRVr8hO1j8BtBISGRTWa9HWn3I7Kn0CRfjrWLk2kIf33v4kXuYLV9yTUr1U7Rb6uqU60PubF5UvFXxSdG4Fow+FOGYVjPylmSIb8QAKT3JMDkHMh6fHNwuFfw2712JxXfV8JS9G4eoIQIkysjWpnbj7qwZ3KIs7Qs7I7d9INrt0gGl2EbGnNnpWRaT0qt+nrWZJcaN5JfOjhbyK+2IzZx/YThi61iW3X8xV/BozqmIJP0NjJelCAOlVGrlLwMAS5enUxluos= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:r++bVomrnrNvtjlu12rhu0zrtAbVw0sYznJ7Z9Q2?= =?us-ascii?Q?sUmc/HBeDukNxlLE6ZTtKfnfWw/r9xP/9BRGAwNzWGjwweKqkSDZHKBS+XxJ?= =?us-ascii?Q?109U5MelsczDGrQn2Z3SNHABKR4YMQdD3R528G5ak18xFRjkI+y708iR42dF?= =?us-ascii?Q?lVu3UgrouY9oHcYGT1zg6QU/fjaeNlZmzGgsP2R1zBei8+5YFpMyxUCjwY48?= =?us-ascii?Q?7i5wGCdWrkJ48shKg2KGsBIeotY4KfyUxxAEChZJ7MlGryJuIjJt6HOFdP4O?= =?us-ascii?Q?wx/cFzi51uXoncFARCC4cQMV4XSu0UXJr5UuYQKTi/ykxXrVg9vE6drWDWss?= =?us-ascii?Q?Qf0t97mFar9y584craC1I3/g6bDyLo+73e66Fm3Qugc5ihdZNdl7KowpqI6H?= =?us-ascii?Q?WyA6Pq2/BiPmapjZ1h0C22uRoD/3pDvlFHH85gkHUEO7GXik15FVeBXkGitV?= =?us-ascii?Q?o/7XFHawk/Bn9ySYmZRnJ3hDQrw+/iorQ6oiwSfXnc2i1TyIUtv7DxIlKG4q?= =?us-ascii?Q?3bqgu+L+pikb7eHiUhjIpCk9rW31iXcOZSAWszpwumGzCPMPmL8qm36b0bRQ?= =?us-ascii?Q?MQBkhC7fb4caqbUvMLZPFmTHQF6m1uawIUvT4UJFCRef1QeYpmF8wxVdq5s6?= =?us-ascii?Q?McJ4riVjfQoyBWMBXR/exmNT54TtknEKWP4g5jx4SyyQLPYr3pUYRvIno8qs?= =?us-ascii?Q?P9nnW7A9zI6W4UWBR7EghV8PGmH+JiwnqhFXGstaWBm0hKpxSP4wJAZGo6te?= =?us-ascii?Q?5pYEWNx0Znnrx6qUCPuhS1erAl1UyOkkiAXU1Obs9F9fqGq6+WgUbFzJ/In5?= =?us-ascii?Q?0ahwaRYqQuy1K0qkAypt8qVjjPcA1GliCdnjvto9d69cDINIyYHrm5KIja5c?= =?us-ascii?Q?e2gLB5PKWmGuJDcdPztwDSXq0w74hLceHQSeTa+t0CHxklMlyUGfgUgXEIsw?= =?us-ascii?Q?r35L4Q9pyVJ/5OVUNmsivIUgXVTig07sNT0MUBNXO5PKDYzV4LfCdMSEUyFg?= =?us-ascii?Q?+bvcOj/IKoKqso15kfZPdf/pvT4KgiTFj5hq+SK0UQ9WDVgYV9MQTJyP7idY?= =?us-ascii?Q?hJmTh+ZGcn3wIxzuGDbCdXuwlthHoYQbFKSB9+CIRngrJvo9YPGGL3JxGx4c?= =?us-ascii?Q?S3qLxzU1Y1G5WGqAVXQ99w/Ai/h5jKM1?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(52314003)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:pqwwGe2md/Ggoh66aY88J0wCO84lu74FYDLJE5o?= =?us-ascii?Q?TWnK5tIJ4z6yXIFnkTvnNzQHGFXh6X8bDCsZvsXkEAeTy0A07KWF5DIUeOHt?= =?us-ascii?Q?O/7MD0SJGNyV34Cqt2xCxYNsZ64D5HAmGFz80lCr1h/PA1a6ZBwCG1vLN23e?= =?us-ascii?Q?AkeEyu+52152UTdUC+sFjO8ii1EO5eTivzYX0/IMpxDR0x+nMIrIGemvTCHx?= =?us-ascii?Q?Dc+pvIupw+JNZZ0p4rh/V1N/rjwDf3fsgKvNNSlLpYXA9YXvDdSUSDNe+tvk?= =?us-ascii?Q?gt1WMs3iG8TaJ5TLOBpcT/ffNrYRZ2v7Ax0ry96cDxafwQC9caxqdHiIBQrZ?= =?us-ascii?Q?hyzCb8jfh06VJsxS6NwZQveVaasreQ4rhKW7nRkEZT4KXAgAoWX/+q/mKPkI?= =?us-ascii?Q?+Zx+ZrTfEBQdH467tGYZXkf1xYEVrr+8q/AgSVEJ/fAjyUMePWjpY2FdVk1C?= =?us-ascii?Q?2CAKOVqCwBVZKeHwUWEDs/Yul7brEdBnCtO8Rgj6lY9OZLMwfVnS2YG/RlBu?= =?us-ascii?Q?p9SJv8rrOiEjrSnCbGv8SccfRk7zL8Jz/pjtNIhhOfLtFxULwEojjiNgunaq?= =?us-ascii?Q?yu5W5m56hPnDAq+P9LuondW7BG6jHgJePYvCiWkfIP1UtP72HMt8zV0NY+QS?= =?us-ascii?Q?upTmbrrzBY44/SLz1+osFmuSt7n9+UlsJjIVxEziGiZ3NLHwtPuMWw9VPAC+?= =?us-ascii?Q?SjVA+KYJs6Y3LFaVpcU5OLU5A2vaQ8Ljz8Ipvk8Bwj7CwSryWafgkfbrbnok?= =?us-ascii?Q?+1xHlcjwTNqb1y2MOfdn2gfwy/drXVUEIuSL970SPN1ByxDu4cAXg5pFSfef?= =?us-ascii?Q?XEWh8kfar1yip8ZvU7cX9FDkkYD3FNIdT9gJ0vf/lpi6a176roRU2gshBebT?= =?us-ascii?Q?ltmJIxzTPVDrCwHehnc/eLWgp/Cb+/XrVw/EzmKT6B/85auxiocKIutbc+8/?= =?us-ascii?Q?uCk7zdOG3oYZuSi1DVZiKk3oUwH8CtqNftor3hOKnHQrr40xEnXYivPAQ8/F?= =?us-ascii?Q?mJ5B1ep850g27sLxjfaBmFShyJqDQGiIvyUTQt2QlCQWRa5ZNiWau4VX5xhk?= =?us-ascii?Q?SAHhblK586RoFRHe5Rf4C/ftDk6UF?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:DqlETsoZbH54+Ncnl7SeMGbEdlCjzWEGm3uXN1DQYk2cbMTh3Zu7wMjWC4N5SpKirJzjQ53lyzsRIVNJzeHNZ5FKDbCZFDeWpUuFdaPXIbHd9JFk1DHYAKxgcC5xRRpMJc6Uoj2acVWefbsDzOomVnT+Q8/SI9IgZsTneSfDRACgcacheIUp2N4BpFakggot8r5JmR+Qifkw12eDzDYHv+xlnws5503/bcMuwnOmCvMiTYEpaUPrmPwJJFe95uPSy/QCrDXHEUCaTueT8351aa0nxp6tYJphkbiiy9f6obDExdbzriHCV+CVgO+2MreYvFdIYJgns2jg+ceyRmKJ/KG/yLQnNefrbVBZko/XJzcj3+CaEZ1CXbr4GhIfoFwWeFoielRxdK7uLASHqE3hPzGEL7sfQNzrGxdDvKNIewOAOxh+hPPSIxufsFIXfifqD3Hwc+hBsB6UYnY4EJOJUg0FzHvbK8+qtyuxXwDAnXzAmSdMSWpf5crmxU2LDwQgf3LqSI1ph+1liuYRNvvd5w== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:lqvmWrDMpNTHiqRq3QTyaY+HhZdCmEZuXhRy0K8Hk1/Sjh5+t1kXsbcJjeR2g/Oe1ziaLelkQMPgWtpgVaRyDPs4G+0Ie63GtRPK00ftJwuyIS9mVnV/zx2nHyqM3pc21x14ZTQZdn7WrvA9M6HfDAILNMCmvFSNPfpxQ9ZhKSyKnEFOapCORgKrfH4lr0/iiQ2WUFP662GtgIVkdxl01UJG5z7xPkBhKNu1FYCASkv8lsGz2lNdIyTYpbAuRClu55AJ4MEjsNiDrCy/nB4KGFYsqNKlU1ckraDgNPlVaH67zyTokg5MxZtw3IkgJSHASrRZ6LwhAquR7xbdDxonZ1vnpqhFkS1X/wtImYQz0qTyG8m58/cilDzLctpUV618NSfAY5c6EnFbKDptEYt3FmvApSQbTn8jVimzoVYNyyKncTicvTMHdMmf/Pk60+nwK8eRHXa0EJCwaYJpGTEB1bezYZrCQCIONyNBvRgG1N3BBJXWEZeWj4iyptqejUhG; 24:zGYbcbbOP4Un3FlHz5vVxsC9CmgZFd7lmhac0uXH2kmfrPOFY2tBp126N/UZz7Jnz2sKUd1/VugBiPeLZjQOWgvfwd5FXKNQP062RttYIoE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:571KvqeB+41PdbgdvwRnxg+i364f+uNu4ymhxa0z810wjkIc8piTKZ9F3C+kn2ikx2pgQgswd4bx915zGGu5O9rMhTCEMj/ME6nzmJCuSX8dCkMW17u0JDNaWiw6Ra1Q/4HINkGhSB8dLzg6qag+v4s5RqdBioQ/KWJfC5tBPc8/+Hk07An/kxtwEAHPX449mWBMua5KQFba3OlB1SyPk8O6VyNPR+NTEfpPQvxh/9e8NiYU1pp0Cn5MD6H6PBQDwE+5FhIuGVXE2WbnX0IrCLj3UIea5JYdP6gH5UHjsae/3oOl9ehfxQROuXUODxp7aeVaa4CFKAy4Re40U7IX7w==; 20:GfKjLjy+YUuPHrRdDWij6kADWK4JqOyHjP242eBzq78MnPG+GKL6iOL0YdVgQ5dkSzyde7ztYlOYGh6CikVaXb6XgyxwLckspshJwNJzAlInqDnODnH7N9fXKPchxffoIx/ezCxdW4G6rp3OI2rY9CZonr68NCQEFo78ulfEZfU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:11.4437 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.125 Subject: [Qemu-devel] [PATCH v2 12/15] qcow2-cluster: slightly refactor handle_dependencies() 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V . Lunev" 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" - assert the alignment on return if the allocation has to stop (at the start of a running allocation) - make use of const specifiers for local variables Signed-off-by: Anton Nefedov Signed-off-by: Denis V. Lunev --- block/qcow2-cluster.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 3dafd19..95e8862 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -900,15 +900,15 @@ out: * Check if there already is an AIO write request in flight which allocates * the same cluster. In this case we need to wait until the previous * request has completed and updated the L2 table accordingly. - * * Returns: * 0 if there was no dependency. *cur_bytes indicates the number of * bytes from guest_offset that can be read before the next - * dependency must be processed (or the request is complete) + * dependency must be processed (or the request is complete). + * *m is not modified * - * -EAGAIN if we had to wait for another request, previously gathered - * information on cluster allocation may be invalid now. The cal= ler - * must start over anyway, so consider *cur_bytes undefined. + * -EAGAIN if we had to wait for another request. The caller + * must start over, so consider *cur_bytes undefined. + * *m is not modified */ static int handle_dependencies(BlockDriverState *bs, uint64_t guest_offset, uint64_t *cur_bytes, QCowL2Meta **m) @@ -919,10 +919,10 @@ static int handle_dependencies(BlockDriverState *bs, = uint64_t guest_offset, =20 QLIST_FOREACH(old_alloc, &s->cluster_allocs, next_in_flight) { =20 - uint64_t start =3D guest_offset; - uint64_t end =3D start + bytes; - uint64_t old_start =3D l2meta_cow_start(old_alloc); - uint64_t old_end =3D l2meta_cow_end(old_alloc); + const uint64_t start =3D guest_offset; + const uint64_t end =3D start + bytes; + const uint64_t old_start =3D l2meta_cow_start(old_alloc); + const uint64_t old_end =3D l2meta_cow_end(old_alloc); =20 if (end <=3D old_start || start >=3D old_end) { /* No intersection */ @@ -939,6 +939,8 @@ static int handle_dependencies(BlockDriverState *bs, ui= nt64_t guest_offset, * and deal with requests depending on them before starting to * gather new ones. Not worth the trouble. */ if (bytes =3D=3D 0 && *m) { + /* start must be cluster aligned at this point */ + assert(start =3D=3D start_of_cluster(s, start)); *cur_bytes =3D 0; return 0; } --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330616345348.4720893803069; Thu, 1 Jun 2017 08:23:36 -0700 (PDT) Received: from localhost ([::1]:45216 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRwf-0007Ex-AN for importer@patchew.org; Thu, 01 Jun 2017 11:23:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51724) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRom-0000T6-DY for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoj-0004nU-7q for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:20 -0400 Received: from mail-db5eur01on0122.outbound.protection.outlook.com ([104.47.2.122]:10425 helo=EUR01-DB5-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 1dGRoi-0004n4-T3 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:17 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Bn5mHdiM9c6Je1KgGWvpnXjzTZHTCmJLSBllWsAP+64=; b=gIDeDDJsrp+JAOVZyox/HbEI8aiCey39rNnvxTRJ/FbfhURVEfuH0FzLYbnsgw7pqthc3Z/fyzqXd6KMPjOV7vAwLPMUTF+81lOUX8cHUXs7t0UGquPow3DcqC6v9O9UF64oz4VAWvPFyHOsz3xnjMTuA2oQctt1ARZRe57oH/s= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:31 +0300 Message-ID: <1496330073-51338-14-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: bb8d6b6d-cc0d-4586-f0af-08d4a901009f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:uMRdQpn6s+l6nn+f17Q2zlHu16z8cNljwA4UuAL0XTSQdR8oS8uvRPVE85JoiFNOZqmMlMFWPeyo6YInxvTFtCEClZFEN5W9yDbtqQOOtz7BLLSXL17v9ONjsmB2xMWEigXXD0YzBd5RY0X5lrUxIryGEx9ow5v0dTsqT5oL9h80M94PqlccVTvOvcmMMD2I099Y2utQQO3P1n1iTE6jGrEgDsy0RM1APc+GnGG2KdumQChJY3nT5d3xs56M74AJ1TPZox4cj02iNT6SuDngz3c443Mx0neOLSpiHtVRpEngnd3T3IzpLvVwtqtYE/tDO/axim52As7o9ac0f+ATpw==; 25:paWCdfJdgi5mRU8ROD9+e7TX6dPlx+gr7CGkAo2r3cl6MP/emojeqfJbsI5+X+jIhaBwr12zaXud+/1SMBhKZGLqS4R/sATFstq7YQ4Qh95CDlIHyzUQUCZ4hqu7GBA4EgTRTQ/v7T8iFwaAawSQgrlrt3VyhKse4wfyBgqOQoMZWVbFSAfTR1scxHM3az7Bv6YeI9yVX4kY9F8G7FL6kPR0hIMEIlw4gzzMLyloYC4cihUFjgoMoBziCsLTbdCOU3NuDsrlpJkIX/eJzb4L0zKaVfyWBTnk1Art4FiLLSQsAHvxEISPgRLsOkgGdWldjihMAchvdIOpxmiCp554DnAox5d217Z/kivSs2U4MeFjJTfbQmU9OtvN7Ak3IGQSgEE83QSe2nbo2ctDPm8fjinxUqmrfOt5VwRfHxk7i3UKrRsMbNOZUUsRfe23J0lkkG2WcYDnBWh8lwCrLlGjejYvcsHbfVgLgAtqziYtQU0= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:NLaPUmiKKSbDbOFS22roQNwgPUmAANkRAN0pmVtjzLKndHvPu6WbdgYqe6Hm5r1aWJlaJtLYG+HIIYswQtuR62OZatcjgln05KB74uV/tRJTQxEMHn+cfr/RXiWDd8rKCJ2N8g7a9kLsQriwy7jcXN8ECU4lnu4EJS1UCLjunAQul3tWmWyODKjtb83n8LL3gJ2SOfv03dca/M9ePwXfpWMoW1198VoGjoMCR14JQi6pdUGB4PdyLe5ancCvVBWLzQ/+4oNSevxM/IcJA4ivEQ==; 20:g3ZcVSOY7NhLCl05f/12X3Z/U57hHFvJKRL8PvogbdpbBqSbeUajUN4AfnP7lEHjKatKCgBOqmHfEiLdr/D+sd3eGkLJ/bGP8Np5gnrmPENFws1awPnzgZLtjW2/R62vsVqq0+UCtvHL3sOqiTq7o0FWg7E3lEFnu7vMYBuzEnsgzdwIJlCZn+CLR70TX5HhePGgtZBCC9Dv6YyTwiQXUWuMkqNmV+5OqWKgE+WBeGIoVcobMpG7GUO+kudo04A9XKwHbqP8tHwzL/IvyUtr3iOFdCRvJpum9MypZl54F7xZdwioKqqdsyBhKe9GdOFzQFQCEh+SJCz7GY6godFv5XMi71ouFbbxZi9gx3lv7nJqz3p5GvdHpeVJ5nlvUlfcdGhPQji2oNkJEXeYRlqzxDibH+J6nBkj8Uw8eZiKjnU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:m4U3t/3YN/CX4rabVh//iMju3lJtJbtm+aFb0pTQ?= =?us-ascii?Q?hNeHKx+6CjnhJZbDH7rw/Po9YTjDSYyEgIofzZDWcwvmATT/TYtO7mhaAzD+?= =?us-ascii?Q?ok/SJg3FKzFrDy/F/Sw+OMmheTk2O0KCCuw1LzDMHrD5bSO4niJ3d02zTsDK?= =?us-ascii?Q?5zD6N3oHZ2rVhits8p4K6S29PjPvzfsMojgfDJ4y+kkFb0PnIhl4+0mrftAe?= =?us-ascii?Q?CIkHkcgz7rggW0zl20UjiV4zo+S1OjfHsj2HeX/rlAwR17yNsCweqozsfsos?= =?us-ascii?Q?D5QADL+zNQfP/GW5b91AEG9EG5eqYgRkG6DQFwOUkaDFv5Ay9AponSlHpyZ9?= =?us-ascii?Q?o/QEUQkp/9Ma01FaXSJ6mL0HGkv+O6rwwCzke2F/47EnUdn3NpZV11gXEndC?= =?us-ascii?Q?aDy1B8OgDwBurcXnE7wnseUupiNtGCNHIBqzCJUYcIr1k7JBIF8dU/9Y7Y+t?= =?us-ascii?Q?f4bhnXyEJiLNBTRirvruzGh8L/OnRPEFxuFhNIELXlzVawrVFXTNiZg0Yk6W?= =?us-ascii?Q?Dv57t3se905MZJSnwkDWa2UgLVn2C8CcMJEqnjs3E1liw9SVrkQo+Z0fHoch?= =?us-ascii?Q?UthL/5HPZ/aZmkS+OUTWF7nIrAVxDmmwAKnQEBOsnAg4RIuy9i5wWrHpbG62?= =?us-ascii?Q?AB3bLadiLd9PH7g1XQ3wSE6+ma4pgI+7W6PemHFTEmc+QelWZo1eBfkta4lC?= =?us-ascii?Q?4WwgrRD8go9I0m8U4H/NekPf/Eac2ygXF4K27iQQp2nEj1546O9r8gs3nOVG?= =?us-ascii?Q?dfnpV5639X1BNXM0Od2wBkfMNfAJ5XGVDk+Isenb1biAMYxAT2IK7SuGywMy?= =?us-ascii?Q?SV5aG99XaL2PQ6oKrZTnYrk8p6/nM5jyXT4+G1PWnmVJflCWfWViCABVFXxR?= =?us-ascii?Q?Hj54fFwmJ/ZVAG2fX0hIOXxiVKd6tSOYty3X73+w9+rmD4lmnuwSxFsvWRTw?= =?us-ascii?Q?GiFi9C+y7oFrnVKDItZe1F9R3cKauhcvCHNEqcR3+uWtG9mfkjW+3+wrFN4d?= =?us-ascii?Q?w+sc9LOjMg7qJ1gdntfG+Pq4mWaMhD4G2uHmvB2t0HcxkFwU6LgUr6fgv82U?= =?us-ascii?Q?v38Jj64NgiQq/j5nRZhLGSosld5e7/3W7EmR75aGQ8I6+INboUHlwCTPhH4w?= =?us-ascii?Q?KEmIyQcBv19lMt/Tbh8unXNyjJMRqSXc?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(979002)(6009001)(39830400002)(39450400003)(39410400002)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:VVnNS30C8mmGJUxhxegog039DqrtG3lw1/fXmzD?= =?us-ascii?Q?6TZ5JAqsjBLdXwxIoqw+tItFik2DcnnNDMzqnx+6ueQNdEz/GUZOsE6HZydA?= =?us-ascii?Q?yco8pngVmdMMO+AblGtbmxfsqxWiRY5eFTbFCOY1HzAYt0faUKD7vjtWKK0K?= =?us-ascii?Q?rUgFSk0WkRoe1PjQMr1VYf3L3Da+uKTNSczOjCVWglW7JGiY5kN3EhND/Izj?= =?us-ascii?Q?ujXVX+Cf5m/vf6ItMIGXr0wlOvVKTd0B8p2eIx1aKP1s26hkIvapVdEFok28?= =?us-ascii?Q?hetQRF/itgvtNZgjJw4/aOUaQdNNx8dV+FoFGejLZCdhBee6Ze21cgGt9Khi?= =?us-ascii?Q?MhhHjC5K+ZFgNP8aSwL1HsjCQ4u4wVSj18ct2n96Sunhx1+NTFu3H6/H1Sf5?= =?us-ascii?Q?DDTCYOVa87W4JRsGVjAKrta3pDI9TObLVw9i3vT7p+xTQjKVdzpWLf98cTFi?= =?us-ascii?Q?GDn6X/xlnFyXdOodiYdheNW4kken4jJsoWJBwbOqiXdo2r/aVhNF+ftsUXSl?= =?us-ascii?Q?MOUFrZlHXa3U0BGhSmnuIEsLrcW0O2D5ZjFmWriN0kuVcGxEt0RSk/wHLz83?= =?us-ascii?Q?UB3IQxUjMOpvEUjUWzblD6VbvO3Ntd4ITRe9FrPM2V+m3TTZiXLf51s1qMDO?= =?us-ascii?Q?pZR0f6eyMFCdWMLxGC5DLGE0prK7TAYhujiLCrf2yOX5aCxPHhUzIZ0DJuuD?= =?us-ascii?Q?ysN2RCCOq5Wy7Z1ZcuazzbkSWuijCOszgA3GwpOPSpJQMwYXNmRdEyS87SwO?= =?us-ascii?Q?X+vzsM6AXf8VTTSpPLpi1rSkuZwjCqShBMx6+nXG7dO+jCawwEIRxg24WwdV?= =?us-ascii?Q?Yn9pebLX6VhzfC0OJEX8p2E8EgvL9BFxcJeAoyzCy8gXHrH26WcDOBMQyCo9?= =?us-ascii?Q?gBzqRy7BY8vYF5+CLxh79JWEeDx/GA7OgrNTRWCuzjfes61DsXI/uYJyVW/8?= =?us-ascii?Q?Eos/MgIMdvzGFtTMpgEsUQYoUgzH76wXrGQSV9aRO9xI4if6CXsdVrs2TNu7?= =?us-ascii?Q?389iKiUoGn7pkTpqEuhWYkmWy5fjwIj/wujOIRXLo/WcYX5bUxjENJhMNp+K?= =?us-ascii?Q?VZH5TqaT1w7Bw/5ZHn6JnW4jfOAqlr9EMJiM0QjMqiNVFR9j+DJc3yihm6A6?= =?us-ascii?Q?HuQZ7WVAEKszhj6SjUPgWIt8zoDeOgW8ZOHCe+HWcWl8NQphKCQ5R8nAh5RG?= =?us-ascii?Q?MQOdwCvsqpbBfJvQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:Hw0SqMOhSiiWjVdolizvLP3odVdh30UrLIH23RpbBx2FmKaudcjq+c/b8vAxImSgzJNNRmqS0och9YBOMrwvzhTAxEGKGWQ2rD7LEWfsmZnpA9/0xL1sZ9zsnxD0ZYLQJVoY0LpluHA2na9fFG6HsP3QKd5/dRWnsyRQyKLzeURezenQjYg0Y5kKoRabEVLZBNsG0bH0BTagsriOugNTbN1zp8NP9ShzdANU8R39djQWFUdFVSPqLU9SdCODxt4PD1m0xYeni++KUy8gG+TIuS5/yfuHHTWg4QXzGGJ5vb/M6AYCs8f48bbIi0hTOZo4lGZW0LTB2C4XqWalQK8POO9IRYPh4xMO5KXc59316xuM/AZXF/QdW2sFJEZQ4j/td9gVGl3CpsnBFsH/6pQqCBNpJC/K8UTC2LQ0a4uOIF/9z68t/ldCbDfFcudUT5i9VG9jTyYCVehR1zDoC4aEXwBXUvWqjU9MZKfV2vzLcnWPyG9IE2eTMIO4uJx00xHUDZa0p+Yp+UAkdXeKXcFzog== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:93/5maTdMUSKU858qpm9CcK+KaQ+r2BOMzqblEgbD1CnA9U6NJlmRkX57sSxXltV1lm8pl9jzaCewxSlXLktblVa4Xd8tLjQc2TLgSslV5CEKxMR4Ge3xmXhbkiVL4yncWilBQgWVONvtjNdjZSLg0xONWapWwSzjnenoarwxu/jk7pr8HZl4R69BJ+UExUMhnFDrXtv3LCK2mlRhZ/kGHGLPKTGH4hKr7vtukx+mPszCIUJfSPydcwrpnbEF/RA2Y9Uxm5KU/1YLN1wwXDwagxmfuzQS8jQj4SC2Jp5mWyRq5BvOmCAyG5USm2WoRRHWNsqq3wf4XzpgXC6xVKlzu8AwvKbXTDLkdKKWcI/Gn9UeJsKY/ud6ddMtCgvo0jFeLVW037VlXQB3s1GOgOnT5w4pgMP/KsZKxrzuiwoaLftpJSlRIHi63V0TyYhNQBJJyq7um9lS/gDinZaI1uguXtpNVrZJzYQ1j4p1P1WtUv+fR4f06utLBbmcKTynd/D; 24:Cw+pYND0t4pL4vRDpRQAAg0dv7KMaVGa+0jC+yffRtk6dG/haa5YDMXsbH6JNwpLQOqbcA2O9m5yeJONmLJSdOxHDkXgi/DZc3ERF9WbPU0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:Sve+NFWiK08BJ8WemWF/RtRkzLXYSbZSH13VdNAciKwKQCo4t8NjEKbrPVEzskLEO34F4ditQOlnyfGVMhkz0ML3+bQl8hIUanWQ/+MfdIHWhX3tPx/fqC4DHuaNH8jlDfNzq4ryQmHqRBz+X/gqvfxinNGfav596YCd0VdbuXvQ/09FlK/Cho+ONxMt0tNWVi4zuKaWd19FfJa8jfvJoPDhyPX5/ThB2KwYCYChd4RUTYKq/KSEggZfLTxpvrEtLPB9U4QjdJjtVOtJd0F7i+AwApy8jc+n/9S7xBHrV19bLBExZaKNwf7Fz8l7MCDbbl2xJQwOJf6e1Ws7OSSAXQ==; 20:zf3a6/RVtsHFzc5t8YhNopIVTTpAB+7YAIIszLpWhammYa6bicnWLn9SNcWTz2R3XIRb2LfKpDbOS+nNvLEGH7A+RIxqDdUHAprmANsfjjde57tjyfKQUKTXkd5V/mChA/Hlop89ryJOK7IJoz29yX+2Qz3aM3uCZSaCq1MyeVk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:12.7719 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.122 Subject: [Qemu-devel] [PATCH v2 13/15] qcow2-cluster: make handle_dependencies() logic easier to follow 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V . Lunev" 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" Avoid complicated nested conditions; return or continue asap instead. The logic is not changed. Signed-off-by: Anton Nefedov Signed-off-by: Denis V. Lunev --- block/qcow2-cluster.c | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 95e8862..2fa549d 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -926,32 +926,31 @@ static int handle_dependencies(BlockDriverState *bs, = uint64_t guest_offset, =20 if (end <=3D old_start || start >=3D old_end) { /* No intersection */ - } else { - if (start < old_start) { - /* Stop at the start of a running allocation */ - bytes =3D old_start - start; - } else { - bytes =3D 0; - } + continue; + } =20 - /* Stop if already an l2meta exists. After yielding, it wouldn= 't - * be valid any more, so we'd have to clean up the old L2Metas - * and deal with requests depending on them before starting to - * gather new ones. Not worth the trouble. */ - if (bytes =3D=3D 0 && *m) { - /* start must be cluster aligned at this point */ - assert(start =3D=3D start_of_cluster(s, start)); - *cur_bytes =3D 0; - return 0; - } + if (start < old_start) { + /* Stop at the start of a running allocation */ + bytes =3D old_start - start; + /* ..if there is no other conflict, keep checking */ + continue; + } =20 - if (bytes =3D=3D 0) { - /* Wait for the dependency to complete. We need to recheck - * the free/allocated clusters when we continue. */ - qemu_co_queue_wait(&old_alloc->dependent_requests, &s->loc= k); - return -EAGAIN; - } + /* Stop if an l2meta already exists. After yielding, it wouldn't + * be valid any more, so we'd have to clean up the old L2Metas + * and deal with requests depending on them before starting to + * gather new ones. Not worth the trouble. */ + if (*m) { + /* start must be cluster aligned at this point */ + assert(start =3D=3D start_of_cluster(s, start)); + *cur_bytes =3D 0; + return 0; } + + /* Wait for the dependency to complete. We need to recheck + * the free/allocated clusters when we continue. */ + qemu_co_queue_wait(&old_alloc->dependent_requests, &s->lock); + return -EAGAIN; } =20 /* Make sure that existing clusters and new allocations are only used = up to --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 1496330870992151.08947230729132; Thu, 1 Jun 2017 08:27:50 -0700 (PDT) Received: from localhost ([::1]:45242 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGS0q-0002Rw-OK for importer@patchew.org; Thu, 01 Jun 2017 11:27:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51762) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRoq-0000XV-L0 for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRoj-0004nh-Tp for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:24 -0400 Received: from mail-db5eur01on0122.outbound.protection.outlook.com ([104.47.2.122]:10425 helo=EUR01-DB5-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 1dGRoj-0004n4-Gx for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:17 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=3MK2Wx8M4lHCOb6fohzDXg6jsZT0kfDtCKRr/mjCIZY=; b=V2LvUl3+/XXFC8hilTYKYgQKYWFh0ff+/ihMp4KzphNFcvS4T/ThwBIz7GOH0RWqXEBluwWdrwkn98A54Atu4N0NzGdorn7dBGrtA0sSNXDHgIv+X3UztevkstIQaQqexhl8/ETIsky/8enUhGDmK1KRrBF50h6RqQhmzc02TlY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:32 +0300 Message-ID: <1496330073-51338-15-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 4bc90806-5465-4a9c-4b68-08d4a901015c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:is4QI25/OTtulAQFeSiaWm2m8P1s1FZUqVErKgvXNHh8J3b69gXTVtyqofXHNXYZbQlWe9j4/pcuWuvFGIZWKTLIndRa4CYcGFci2wdMM1DqQ8uk1skBwnfeWAZQ5HNgj0mDgC7GXg/PrGkCf5yJdYKyk1LBGqVbTqRNN/JXFOcwKsHawj5xjUFeNcyso3UOdnaymZYx6AtYFo/B41zxf6STV62m3G/E7IhNLvvlD/F84QTUrTSVRALjy0M3urEEcCBuiSYHn9ot4nfnom45Bbuc8cjszhFSmq/35IIcVjZ3zv5jrbg3kvmUTRgX9diwFaDc2I1qjCsxiZb8jfsM6w==; 25:Qhc8Q4SvKfnc3SnNc1kFs5Haft5QYAEw2/BfeoDUf03+8NO8mKoZC5aytI+sDr1Ui8B7BuvxhauuRbUHi+KPnMCSmHrcn4K1kBkmxz8MjdGo2MGrE0Vllm6jtc+HPhLc9kXYlhPyEtSgW2SXYU7w5odsbMXwXE4EoTzvGrSJ2oTw/Mn4oH6ZHkKyZQRgHvxY9NK/SKVLi6hwg/Wx2CwoRlIByaVcS69gtK8+Xcowit7qvwwzJSx9jfvw5/Z6v5St7gfLJ+NM832iCPfYwcpW9OG1/6vNB6L3E/L9NwZDkeEI9kdSASi8+TfT44d+bvGvyz/SD3TBEqUa6MDF9t0SWugQwuqmg1tudIFeSN6Gw1NPxVZUk1zLf5ugTPkDRt82cbBfNGS/ck1h7YLjruNjTiukxb/m8xZNwUPgahYQarn7Oteu5hNwZNFeWdQuS1gyOuwQHnSnpFCr6E3vmnnpggF87LWZcnLaDd4oag8DAEM= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:fE12KJz6QSUrgg11OeXbcgRUAO9chLBq54RxHl+pK7fcJb2Mf1LL9+WNyLKVZWmk+MJcrMwELBCkW5W3HKufZ2NwUxqDpYhOBhQBmoW+x9e7sMWQUJmmCnsE+9YxY/T8RK1cbJx9SYo/VmzJ79uMy9S7KwBsHPL4MSRvpEpiFb4CWbQRSOiEZXTbwODGq66GI0VY9sr90GtQQoEXVqunh366Levn9QzLrc1EXrLcx8o=; 20:yP/RVaWUQMSAD3ch35XZld1UoQeVLlwo+PmIuIpSq7QqWOLelGmK0ib44p+Nwwc8DW2Depuu01ZzBhoIGNMNrD0e1zxsBpsuj2/prNpAQM1K8aAsEV7l0xGmX41/drfGAFeq5c8Bhb1y5XKduToxXHBiJU+2jZf7PHWUuPptJmBIgmlPFiSmEHSjatI23mQuRmNaQeviQVw7Yab0ZPatGxs1jvtsFhoOl+jKxxlKAr042HYtl1x8ae9zF95yKzlKhPXMa+XNDUuDYkRC0XFWx5VAKEdmB5TBs2XyjrPgvaQs6W9sy+YF2dEvcWKJA+JkDPFcxVnhSmZhYSpylyajOjLg3WJAS5D80aAWiNkVztBfkYPsmSZcnAL6ovjMt4KS0LSCN3XMB4Zv4j4cCRjgPxiebm8v5r8efpuk63t6eEI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:s1T1FO/jkU4psSjGnBpzDYF2KE00WLuETseCnJF/?= =?us-ascii?Q?HvrsaBOWLnWRu+PS/f+WtTrinBafJwwiUTe8FtyTb+L586xDfqFUjW/NpYYP?= =?us-ascii?Q?J/HIHvmIx4qIMTozeUABfboekwhibZ1pOCFetsqUes+pioIj6+Ce3TeY1Qwq?= =?us-ascii?Q?QpTMblYwQPlaIaBfOO6hbGLt4qVqi82XvaAqTyQQ5eKl5r2YIoRBCx6afclA?= =?us-ascii?Q?+E9Rydiip4pjKV6cxDmSNWIjnd4iIFSAFnGnIfkgrPyH7O/yP1HUnM39lNhy?= =?us-ascii?Q?nkySh3EPFyxqSpFZErMN/q9rkvv8bN+SpafwrScp5m7pm47foeZM6/9aHiZ8?= =?us-ascii?Q?KOqM6tdQNZu6v4WfgH7dDW0i3w9IOmIaGCrd3hBWhSljMPt+rBUQsNXgskx+?= =?us-ascii?Q?JwrSehBzv3vHmhJc3WO+QXrNVvESptq+kIn4B73FqUqqPitJnsf3pLaJZv6t?= =?us-ascii?Q?pEFIE9SZHpIJhTOv5Ri7rN3Ukxe8zcAlImpIPAb1XjwBMuhzrj15ly8wVvLi?= =?us-ascii?Q?8G+0CpuzCvCf4ex2xEYWXSynsaXwYxP3rhjKbeGSpwQem3EvddDLszXxqqAK?= =?us-ascii?Q?O/U7GvS6UqQr85VXLJGzUn6SI9pFtoieyFBobXxLdd7gGNpLmfhPq/QVVciy?= =?us-ascii?Q?1IVuziHpaURSbYc9LHzCoKfut2cR/FQ6G4zPnU65BS4OJ9X5Vz9l6E5seN1A?= =?us-ascii?Q?KiYOEPrr+Pe4nEZrUNAB3EVSfTw+oGstkHouZ30RXLCnhi/VfR7z87WnN1a8?= =?us-ascii?Q?mr3SO1n54u/Qq2JFTCb3hJYpD9Aj5LqyxIYPxYfH4uUgUk3ZKcJYlI+YitRM?= =?us-ascii?Q?K9M9u6e+eYIECkG/l8uwwxZXirtZS7qaFANmvsZjBagTOh8zmHdRkg+sqnv6?= =?us-ascii?Q?7aXTGDND/N1JgOxEDjExY2PaslG7TKi7eF/Grk0EC87+kpjgW/smuVAiCznv?= =?us-ascii?Q?fT+a0lwrNiSSY+HjNwDy8iYZ8IKbjskhveDUfrPeCrIO7ih7ckBtjgo+dN7/?= =?us-ascii?Q?E3zAXPYKPvd4dp1eMLWYsrpoMCRBlgQOgh0e13qjJlDopUV9ljR2khDQu/xu?= =?us-ascii?Q?nPcWBv9gzGFbE3LjBC3t/KosFbpIGQBWhjC0mZSMStroNoisshzDJRaZewQR?= =?us-ascii?Q?VqwPLNQzr4NDP6JkSEMsxZbm/DnEW6ie?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(575784001)(53416004)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:3pcBG0Sz5Xz21R+Efi0jQy7KfqF+NClgXShGYPR?= =?us-ascii?Q?5bcr6B7k/GaFoomOVVOe67WYJxY/USjsa1dWqj0bqehhO5KCXlGKlIrVafZw?= =?us-ascii?Q?FvRr3nICzF0gk8We+qA3wff9OaSx50b8y53xX719Kv03LKxr3cs5PDhofCp9?= =?us-ascii?Q?hTUej9wl0yVRv/Ma18yd1fPye3cigJ4CWWPF74rfbHOlRA/JMwyBDOED8vj1?= =?us-ascii?Q?AQhZrQ0AUCi2D80ZMBhPceHYt4mso2ig2TFBbDJj7IV/AvMxv+zgbrHNlBnM?= =?us-ascii?Q?5y9IDcloQZGcvV57DCXD0KbJCCXZxRnIXW2VXe53gd69hDwBnNvADwxGykMz?= =?us-ascii?Q?b2A2l7+NVFKpMimf6xnZfTH+HmGDvQcQyIbFMHV2YpkEhGjxuZwfcVTcut1S?= =?us-ascii?Q?TEh1cFHCJbcYHgmsPpG8a239GnmY9oVsAkXT+Xoso07mrJlA6Jo0m0Y9lFQD?= =?us-ascii?Q?RQdhWXBU21Nd3hzH7rENq8Zy8PtVOPepdo4GMyStuPTl+NQ/HI/c8mEw3rF+?= =?us-ascii?Q?dVD3mg+XAiBN0jVlMQrvKOUFOx8jZbFVsMO4BzGL729PAXVcWhvJaysBCGsy?= =?us-ascii?Q?mL/HJUqv1Phh4dhSYF/ZhQxzcxH2zBnRJtAyzJy30r4lE89sfZDvPG8rE3ru?= =?us-ascii?Q?cVxXxJE10TznTn6rpcATZgIA50E4jYxb4L991TfiUzSLiPAn6Vu121lIkFcl?= =?us-ascii?Q?eqgHhiijrHgbNtvQoWJHiTiepBcu33UxKLIDxsxr1REN03glHLi8IEZSqmsp?= =?us-ascii?Q?4e7aDjzW4MZFEPNaEOAnFwQR5jjU9lRA9w+GLI2X4WVDVNX2DKBrVI5gBuyv?= =?us-ascii?Q?VVGFZtae0U1dV8rWN4lBQJHaYtIDz7D1M1sfZs3jQXoJx5P5ex6agn9yBtqS?= =?us-ascii?Q?7C7BhsRuR1Sy8s1I+tuuEYA945WGGGGfNUBWwSx01h8Pf4C43dE53tz1DSKe?= =?us-ascii?Q?J3QqUYtEyDyZxyIHeL94ascCGWOd4uKdwWSJ6+M/3pmk2gbVnY7GBNp4dru3?= =?us-ascii?Q?mbElDbeulaHRC7yCy7NghEAVpCupKz0O4dKZHEpN1s6DhCwCLWWAbhtVEQvF?= =?us-ascii?Q?YzrDGqt3pByDSDsrBTD/r6iqBNoY4?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:dn8c4PiePVjJSg4qB4RYxv/bdR+KIzgssvya07oJFspHeiTFoCTCYnjTNc/apjXA+Wx0rCK04PhlzrM/kF3b0S4YHS6BvJ/8QKK9eC1OMP0h5WOKaDcnjTXyZOOf8m5RPL24VAF+mrLpMd3tx/G/zbvShTDDDYzMiRfDDY/KZppdBqlFT2GsBBPlY+pzjConBOW8vJhFs+LGjqHWceF2hDkh1XM/KqdKOPlikwwqkxKUOqZLSWucBzWAoJb6212LixL9kO1IoAMKLPbPON7RzaS3CxIg2k6pdeQXZb0aPL9dYCXljUlyB1Mt3+pxjGGEdHcWkeRtgc6bHyHZgZifP+03pkNSI0vaB9y+EuHzQ8x3yeGT5IReIlNLtJA25cs9TQ9pu5w6YWE6WvRdc9/XbFef0n0cQrZlLB6yN8twEGmj9WKirO1zNE8QFeSTY8JHCSc7BtpKWw6376xN2nQf/I2OXX/LcDJBihmlYjFiCnnri37JCzPnc6YB9UaR9EBw/yZkAeuP2gAmy9/I0IDBKQ== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:tIE0b/v916Moas3m0vYgYw5PuI1e56+4evKZ1ET4fQHawU6nr3YGgQlSucFBfvz+inQYhw4ENHYOFgxZqqcHrlm8GD02j67Ub7hNlWW/C0s5Q2iiL0rsnsxvuxeA5NyRQEZ38dNFEmduWKapFW3/MnbXvBFeXQKNzrFP9yIqc1GR+JdbSk9KhOE68V6w7svyNr08OKpWpep+fqPZnAdWvw6G7yaeBVR3KRkXZh2NuraMjuyh+QT+sf9ebYFwoMTeB0EMHn0xAPsBqeRgRtOVGf48C6ABO5llMdsL0WYn/DDivirnEvDwr6/uXsKjV5Na4sMITpD98oDI6lEiZNA3i+qbUYR+NKhG3wBBtTuxgxYDP9PWJd7g8jrlbUeNwONC/qyV74bFvqPaG9QHNe1G0hn+QSA/Z2Q4GDGJmCaWiZuAPRP2io4o7qnTAMf6MWosidZk8S32d2fcVhPfVKmiMyJM2MBYTfx5XoN/kNvvCWBETWLUYIwSTKTFe9pJkZVh; 24:S7u1kr7rI8xonqDR2GOojIHun4Pu1MVbRHF65HbORtqdh5JLkrjDxwqnl1bbMEGE4U6J+gs9XRz2YLcKzFIQTKqw8NCLWlErvNh1+rZieHc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:18FlsYWfvzDnbVWZkQt7PncC1nfQuQfW9BUNEeGGJyMpC9Jyu5J0dKOjzFCqtcnG7vLHwsOceiB/Pv3qfs4aQZM7Pf52XEnxJg/+DOhbXKYDaDkXR91RgiDeJfIKKQjobTCdnKsoZMC/80qhoLlZm/zTnTygEquZRd3iucfc9/GDltQtt/SEfVi91fKP9vmVnCXTSC+e34/DVCvS5eesE+ThprgOylp1ykU8/07T55sE7izKSCFuBoY8dXGlvbL6ZNocaqo/0oHadfy4I/nGMBJaM3QxaYbjxyoKtScoX43s4Sy75ozZYNZH4xE+tCs0+fBj9Ys3EUWM6zVrpjE//w==; 20:C5Z8TN2oFClai3M4M0iO8EfNvFhZA0tqZ39AxMUAfkLGiR1EEeREJGAJ31Ht1C3meWjTES/ABzmu0r7SFzB+QMgy2DYHVRJ8VLpt4LitW73i1vebTwioyRNm2hqhmFuo4UIcfqr37bZdhmP+/5cThFYoWf/xlmEr0JWE8KFTjqQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:14.0219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.122 Subject: [Qemu-devel] [PATCH v2 14/15] qcow2: allow concurrent unaligned writes to the same clusters 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com, "Denis V . Lunev" 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" If COW area of a write request to unallocated cluster is empty, concurrent write requests can be allowed with a little bit of extra synchronization; so they don't have to wait until L2 is filled. Let qcow2_cluster.c::handle_dependencies() do the most of the job: if there is an in-flight request to the same cluster, and the current request wants to write in its COW area, and its COW area is marked empty, - steal the allocated offset and write concurrently. Let the original request update L2 later when it likes. This gives an improvement for parallel misaligned writes to unallocated clusters with no backing data: HDD fio over xfs iodepth=3D4: seqwrite 4k: 18400 -> 22800 IOPS ( x1.24 ) seqwrite 68k: 1600 -> 2300 IOPS ( x1.44 ) Signed-off-by: Anton Nefedov Signed-off-by: Denis V. Lunev --- block/qcow2-cluster.c | 169 +++++++++++++++++++++++++++++++++++++++++++---= ---- block/qcow2.c | 28 ++++++++- block/qcow2.h | 12 +++- 3 files changed, 181 insertions(+), 28 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 2fa549d..03b2e6c 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -898,20 +898,32 @@ out: =20 /* * Check if there already is an AIO write request in flight which allocates - * the same cluster. In this case we need to wait until the previous - * request has completed and updated the L2 table accordingly. + * the same cluster. + * In this case, check if that request has explicitly allowed to write + * in its COW area(s). + * If yes - fill the meta to point to the same cluster. + * If no - we need to wait until the previous request has completed and + * updated the L2 table accordingly or + * has allowed writing in its COW area(s). * Returns: * 0 if there was no dependency. *cur_bytes indicates the number of * bytes from guest_offset that can be read before the next * dependency must be processed (or the request is complete). - * *m is not modified + * *m, *host_offset are not modified + * + * 1 if there is a dependency but it is possible to write concurre= ntly + * *m is filled accordingly, + * *cur_bytes may have decreased and describes + * the length of the area that can be written to, + * *host_offset contains the starting host image offset to write= to * * -EAGAIN if we had to wait for another request. The caller - * must start over, so consider *cur_bytes undefined. + * must start over, so consider *cur_bytes and *host_offset unde= fined. * *m is not modified */ static int handle_dependencies(BlockDriverState *bs, uint64_t guest_offset, - uint64_t *cur_bytes, QCowL2Meta **m) + uint64_t *host_offset, uint64_t *cur_bytes, + QCowL2Meta **m) { BDRVQcow2State *s =3D bs->opaque; QCowL2Meta *old_alloc; @@ -924,7 +936,7 @@ static int handle_dependencies(BlockDriverState *bs, ui= nt64_t guest_offset, const uint64_t old_start =3D l2meta_cow_start(old_alloc); const uint64_t old_end =3D l2meta_cow_end(old_alloc); =20 - if (end <=3D old_start || start >=3D old_end) { + if (end <=3D old_start || start >=3D old_end || old_alloc->piggyba= cked) { /* No intersection */ continue; } @@ -936,21 +948,95 @@ static int handle_dependencies(BlockDriverState *bs, = uint64_t guest_offset, continue; } =20 - /* Stop if an l2meta already exists. After yielding, it wouldn't - * be valid any more, so we'd have to clean up the old L2Metas - * and deal with requests depending on them before starting to - * gather new ones. Not worth the trouble. */ - if (*m) { + /* offsets of the cluster we're intersecting in */ + const uint64_t cluster_start =3D start_of_cluster(s, start); + const uint64_t cluster_end =3D cluster_start + s->cluster_size; + + const uint64_t old_data_start =3D old_start + + old_alloc->cow_start.nb_bytes; + const uint64_t old_data_end =3D old_alloc->offset + + old_alloc->cow_end.offset; + + const bool conflict_in_data_area =3D + end > old_data_start && start < old_data_end; + const bool conflict_in_old_cow_start =3D + /* 1). new write request area is before the old */ + start < old_data_start + && /* 2). old request did not allow writing in its cow area */ + !old_alloc->cow_start.reduced; + const bool conflict_in_old_cow_end =3D + /* 1). new write request area is after the old */ + start > old_data_start + && /* 2). old request did not allow writing in its cow area */ + !old_alloc->cow_end.reduced; + + if (conflict_in_data_area || + conflict_in_old_cow_start || conflict_in_old_cow_end) { + + /* Stop if an l2meta already exists. After yielding, it wouldn= 't + * be valid any more, so we'd have to clean up the old L2Metas + * and deal with requests depending on them before starting to + * gather new ones. Not worth the trouble. */ + if (*m) { + /* start must be cluster aligned at this point */ + assert(start =3D=3D cluster_start); + *cur_bytes =3D 0; + return 0; + } + + /* Wait for the dependency to complete. We need to recheck + * the free/allocated clusters when we continue. */ + qemu_co_queue_wait(&old_alloc->dependent_requests, &s->lock); + return -EAGAIN; + } + + /* allocations do conflict, but the competitor kindly allowed us + * to write concurrently (our data area only, not the whole cluste= r!) + * Inter alia, this means we must not touch the COW areas */ + + if (*host_offset) { /* start must be cluster aligned at this point */ - assert(start =3D=3D start_of_cluster(s, start)); - *cur_bytes =3D 0; - return 0; + assert(start =3D=3D cluster_start); + if ((old_alloc->alloc_offset + (start - old_start)) + !=3D *host_offset) { + /* can't extend contiguous allocation */ + *cur_bytes =3D 0; + return 0; + } } =20 - /* Wait for the dependency to complete. We need to recheck - * the free/allocated clusters when we continue. */ - qemu_co_queue_wait(&old_alloc->dependent_requests, &s->lock); - return -EAGAIN; + QCowL2Meta *old_m =3D *m; + *m =3D g_malloc0(sizeof(**m)); + + **m =3D (QCowL2Meta) { + .next =3D old_m, + + .alloc_offset =3D old_alloc->alloc_offset + + (cluster_start - old_start), + .offset =3D old_alloc->offset + + (cluster_start - old_start), + .nb_clusters =3D 1, + .piggybacked =3D true, + .clusters_are_trailing =3D false, + + /* reduced COW areas. see above */ + .cow_start =3D { + .offset =3D 0, + .nb_bytes =3D start - cluster_start, + .reduced =3D true, + }, + .cow_end =3D { + .offset =3D MIN(end - cluster_start, s->cluster_size), + .nb_bytes =3D end < cluster_end ? cluster_end - end : 0, + .reduced =3D true, + }, + }; + qemu_co_queue_init(&(*m)->dependent_requests); + QLIST_INSERT_HEAD(&s->cluster_allocs, *m, next_in_flight); + + *host_offset =3D old_alloc->alloc_offset + (start - old_start); + *cur_bytes =3D MIN(*cur_bytes, cluster_end - start); + return 1; } =20 /* Make sure that existing clusters and new allocations are only used = up to @@ -1264,6 +1350,7 @@ static int handle_alloc(BlockDriverState *bs, uint64_= t guest_offset, .alloc_offset =3D alloc_cluster_offset, .offset =3D start_of_cluster(s, guest_offset), .nb_clusters =3D nb_clusters, + .piggybacked =3D false, .clusters_are_trailing =3D alloc_cluster_offset >=3D old_data_end, =20 .keep_old_clusters =3D keep_old_clusters, @@ -1364,13 +1451,12 @@ again: * for contiguous clusters (the situation could have chang= ed * while we were sleeping) * - * c) TODO: Request starts in the same cluster as the in-flig= ht - * allocation ends. Shorten the COW of the in-fight alloca= tion, - * set cluster_offset to write to the same cluster and set= up - * the right synchronisation between the in-flight request= and - * the new one. + * c) Overlap with another request's writeable COW area. Use + * the stolen offset (and let the original request update = L2 + * when it pleases) + * */ - ret =3D handle_dependencies(bs, start, &cur_bytes, m); + ret =3D handle_dependencies(bs, start, &cluster_offset, &cur_bytes= , m); if (ret =3D=3D -EAGAIN) { /* Currently handle_dependencies() doesn't yield if we already= had * an allocation. If it did, we would have to clean up the L2M= eta @@ -1379,6 +1465,8 @@ again: goto again; } else if (ret < 0) { return ret; + } else if (ret) { + continue; } else if (cur_bytes =3D=3D 0) { break; } else { @@ -1968,3 +2056,36 @@ void qcow2_update_data_end(BlockDriverState *bs, uin= t64_t off) s->data_end =3D off; } } + +/* + * For each @m, wait for its dependency request to finish and check for its + * success, i.e. that L2 table is updated as expected. + */ +int qcow2_wait_l2table_update(BlockDriverState *bs, const QCowL2Meta *m) +{ + BDRVQcow2State *s =3D bs->opaque; + QCowL2Meta *old_alloc; + uint64_t alloc_offset; + unsigned int bytes; + int ret; + + for (; m !=3D NULL; m =3D m->next) { + assert(m->piggybacked); + QLIST_FOREACH(old_alloc, &s->cluster_allocs, next_in_flight) { + uint64_t a_off; + a_off =3D old_alloc->alloc_offset + (m->offset - old_alloc->of= fset); + if (!old_alloc->piggybacked && m->offset >=3D old_alloc->offse= t && + a_off =3D=3D m->alloc_offset) { + + qemu_co_queue_wait(&old_alloc->dependent_requests, &s->loc= k); + break; + } + } + ret =3D qcow2_get_cluster_offset(bs, m->offset, &bytes, &alloc_off= set); + if (ret !=3D QCOW2_CLUSTER_NORMAL || + alloc_offset !=3D m->alloc_offset) { + return -1; + } + } + return 0; +} diff --git a/block/qcow2.c b/block/qcow2.c index 92d0af6..f02c5e6 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1627,6 +1627,8 @@ fail: =20 static void handle_cow_reduce(BlockDriverState *bs, QCowL2Meta *m) { + bool trimmed =3D false; + if (bs->encrypted) { return; } @@ -1635,12 +1637,19 @@ static void handle_cow_reduce(BlockDriverState *bs,= QCowL2Meta *m) (m->offset + m->cow_start.offset) >> BDRV_SECTOR_B= ITS, m->cow_start.nb_bytes >> BDRV_SECTOR_BITS)) { m->cow_start.reduced =3D true; + trimmed =3D true; } if (!m->cow_end.reduced && m->cow_end.nb_bytes !=3D 0 && is_zero_sectors(bs, (m->offset + m->cow_end.offset) >> BDRV_SECTOR_BIT= S, m->cow_end.nb_bytes >> BDRV_SECTOR_BITS)) { m->cow_end.reduced =3D true; + trimmed =3D true; + } + /* The request is trimmed. Let's try to start dependent + ones, may be we will be lucky */ + if (trimmed) { + qemu_co_queue_restart_all(&m->dependent_requests); } } =20 @@ -1782,6 +1791,10 @@ static void handle_alloc_space(BlockDriverState *bs,= QCowL2Meta *l2meta) for (m =3D l2meta; m !=3D NULL; m =3D m->next) { uint64_t bytes =3D m->nb_clusters << s->cluster_bits; =20 + if (m->piggybacked) { + continue; + } + if (s->prealloc_size !=3D 0 && handle_prealloc(bs, m)) { handle_cow_reduce(bs, m); continue; @@ -1903,9 +1916,18 @@ static coroutine_fn int qcow2_co_pwritev(BlockDriver= State *bs, uint64_t offset, while (l2meta !=3D NULL) { QCowL2Meta *next; =20 - ret =3D qcow2_alloc_cluster_link_l2(bs, l2meta); - if (ret < 0) { - goto fail; + if (!l2meta->piggybacked) { + ret =3D qcow2_alloc_cluster_link_l2(bs, l2meta); + if (ret < 0) { + goto fail; + } + } else { + ret =3D qcow2_wait_l2table_update(bs, l2meta); + if (ret < 0) { + /* dependency request failed, return general EIO */ + ret =3D -EIO; + goto fail; + } } =20 /* Take the request off the list of running requests */ diff --git a/block/qcow2.h b/block/qcow2.h index 2fd8510..5947045 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -310,7 +310,8 @@ typedef struct Qcow2COWRegion { /** Number of bytes to copy */ int nb_bytes; =20 - /** The region is filled with zeroes and does not require COW + /** The region does not require COW + * (either filled with zeroes or busy with other request) */ bool reduced; } Qcow2COWRegion; @@ -338,6 +339,13 @@ typedef struct QCowL2Meta bool clusters_are_trailing; =20 /** + * True if the described clusters are being allocated by + * the other concurrent request; so this one must not actually update = L2 + * or COW but only write its data + */ + bool piggybacked; + + /** * Requests that overlap with this allocation and wait to be restarted * when the allocating request has completed. */ @@ -575,6 +583,8 @@ int qcow2_expand_zero_clusters(BlockDriverState *bs, BlockDriverAmendStatusCB *status_cb, void *cb_opaque); =20 +int qcow2_wait_l2table_update(BlockDriverState *bs, const QCowL2Meta *m); + /* qcow2-snapshot.c functions */ int qcow2_snapshot_create(BlockDriverState *bs, QEMUSnapshotInfo *sn_info); int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id); --=20 2.7.4 From nobody Fri Apr 19 15:01:44 2024 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zoho.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 149633091666779.39616390102572; Thu, 1 Jun 2017 08:28:36 -0700 (PDT) Received: from localhost ([::1]:45243 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGS1a-0003Qu-Su for importer@patchew.org; Thu, 01 Jun 2017 11:28:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51722) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRom-0000T5-Cn for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dGRok-0004o4-Ek for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:20 -0400 Received: from mail-db5eur01on0122.outbound.protection.outlook.com ([104.47.2.122]:10425 helo=EUR01-DB5-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 1dGRok-0004n4-5r for qemu-devel@nongnu.org; Thu, 01 Jun 2017 11:15:18 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Thu, 1 Jun 2017 15:15:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=2Ykqb5I4zUzCtBr/p19hhi9EwRzHwGeKM5ugNlACbCs=; b=BKoeOvPQy1Bn8DdLqzYebIdyp2ZleMLV4LJEu+yfWsixXCjsSaNrJ8aMI9CUhmmP6IyYi4Ljt7KNCPgsjE2AeT0KlU4mmxfCnxK4QFS4zYhbtWeOQetdYTjgpUe7R54mxeUsyx9EkCuU6OPEPYst9ZWJ1C0weEOvzbHEf7y2OZk= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Anton Nefedov To: Date: Thu, 1 Jun 2017 18:14:33 +0300 Message-ID: <1496330073-51338-16-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496330073-51338-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0005.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::15) To VI1PR0801MB1999.eurprd08.prod.outlook.com (2603:10a6:800:8a::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR0801MB1999: X-MS-Office365-Filtering-Correlation-Id: 6f467a54-532a-4e78-cd38-08d4a901021f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 3:KD4EGqALTw6cUKqpJFEgOEofQMegXefIm8rLCkeR+8kWBpQiz8JDLmwzKglqoonlwY9a+vJ9+Vvc5GjKxtj15DjmnkJtTopsfKPLeZf6IN/P9/MOMHxx0KMkIl/aa1b8Zhla6fvXpxD3u2er3idCRE9WSfJhpXNEQ8Q5vNnH44lVOiMSB5Fwj3LSbnSiln+QUy87RapVjaENn6EzCHGWzi9HYE+yqheo6wZYSv9dFytBK9E07f+hQz29Ck56GNFRYkVu1OdfMdoxEb3EeXo1ttToDlyHxOUCLrExFxBEIXehm5N9Mn/1m+ngH9F+vDyO3bIVRGvr8uBqOlQGh0vfXA==; 25:t7GJwi6VDSBHLGrDXc6pzH2PnHRYu+DoTLRyDiNbZCYUhlqdtsSHCA5MsyePAcy6KtRj5DzqizojPTix77cJntsLStqAx/9yVcvAYn9d6iDGipbro8/ysXOZ0kBcp22KK/YBHiK/rX4ZoKgIbnywQ5GxgzyaTiNxZOsqVoBZqWQf81uGyPXemhx9+TmvLVuYaXYvdi5tx6bVabaZNBSbXolTM/Df/ElTNJJYXeFchqAHnFYfll2xbuJrzBSQFBXVx20WhNZBpm9IfJMo0rdnp/BydLRnRK3c8g8ma9S/Z3rwXztXjDX/J7wNaLx3wtNkUmQj3guSM/G9n7FYcZFZQETh6TAzkOC7mMehIDcvIHFGx3l5I/hI0yrPSWm6tXh/FfMegr6r51ctj2JPf1sHPzNIaTvv8eMZr5H7AtKBtVBcW1NYMulTIdWl/3tAQ6pZgQ5Jjey3DRvzhVuYeEh3knR+Upm+nAlMlyouyFwq2XQ= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 31:1q/g3X61cHOYvHmJ7EE80BseEAQcvhZyfUxeOkaFxHYtR16oYYR1PelLvr8unFS4M+maFvdvYu1pmRC/fqPuEp+UuQ98Kku8XKg0pXXSYPTbveN4EiymEwVbI+i33kZh1oA4z9XsfJTZqjz5juTZl3Pt+f2DkkTc6UBCd04XTXSEjA1jsAA+iBSUIIDqwYqM4x2TebN1IVfOaVx0Dx5eA/LT6L52IBsUvZNyNlfTkXI=; 20:vKbNPFAROOF2MlIuQ3saePiI7xPpI3XENxPWmSypzqFwTrN5dci9RMOsE4ZAb8MRxTUOW2x8ZE1ETxvehJUBnUOX2krryZBULg0ISnFttT7ihJgLodAtkUKFi7+3NQd03RGU8KxzcS7ZiJP/McOPZVPP8g0rhdcv5hrCmEAPREq1YFxnzCJjmwE2Cgw2h20hnNhamGh1E4clBMwUvPJmcOnHEZnchYq75Nmqjs93TjWPUxFDVeENiX8g2+awbXdu/AOkDOX7mc8ygYCYdSupRTxzCPjoNYFpvjY7aw+O1MbNiHtRT/h9Wv2ws5MgHy/l593f+CNbK97U0bauAqbwyW6Kh7sKQm8H+5AdL7MBVUlj768yNIcLrrNcaGB2J3WWOzwQz6elKJkWY98gdBmhPmc6PRKSudmOzU+wxeWOECg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1999; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1999; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 4:qkHZDKoilXz/nrMdlaRIvhFHYio9xh7wh1gxlzd3?= =?us-ascii?Q?wecAqH2I1aHo58MRTQ4UggIJRlLZifvx96o1XY643gqD8xjhX3Mj+lQGkElA?= =?us-ascii?Q?rj9xV71FRzAroSj8K8k5pwQ0LLDPbTZTEW7fFFkX/e1qsnKIarFWbhZCK64a?= =?us-ascii?Q?gvnCGEZq2MdKzesY3FZYRDSHEhjEMjcQzq3Ie4mxLnVtm4pZTm/S/lQB2hqI?= =?us-ascii?Q?Au1maUWnRjY/5dz3dmNmi5ooOMdMDr+4Louoq3tnRtuFYetscgJY/qSmSQZV?= =?us-ascii?Q?L2Wldj/R1hL37nrNTNmzi2v0yoCDopL+LVtZj1zRPcSUVflt6plFYRptey17?= =?us-ascii?Q?tw9ozmxAfyWja4u/YvdTT+5RESBxiRYkMzxq5MWRbZR7HaiSKfVfjQsYdY52?= =?us-ascii?Q?wYZq2qtzMMfsK+x0lYwqJ454PQKLQBfgCQ/4yuNwXUJoGnwB8Q8a0HFAV7eD?= =?us-ascii?Q?nG/PRre58yAQnR/JtAshbIYRp7gL0ipZQ7X4GbFhxdf+BR877aagDATUP8/e?= =?us-ascii?Q?qWudPqZqeYhS9d9sYUkUD0Ol/sOFgnGwvT7qdDcPcTYvjjMW0rrzXuQKAjvS?= =?us-ascii?Q?Xg8uoKpqvW/lE6hYgt7IPV9ol0NBsKkBfcEel5DIaa7+e8Y3Im9QBy22E5+3?= =?us-ascii?Q?WqEhMYciSBAtpLESpVcZ6LEHAcmKmNd3mx+Cbu4pDotZ4mZXqWSqs3PzTC1v?= =?us-ascii?Q?l4nAIUzzeyTLCIoL9O4n9aTtZYY+3yw6XiqYvQKJbARxj3TPwifqx0wcUNDJ?= =?us-ascii?Q?3yrAEsL073Gz31uzLW2CgoYqz2KzmNBYIrt7Ky03u2esZpsgRx56cOmvdVvk?= =?us-ascii?Q?sYkxslgsvJWMUZ4ff+j7Dc9ZLKJc8GzktWUn0DYWzN6CrMbz9N7t5QwQy6bV?= =?us-ascii?Q?Ef2AG+tb3QgXFtRcJc+bLA62KoeAIoDGXju0X7YI8YUZi47qamMKAJXt3Z58?= =?us-ascii?Q?yOyZJU34kQO9ZDfBw7Qz6Lh8GONQpInzkrKYw7QtVCWAJSqc3W4IICtczNH3?= =?us-ascii?Q?8Hh9dc8j58QgpqO/md+x9y54+N8gfqL0HcVCrZwkxqpJ1y0s1d3UQATGry0Y?= =?us-ascii?Q?mm6Z9Tq2Io/1XlwI+XEJA3MC+JtzS+aAwFCCGt5LO2NZUAhTbW3bhNhtTWy9?= =?us-ascii?Q?e+Bo7ZHWE9Gs/aVjDsGwEdP4QXTrxVXr?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39400400002)(6916009)(6666003)(6486002)(7736002)(478600001)(5660300001)(305945005)(54906002)(53936002)(4326008)(6512007)(6506006)(2950100002)(110136004)(107886003)(3846002)(50226002)(8676002)(66066001)(42186005)(81166006)(38730400002)(25786009)(6116002)(76176999)(50986999)(47776003)(86362001)(5003940100001)(2906002)(2351001)(36756003)(48376002)(50466002)(33646002)(53416004)(189998001)(21314002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1999; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1999; 23:l3KqjOUaqRpIYm9qNPt7v5cZ0pMcR74rKO+N2Oz?= =?us-ascii?Q?mYhX28DXMuG8jGF1z4N+8C8zG6zT/tFAIgd94VXrZG5oryIOQL4AQO2DezRd?= =?us-ascii?Q?e6g62o5FVACkTxM/yfzVCQQW+MGb4J90vUhInv+Tu7zdr8BMy8o8Z9Fh0U69?= =?us-ascii?Q?Sy4F9odYZ7y+UDh5tvl+mOqIC9JAcGnOM2jEluLe675ZS/H7BsFXnqDTYjBB?= =?us-ascii?Q?3zyTMjoM7nbuNVc1p5aRIVpGHNvXldhHNnVmGR1LZSNdgOHhNeBRkv43T9c7?= =?us-ascii?Q?NVh1YCwv/TNnK76mpsNDY2tc4lKxe8OWqp1RGK1azU9yiTO7QzCsp2jg15k9?= =?us-ascii?Q?EaIfgkj4wIjwA+4ZMgGW/eOIJeuLNu9//B4fuYWcuXGuGsF7suPkfo+Gqxn4?= =?us-ascii?Q?7jBmpY00YeJAZddjvJ9neSi8VZRf7d//D3PTMah8rodvr6Pzdyj0aK3tBlf7?= =?us-ascii?Q?Ia6mHSUQXVmkMsnDVtpXegF6FbuUloN6lJZlR4/Pf+Z7XUIqjmfrBeYKUwfl?= =?us-ascii?Q?R+4hGjoyaOJRkO3QvkotzWbtKY4MyZCM6bosTL+ZraHCvtz709tRE+4cOTVO?= =?us-ascii?Q?EJK8kGme/W4X2ImCE6QroEevwoWGTNkEaQwiSmi5OAbe3BNxWeiKxMOd4njj?= =?us-ascii?Q?cpuhIOKS9Jx2CrPrUqsKpUctG0wbiRB4vfJuRAo/hi7gUSYhr4HgKYbLfY/A?= =?us-ascii?Q?y+jN+Q2dOj/TbGzLTGGCATX0MVe1QJarQOLXwAZowCwrDQguMMLbQCD1yMOs?= =?us-ascii?Q?Ix9gt9zzf5VEespgCEoTiseSISxTvONqs/j66f1CN1VSeP+BdfEGJGV20+il?= =?us-ascii?Q?LetWvbzY1AhZNrZphVzX0ikJSqKWTKBnLn0FHYWpdy/UFwCE4+VGZwEmym6N?= =?us-ascii?Q?JR+gWXtjdQEFOE97RzRWb7QEvw/rQPKFhWXa33QWqRHRzBEyWiR/FKflW0Mn?= =?us-ascii?Q?/QMkwyE1VwczyLqjKoDXsH5DhScUF5wUT9uzJfakLY3k8VKV/2XdvggRvc7r?= =?us-ascii?Q?YIE+K+M2y+CmFiHBinT2RC2WEbeQmcILECSzBE3tZGsEsB4G1tS2J/Q9efWx?= =?us-ascii?Q?EArvDzItZ0v4unDUehDWy5Qtwaz0m?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 6:Ez/cHLVEFezBSTgBMVnSR3p0rAq6H9Xp4k/YlDMApz+/el99IpfnMBfoPi+1gofreeglDR41ySdB/bPs8CjUl1R0TVjIdb3wh/UWZEu5baJ+RHXop/smcgv8loYBiPbEObFqB/0JIFchDzspzUwv5EhGkosdxupj84S4Gi0YlqHlK1RhJfNDcqgveGI/YF9ZhHS+mFoD9S2FMFJcIngAjtBrb8gI5hSXCFccii+4qwEa4lVkhb4aS4Q3FAVs2qlo4TEj1tNvFBp1IAVerU+C5jjhLzCWgToUeQ/yBZ/2kKf9R5sN1BivA4u0bLNDovwxz8/QOn3vfYIo4ChTijdUrYNEcGyi/zy+0RTYBitDT4Y+wQXQFltw8vqX36Z+q3oFXBRX1XvFBVdCaGMWkJkqb07UCxrGEX/BuaUnT8NzhBRYU5JU+TPUe+FAkcNMQu02AtI9W8rcPw15axE7DEflViqDe+ivnCCIvVWaeJz88XSr4JeRvyxSj+eaxdONNFaiezJ8LE1LgzewK9SWmhcmMw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 5:GlAol2b2hwLTJNxKpMcZhttjxS/zrcunPplXmnZaoAZdn35GT+zDSriVQ+4BNBUjqTVAHK4cHEml1UxRpcb7uJDvDK9Vc8nGHSAWiJpkiT7ajrpK6dlgQzya6NFUMF6hzRDrARuL7LipC3klROaSIX3lN3kegOqh8OVrIxRRkxJGsH8v8JUXm38Xtn2URGh+68lCHGvQ1xEpQWi76KogWAoPf1vvHfpvG0TsecBTi1AkrYD5gA4vebFBkh1ZMRatAwbeqhDqeSBVbACV9aWOD8kGQfOIWyVpg+/NbxF5mQA+DYIDt/S6ir6W1qD920/8RzEjJs7aFPthCatuuQE/WUIYAvWcQy09IH6/Fd+NVp/2QhlDL8rwD7HZfz8xABi4BH+pGXLv/XVRbDjxsKmyDC9VR17mL1Tm1g2iYvJbhWGZt67fnOlHNFlY3xzABazzREVIE3PvSUl/bSVL1dRwZuwOzqq4tgcO50tTePGtfsv2f21mj0bosuHkBw7H8H1q; 24:tu4VHVvwB8fRRg1Zfc4ey+dfA/cCaeH/bMjhXMsmUEfA5EXg9LFq34IFauU3glk8qWNoF5YBcQAcfo7LEch+93jI7r1Yc5QAmtTTJdr3EAk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1999; 7:sZa97Xl0syy889ZJ/hzw1J5GAbweXFq+hlaZ6XiQMQpvUvGDyHMk12Gb8C6g/CPQUMZa0/3+DOkDj8ub70hECPNu9wQn/ZpwoovYVbzcPFmhCi/cgFnZ1zNAUQu84Vy8KhnUENvrEdRuykquiFpBvX18+wimxsw1cUoQZh9Mkf5B37pL2ljO7Yas++psix/MM87ioPMyMH4JHzcivF3+sSg9y8sPwH82x/EKBtguiRTj03+pAFci8VA3d9K+a9Hxo63Zl2vH8SZZAwszwGU5k1fbqm3TEO590xErUmcuCApJaNy5pY0rf50TnEZ3t+U7n0LcdCttYXznOPfAkPtjTg==; 20:KnYOC2zS8Up9SaMhg/h5I+LRGuKV+6GhAOO3BBAf90dXFUO5srIV/6vIqUyEjVobzRlROE2ge8W/wDpYGpn+Bg+5Lq7ilSZcPmwDAT20QJIAqlZ0VT8VdSLp4GiZDcAife5GDdD644XU4ozKazq43QB1ZkYmHBhEMZ8D4NXsijA= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 15:15:15.2251 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1999 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.122 Subject: [Qemu-devel] [PATCH v2 15/15] iotest 046: test simultaneous cluster write error case 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: kwolf@redhat.com, Anton Nefedov , den@virtuozzo.com, mreitz@redhat.com 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" Signed-off-by: Anton Nefedov --- tests/qemu-iotests/046 | 38 +++++++++++++++++++++++++++++++++++++- tests/qemu-iotests/046.out | 23 +++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/tests/qemu-iotests/046 b/tests/qemu-iotests/046 index f2ebecf..c210b55 100755 --- a/tests/qemu-iotests/046 +++ b/tests/qemu-iotests/046 @@ -29,7 +29,8 @@ status=3D1 # failure is the default! =20 _cleanup() { - _cleanup_test_img + _cleanup_test_img + rm "$TEST_DIR/blkdebug.conf" } trap "_cleanup; exit \$status" 0 1 2 3 15 =20 @@ -188,6 +189,37 @@ overlay_io | $QEMU_IO blkdebug::"$TEST_IMG" | _filter_= qemu_io |\ sed -e 's/bytes at offset [0-9]*/bytes at offset XXX/g' =20 echo +echo "=3D=3D Concurrency error case =3D=3D" + +# 1. 1st request allocated the cluster, stop before it writes and updates = L2 +# 2. 2nd request starts at the same cluster must complete write and start +# waiting for the 1st to update L2 +# 3. Resume the 1st request to make it fail (injected error) +# 4. 2nd request must wake and fail as well +# 1 cluster will end up leaked +cat > "$TEST_DIR/blkdebug.conf" <