From patchwork Fri Jul 7 14:30:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Butsykin X-Patchwork-Id: 785531 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 3x3xsL0ppQz9t2R for ; Sat, 8 Jul 2017 00:32:38 +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="D/QnYalp"; dkim-atps=neutral Received: from localhost ([::1]:56842 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dTUJ8-0001Yx-3R for incoming@patchwork.ozlabs.org; Fri, 07 Jul 2017 10:32:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dTUHq-00017m-VI for qemu-devel@nongnu.org; Fri, 07 Jul 2017 10:31:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dTUHq-0007hg-2H for qemu-devel@nongnu.org; Fri, 07 Jul 2017 10:31:14 -0400 Received: from mail-db5eur01on0112.outbound.protection.outlook.com ([104.47.2.112]:58912 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 1dTUHm-0007fa-W7; Fri, 07 Jul 2017 10:31: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=OT0eCSvye2J8NR7SK4ZrE0t5mefNxLssWFONXssi29M=; b=D/QnYalpw7TB+ml6yUm9B3Nr2pPaGyZN8U1yu0cW7MTvSNCIGbTWnoSx3P9gKJOojr/F5IPtWbcixd+6RztZuVdxAuhaJF+OlCH9X/WO59u0tlLETK0B/slAbsYxuVAS0Y779k0Nvs25VwFg8fpcjGzKjH+VolOVARWY0PXPQ3w= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from pavelb-Z68P-DS3.sw.ru (195.214.232.6) by AM5PR0802MB2546.eurprd08.prod.outlook.com (2603:10a6:203:a0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.13; Fri, 7 Jul 2017 14:31:03 +0000 From: Pavel Butsykin To: qemu-block@nongnu.org, qemu-devel@nongnu.org Date: Fri, 7 Jul 2017 17:30:26 +0300 Message-Id: <20170707143028.692-3-pbutsykin@virtuozzo.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170707143028.692-1-pbutsykin@virtuozzo.com> References: <20170707143028.692-1-pbutsykin@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: KL1P15301CA0023.APCP153.PROD.OUTLOOK.COM (2603:1096:802:2::33) To AM5PR0802MB2546.eurprd08.prod.outlook.com (2603:10a6:203:a0::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eda6a49c-de53-414d-e8ce-08d4c544cef4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM5PR0802MB2546; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 3:AWqC/uNlrw16f4MwvArJNT+73gNTSM1FZLkulmkNdpznBY8W/p/ENUa5m9AsuiFD/7ziaaOD7acEEI6bc8IkKyspTd8SSfHIZ6swV+OplkmzKMShNezF4QhrL5Mia9HB48r9bwstlKUje/21t7OPOPMT2HeP25qYnIe+GGAD/kag5yY22l67I9YQQAoZHh9kpBtXcx+tsVf7TPc5/hDUla8AvznVO9MsIFp7tguPQf4TzUv5Qm3H4R4+GuEwJGmBbmNyCYicED9K6kdouC04BdOJQDQ1H8IsOiY5cb7xhkpAWZddtjtUd1NVCT5O/w4n00lfdtm9PSkkmck7bpdfYCzZG9FGUOEcigZr7OuzySLK88prl+yKqc6HXy2DLn8/IwIPBx0rKnQg+4vorh+jHKCae2h8xuS8CgC+dyFP2SDybvV2uGWMaXpSRWWrdkbk0q74ZbGIR1Ue4mL4Ij9cWkdF4rAq+rGA6i+mt20NY9kfJ+vx6Qmb8sBTiWWm1dfJzJU+PUvX0wUESztlhUJOMIt+g/Zahjp9VQDzitsLwyM8Fj0GOHtZDJ+N7qnkmxoDhkTDwNZJKXKKfI0fPI9DpJk0xgn706l22iWnvqTUayHERdE9Mf9hjMQdfR6qB4E6tjZ8CbTCT3dXOTRpywz6I6borEMaadWTxiTASF8+AsVOnH0EOShxpuTfaMxoxlvXPtzOxfPrD6buX9gUEP06x+ChbW6H7REWnryUrbV0zXqbNA4DaM/03D/xRBGZfkBI X-MS-TrafficTypeDiagnostic: AM5PR0802MB2546: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 25:rX/jXN55BlBS01ERhH13mrgUvzOYhWwn7QyDfr+qmQ66DolHfaRrrpXFA47nR+6JacRrM0cMzXwR1/UdUX/5PH2ZyvmIf795mceeVBOiUGH6mFsqC+u/mwj8yGWNAqFyipZLu/Vcbdtzfmk87uNrcXWbSot/3aL+2eBH+bbH1uza3ziAQjLemOpTa6DXLFZwyUSizp4880wijYGAlAktQ5o6onAUuKAUuxzG/Z0s7toS6dPyNM1SIC2HZzb2p78Yu6q7eMH87t22MD8zT6dCwHuk+JWHSfskZDKJwCSwLC0/s+X/cjYK0znOgEBHblFQFvtnAOfYmqUMyl+xhbPN65ZQcoSvWgG0J4XLIMuZvcu8U8RRY5pl4IKnWDL2aAD+C7cWvZyKPKc+aUyI2sFKugMORvqnXbU0EKbkg5pGLu/yAFtraXo76XvmcEAu2BpNQvymtxkwrfyiNo3y7BBW1gRvq592kUnrW8BC41xPsjvkjOyK34wHpY2MZpYlfGz19/2p8bvk4HBA0ex0pUkX1swLLYFIP6vZGAYQ7zmO6HNFtz6seHPgjq7X6qruYSVMnv3E98/gWuhSObBCxnqRJGQsGKDp7R7Zb+7UqmAoedjBLrcxLXDwWBFoXMFEsT3cLLdalMepNXqn/7/ZOKPRi7hxPxn7Mvopu4aZgbtKFc6eO7a9RN/JxlpzL8IF4NEdlb1hwickJkhaHc/mek15PGF41EakFixskQ67rBYWD/kVMkXKTgxyFCL+sGrKEBsCNut6LXzc3Eof65u9GaM0XFU6NscMqYepgee9S3ayLh8u2Lvtng8omdFG6/et6Rcwe5g1s0G4mwiISodryt3W/NkoyvMxZvNI3viTbqLknneDVdOgtJNzdnuioXd/3jaRkZV2und7kkicmnTxb6JMYX9Jbael5p4Cia9+eyL2AtE= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 31:bEQg4xpx61GTApACVHHHuo5yMWvshnu2QnIEcIW8u1TxwaKJ4oTkHHGn7MtiOWtdD821ru0HcbodU0QOwEpAJArB0mV0I5611b3hlOWo/hdj2Ijk8aSCTNsCK86yyGanUN2sM2phB0wo3YB4g86OUCgLbC6vN9sD72IOhCSBRFYu+C0nhm06mgJSzbdHI1nbCEdhRb/DBd1FZuwYWb0Xm3Guddn7Y4brtu988nNnYgQgJsC7tzehSBXAVeexsqhMkQFw45SsAFLN6egLKbmmFXnpmC2NrrwyNBVnT95WFYlO1bqpq87NtpUangYQORFz1790gF15QctpRY0lymXyEAUH6pjPZiHv57IP16JuLHB57i6M3d1gcIZZumkFaTf/0B7vH0lHznhPyHYWsK0cIJ9My8/lmPo7EN27jSqtoUIuMEYP16a3c1NG01XgY7fIzui4Jm2YtykI4gn3KSVDEGTWJKCSZle2lMczwpaQ0mCE5VnmiwyLqZ/D+G1M8ibVXPYse+18ciwg+7DXYxnS0iJP7YQ997h9v5/9ZEiGxUwQxr2yWUXQ0GrrW+2ahrYP2niwhVGEWOkJa4eKzJX56rDVpjEUGChXeqMGOmfeK6ad+l9ZU0tYqqNfBskG1woJmkCX4Ynp2JfdUBIQiCQnUCQ4YKN32s7NRmzm+HzxgTU= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 20:jCEWU7FGy3G+I8J9w33WLEDIUWJXkXVW7BaCMLwtzjd4yvjSaJv0uou4cGRezMOkdHgqp2ZnestziMJnvz7PfiULRA5l8b8IKZC0oqrhud/Rp/QyDO/hE1LmmlgRvdMSaxlc2qvcsiiyT7+YRCNBQUKxu8fFamSHKz1Z6IOWx5LxjUZRMtUr+Ae6rGsf8PzwALM74p04VOkhtoXOzKQS1PLa3FuBXYvDvfNOHr0TRMLjSTLW6EsKYgocTI+AjY1ejHalTz6/rAb6pPnxR91g+2Gyw3W7V9Svu9sv1SE2YlSrc2s8MRTHIFmAjNOrr39VoIsG6OEk9MWUPiNknbiNx19IO5cSr3NC7t5WClwIM+inREWI/aDIzRIS7Q+a1fah+sVtEvcSTV04JxzV/19S3JQ/TZ/RtQPBsDztq6E9Knw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(167848164394848); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(2017060910064)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123564025)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM5PR0802MB2546; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM5PR0802MB2546; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2546; 4:09rIsbApX/WvZrNlDdoXxKbowiWxcZY7DredxwRR?= =?us-ascii?Q?Drg1IhNL5lEYERGJ8wnUTQEkifUe7GQfdVRgOurTGQTbdckkToKmVWjkJaj5?= =?us-ascii?Q?lNlDSRwrNEmWL53Wk/DsZmzpiRpqJxRs4H9LdAZw0b+k49tMW1IC2UPcS7wH?= =?us-ascii?Q?DXQvRvMtvSagPqKEJoeEBsEjJxrSLZeWcWit1XdIfCnxbQLu9ofV/S5oJL36?= =?us-ascii?Q?SrI2MKz/SY832Et+UUjHrsY0yr28XnLuesc/Bi+0RoCQWv/BmBgKCJxpVDg0?= =?us-ascii?Q?tNoxI7VIWjJjLMpgeNplQa3odANIFuCplu/Mn5rAXn2cc0WR4yV+rGJEsbN0?= =?us-ascii?Q?eN0Z/Ch9oM+sEysXno/PEYRQP2K+dWVFohhT/Mxgm1SFyfKzIdbHHuobk4eC?= =?us-ascii?Q?82MY5Cz8rgG929SZFnNOpYojBcxzfEK6QuRW+fUf6F6SIle82BjqOehhMjJ0?= =?us-ascii?Q?/g8R81YdatcMyM8k9MXcp4/uqwwmNqjtJ1tG4KFGXvygwygKqIyRfskWoQEZ?= =?us-ascii?Q?5buxvUauDgmttYP6S9VXH88hf4oN38uXXQdhr6Z0UU4s1I3VOT533lxTghEm?= =?us-ascii?Q?A6NlKZMrzP0t+uYD7dSBbO10BQdSKgUqXT4YZy9pemS8oNKlRjg2PIXsy1h7?= =?us-ascii?Q?7uhZ6y0k/2kURO+Ms+J7AERJEnMiKjwfU+WMlz45L6nU9OV6c9aXo/Q2f61r?= =?us-ascii?Q?wjBqjBvyGTKv1mLOoSQw6f8PGP01DX54VRckL+tZ2lozGeaq+FQxazBgvHdp?= =?us-ascii?Q?iTEFmgKWocYDSHZ8lz0jWvd3J5QrUVtSmI7HPlm5Bwc5Bc2WPadvGjwtVvwp?= =?us-ascii?Q?/pPjXMIjC9drXY7gimP3L42L6iVJ0ke/ynUSMA8jr835MrI6swrx3NEj35NZ?= =?us-ascii?Q?bR0RiYT56E339lSs8HQlFB9Mv57A/C12MS13mZ0cCrbWOJl3IGKwr1FArM4o?= =?us-ascii?Q?SpxF5rv4v9xiVwFKo6DmHi45nrpfv2+Ms0V0FhA5lDvBRhJW3EgaokhN3fQ+?= =?us-ascii?Q?qmq//WYJeQMfrMmIXqJ4ouydQB5l+vbUA7wuktvWjd2BurjFsPlCoAAN0qN2?= =?us-ascii?Q?9ursR/D0Wfnr47aSWPTqbpBgM3YLzWY8GuBCJOJSVwflEiLNf3kQzX6II5cE?= =?us-ascii?Q?dVC78yN2TZSrJMfL/o+DnXS728h7I3eWys0x8cwij3KM7Qk0PRCt6EZ+0YmJ?= =?us-ascii?Q?fFBp8YK8YuLwwsUR/+rBFYRsoWiE98BO1iYsL1NeqfrDhFdZZqO06iAcZT5A?= =?us-ascii?Q?+ca7pD1z1GR1jeHTNPy6twblQ7as0RgvfdpQ2sop?= X-Forefront-PRVS: 0361212EA8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39410400002)(39840400002)(39450400003)(39400400002)(81166006)(36756003)(53416004)(8676002)(42186005)(50226002)(5003940100001)(189998001)(33646002)(6666003)(2950100002)(5660300001)(1076002)(47776003)(76176999)(50986999)(6512007)(25786009)(48376002)(50466002)(305945005)(3846002)(7736002)(6486002)(53936002)(86362001)(66066001)(6506006)(6116002)(38730400002)(478600001)(107886003)(110136004)(4326008)(2906002)(15760500002); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0802MB2546; H:pavelb-Z68P-DS3.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2546; 23:ijzeIGy0G37FRRDJcticWQbKUCbJ2Og3VY/hQAt?= =?us-ascii?Q?A4LPthPgGwQiza4yyfgfnWy8Zdy5qB9f44Y1aJT7acsm79cEPAmr2Z2rhu2u?= =?us-ascii?Q?iddABsWTBd3/Nw1X9wUK7b7R7yZzBJgjzPBxNtRhW62Yds1M6nLz+ltq6KPP?= =?us-ascii?Q?vYYyVaeSaRBPV2yuDfeAIRiXtRnmfFj9hmFjALDXy02a9sqfdgDJW3HtOkY1?= =?us-ascii?Q?gp+/EtMUmnO01wwTfkr75a1ymDL872qGy5FuYvgzjnoTy//gH2QojrlhXOp3?= =?us-ascii?Q?K+durVzKJuXmK+rrxxgiSq8Xf9Jz/jjEn01oZFIwtVq6STdtzq0il0SDRrTn?= =?us-ascii?Q?YsIqNPIuTq+69QfRZsGSX2wL/HHUdB/QynUJEcBH3X2zx8UIbuNBA5xXLheh?= =?us-ascii?Q?fFyse/yubZmYn52kkGl+Pb9Wln9z1vAzCBjS9g6k4RU6QochgoFtb57OObj5?= =?us-ascii?Q?vyCXruhTyqDv1cmaYt2esnzYd1lcLTmYXf0vWF/+X4ujHoaCjTwRbGMG8/AL?= =?us-ascii?Q?A97wAmRBtsVdjPgOwRNAK4RaiCKH24rrwcbeKWmMAHQPQvv7Ryi7m9tdJEtv?= =?us-ascii?Q?s2EZAUESlW4jzie33p1sUtu0PxMOk8CQB8hBnAREptoYKNfAWyGM4hVy9vZk?= =?us-ascii?Q?wBAZ4TuSpIJ7w3g68bYY4v2cnb5A+hgBq6TtwWmwIVn9YI6sAimYYS7O+OGE?= =?us-ascii?Q?EICyiDa2/i8yXtHTQ55+kcMmdhTzLMMgBimScGUtFgmKtuyZEw6l3H5kiZyt?= =?us-ascii?Q?rfcBa/Oolb0OqXs++3Tt/sko5aMIkU7yMbsZ4EX9v3VLpCrLO7U9PdqeGB4t?= =?us-ascii?Q?MAJ3GiQamwzvo9ZA00PRnpb1OPUhL9kqRc5A/jPC1Is2tmHtYbRiB6hseM00?= =?us-ascii?Q?bCkDv8cdIVg3H16cnHP4BLHUbvOc5UvsVji5fimNtiu6MSVJCQ0tXDKLjzdl?= =?us-ascii?Q?0i8NHd1h30V534vFQFcOl57ncxqC2yPz5e7owItAuw2FMkJ66BqrikCsAePu?= =?us-ascii?Q?ZvwjINnV0i9A7NR0K1HP1HFOpiZUmMXE7y0YtHVRosXh6NJzSjHrv2rVpYtE?= =?us-ascii?Q?suSePdNVszc3YryxBU7ZnEpw5VxGm?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2546; 6:Qep2SLYXWUcIKAm/BzCyj8tCLUsmk/SrvD7NLaZw?= =?us-ascii?Q?1Z+/KRsFh4c4J9RVFUfs63xblRXOSqhBWGOJvwOIIXz/cP2G6GGvs5xHXaIS?= =?us-ascii?Q?LUrRVXInJ0AUQu1J/JwiDFX/fR4tePKIrUmPszAg7yt0xGcd3HX0Ep6FwQ/h?= =?us-ascii?Q?PgNjDZ5eezAOk5CMSt4Lo6cQPDKqddIQWnwuNzB87b9P+unood/LkBIFsXxf?= =?us-ascii?Q?3KiMJR6QVhxw2C3hqkLV2VmxJwm5WWCvbBAxDn/UQZgb2tVkUAzvMN+b2NzA?= =?us-ascii?Q?VZSrX7yUKYQ7sWZa7IYrRlrJUCwGdSLsSDS1rnN62gs4HU0DbeXOvzhnnx98?= =?us-ascii?Q?LA+g12+Sb0VppUHWUFMtYtc7Wm555ddPxgR5o1+MJNjmRCF74PUMlAUXD4R3?= =?us-ascii?Q?liWj9HFuy9ZoYTmUZYAWuLUM7j+kCcbqKf9QXia2O6hQF2r2zmyACC5pLl9D?= =?us-ascii?Q?t9xRyyai2L/KJfdE47Cr16fPs6luaDBJcovt4Zn/F29GM2E8wdliYlQCIGR1?= =?us-ascii?Q?scXpqIZmfHqTJ9kaOaRv7UwOVyeZ7HhJYQEwkZOnIY6UqapT+u9aLMI0YlTt?= =?us-ascii?Q?KSIrjC9XQYwJg23aKYqQUcK8cRgjgvNEOxEuVEkqaJCkqvT4d8TrGUV+SRfP?= =?us-ascii?Q?+pboGwzTLp8zocBLW1ctg+OgQRal+yorZ60DfWABDqQYK8yfI7XqbL/5FqTK?= =?us-ascii?Q?w+amYsmqKHm73GJwGR2WpwHvnPu988jzgwLQYW1N76WHbza86D1Ecy+mbSx9?= =?us-ascii?Q?lL34/xDHbimsEQoEHafb/o7rfehWRyu+UVvGPOiSF7UntFO5/DbcjSSoAdf+?= =?us-ascii?Q?J+tHbHGNXSvNI4eJXDzJGFUT7wXo6sKD/E44zjqiKdQtkKfWMu5HgNmInWEX?= =?us-ascii?Q?1J+8PoBgnFxuIFk76okAkafI08suXK/hmbeJ9GmTSZ1Ci2VBy2PcLVfkGYaM?= =?us-ascii?Q?T2eHxVNK8e44NgSoaw8Z8ekFS0anYZ/uSWLBm8upj6BPL7tfcixCx+hF2mhp?= =?us-ascii?Q?3gE=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 5:Zky0fIdOBgQMMP7z4WElrQUrGBAZlv1VidFW4m/xftPKZaY/N8YDhTYEE+u5Ma0WWO4SwzudW7CJHSoYOgzsYhKEzcVC223BXwF3u9uQadeiLwFKY3Eso3ZbNBvW0muLo3zG4btiDsy7KMoMzv2WEeuMyxD/LfbKft4xZYBNGckzCyhg6wM6HSgzMuLSGBcr4sKO0IbbcoCMLw5UQiMyNleqsN76gXoZAQTjUSY9BI9yox2xywn21XPvC3eNy4kJkgjJ0JKkYdg/RSPD2fCKR4PyqDND2xqTxlggbmpp/SvZEHyVANlcbyH/zZNoQMMG94MQwqUjhyW1IM7hI6tU1GLbkGw23oT+Mv3NK0HZeuaelBPWC6iAWMs7++NaXrgosXoryYZwxPBJ+OVbGNHcE8k3eLH7KnkHBN+fagjmZLcIpEmZuhNyuWZSlk9m9tedS57bwtK/bxOeVY27i1p90/JYOjCuKT3E4jtrbjX3Y3qmTGjPQ2TtJm1DFk0h8+30; 24:O2rSPuFOhhGgTVG7+3pTgBEaWXzngSZvgCmOcTaE3k2+slJz33ACjZdUdavjRdMJT5amNeSYNVG01/mtzQE1yDJ1gDIfTy6DxfZF26MyCrI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 7:70QhLtUjRyIepGZEQ0KfM9JM5LBJPdFbn5HL5QOvvAOVRqLNrwCNMzXv85AMyYUtKIFOQaYq6+QbwjNis39zTDggWHcLxW1BiHWniGJLGGdJ+MgvfX1UZeoK7ijZe0CC1aFcLPjJ5UU13Z56dOY231i1LGrT8+j0399+63gY7FRTOnyWVtHjnhNYBmstC9P6JOCODZZejpPPxlmbKho0QEFQKN1ca6PTNW6aAvbxeAqjn17Vh50FxDMg/P+yBqyYksbzHGf6ma96cewDQg8TmSy19hF+CdeFvfdb7K/gIFagFgRbY0p9VIKGID036TywnkSevFBFx3HgEsapDJd1sUMgbfxBwkgWvSXOdAY54oIez4TxOnb8fKBWPWG+Wglkgu71nX0v4qsLdosK5l48DdKuXdEJYt2ejc4Rc2vws8oAdxxIaVdxHUbCJ1Zm1ofOA7huqA4hIwpdiqtwOjOXTIdnGFvgSA8Sp2kfpIFY3fHJxY5cE5EBck2kOdSYXbos3RZhEUZrpH0kqzecHu5E10q2k6HC8cZCO3yfOeT4yO1lgtkHuF0wShcI0jksQMf7LdqIjUjxUS1ZjC5QAbvlKOkZE7DZ4BRKtVGbtQhDdBNUUt7cAQuk4evT64l7JmUNW391mwP+WHRZqp5/3NBTPp7nyfzWEATc+rDxphjVVsg+I0wNlsaPsm3j/buqH/sWgihr1115nxRnzBXuuQ97THx6KK9uF2iUnXW+CGOAYgzFaUViZJKTTvR3PRYP7j2Qsr+WIsEPasBo6o116Dsb01LIGDeX1HyJnnrYvkc4p4E= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2546; 20:ADi3HIQ2F6C7T8WRDzE6uR70Nz5sHtm7koss6DkGUKu1c6JYbrh9FOdn0PxhT9ANKzQt+M083pei6yN/BXNuF3LqbR8mB1ajRCr/incn+JRhB3mfDAUXD7yN8KTWcuRiAlZDFgdOnz2Qrw6EBg8JweZt9PjtyU9R2mvgvF4ZUFU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2017 14:31:03.8249 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2546 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.112 Subject: [Qemu-devel] [PATCH v3 2/4] qcow2: add qcow2_cache_discard 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, pbutsykin@virtuozzo.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Whenever l2/refcount table clusters are discarded from the file we can automatically drop unnecessary content of the cache tables. This reduces the chance of eviction useful cache data and eliminates inconsistent data in the cache with the data in the file. Signed-off-by: Pavel Butsykin Reviewed-by: Max Reitz --- block/qcow2-cache.c | 26 ++++++++++++++++++++++++++ block/qcow2-refcount.c | 14 ++++++++++++++ block/qcow2.h | 3 +++ 3 files changed, 43 insertions(+) diff --git a/block/qcow2-cache.c b/block/qcow2-cache.c index 1d25147392..75746a7f43 100644 --- a/block/qcow2-cache.c +++ b/block/qcow2-cache.c @@ -411,3 +411,29 @@ void qcow2_cache_entry_mark_dirty(BlockDriverState *bs, Qcow2Cache *c, assert(c->entries[i].offset != 0); c->entries[i].dirty = true; } + +void *qcow2_cache_is_table_offset(BlockDriverState *bs, Qcow2Cache *c, + uint64_t offset) +{ + int i; + + for (i = 0; i < c->size; i++) { + if (c->entries[i].offset == offset) { + return qcow2_cache_get_table_addr(bs, c, i); + } + } + return NULL; +} + +void qcow2_cache_discard(BlockDriverState *bs, Qcow2Cache *c, void *table) +{ + int i = qcow2_cache_get_table_idx(bs, c, table); + + assert(c->entries[i].ref == 0); + + c->entries[i].offset = 0; + c->entries[i].lru_counter = 0; + c->entries[i].dirty = false; + + qcow2_cache_table_release(bs, c, i, 1); +} diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 7c06061aae..0141c9cbe7 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -767,6 +767,20 @@ static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs, s->set_refcount(refcount_block, block_index, refcount); if (refcount == 0 && s->discard_passthrough[type]) { + void *table; + + table = qcow2_cache_is_table_offset(bs, s->refcount_block_cache, + offset); + if (table != NULL) { + qcow2_cache_put(bs, s->refcount_block_cache, &refcount_block); + qcow2_cache_discard(bs, s->refcount_block_cache, table); + } + + table = qcow2_cache_is_table_offset(bs, s->l2_table_cache, offset); + if (table != NULL) { + qcow2_cache_discard(bs, s->l2_table_cache, table); + } + update_refcount_discard(bs, cluster_offset, s->cluster_size); } } diff --git a/block/qcow2.h b/block/qcow2.h index 87b15eb4aa..bf6691dbd0 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -604,5 +604,8 @@ int qcow2_cache_get(BlockDriverState *bs, Qcow2Cache *c, uint64_t offset, int qcow2_cache_get_empty(BlockDriverState *bs, Qcow2Cache *c, uint64_t offset, void **table); void qcow2_cache_put(BlockDriverState *bs, Qcow2Cache *c, void **table); +void *qcow2_cache_is_table_offset(BlockDriverState *bs, Qcow2Cache *c, + uint64_t offset); +void qcow2_cache_discard(BlockDriverState *bs, Qcow2Cache *c, void *table); #endif