From patchwork Thu Jun 1 15:14:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 769785 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wdrWz1zt7z9sDB for ; Fri, 2 Jun 2017 01:15:59 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="ObXlxjRp"; dkim-atps=neutral Received: from localhost ([::1]:45184 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dGRpM-0000PY-OM for incoming@patchwork.ozlabs.org; Thu, 01 Jun 2017 11:15:56 -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 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; 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 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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 = bs->opaque; + const uint64_t old_data_end = 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 = alloc_cluster_offset, .offset = start_of_cluster(s, guest_offset), .nb_clusters = nb_clusters, + .clusters_are_trailing = alloc_cluster_offset >= old_data_end, .keep_old_clusters = keep_old_clusters, 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: if (end <= 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; } meta = 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; + /** True if the area is allocated after the end of data area + * (i.e. >= 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.