From patchwork Fri Jul 14 15:37:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Butsykin X-Patchwork-Id: 9841351 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id DBE3960381 for ; Fri, 14 Jul 2017 15:40:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CAE5B2874B for ; Fri, 14 Jul 2017 15:40:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BF75C287A0; Fri, 14 Jul 2017 15:40:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id EC23E2879E for ; Fri, 14 Jul 2017 15:40:14 +0000 (UTC) Received: from localhost ([::1]:38588 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dW2hQ-0004wV-Lh for patchwork-qemu-devel@patchwork.kernel.org; Fri, 14 Jul 2017 11:40:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40386) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dW2fv-0004ru-IV for qemu-devel@nongnu.org; Fri, 14 Jul 2017 11:38:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dW2fu-0004w0-GN for qemu-devel@nongnu.org; Fri, 14 Jul 2017 11:38:39 -0400 Received: from mail-eopbgr20115.outbound.protection.outlook.com ([40.107.2.115]:63125 helo=EUR02-VE1-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 1dW2fp-0004sQ-5P; Fri, 14 Jul 2017 11:38:33 -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=E1onaJRSkgGj5RH1i1CQp0ajop/jhN+uXUbIRNzXai4=; b=EnI0wRqkh6ALMZ+9CMsWcz9ZlH5mqPcrWMW+WTeZxgsdv2xu/SgE9mHNn7bptuB5qwbSYp/fbaEc92tz/VyrEu8tPa5aN89a5XgPlm6r+aPQdHGvuKA8Btx8aT5CpTBuvM3UnrR7wEO3tcWk49K6HixMArUf7T+jWnlBaZv18U4= 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 HE1PR0802MB2556.eurprd08.prod.outlook.com (2603:10a6:3:e1::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.13; Fri, 14 Jul 2017 15:38:29 +0000 From: Pavel Butsykin To: qemu-block@nongnu.org, qemu-devel@nongnu.org Date: Fri, 14 Jul 2017 18:37:47 +0300 Message-Id: <20170714153749.25132-3-pbutsykin@virtuozzo.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170714153749.25132-1-pbutsykin@virtuozzo.com> References: <20170714153749.25132-1-pbutsykin@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0027.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:55::13) To HE1PR0802MB2556.eurprd08.prod.outlook.com (2603:10a6:3:e1::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0f70ed4a-c38c-4a97-5494-08d4cace6103 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:HE1PR0802MB2556; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 3:5K1rZYpVnpxmZkmG66vTuKQFs1fI/VKpQFm+uOXjTHmQoH+TskVG0W5QwYi7bdBXmWgHhn3TSoSHRXB8qOXgV733HU53TgwT2RjIfBUWn41V73mcsTjf+raDOwdwAJM2PBBmZn3gi+W6upX6AuvPtKL9muyzWH9erz23cldFKH6a80zyRSomTFCiuz/O1eg8OqMlWiB5EFemqiox5RjATn0zfMcbIjyHceAa0gIuGE5b7PMArb5i/YRp0PWQlXSClfc0pXZpnelwPC4TDWtFXvv/y5Sf83LL0MMySqJu1NYRus9JnqqBnUVdPnzbXb7+fStiz1ya7n6GJgUqp0zrNMJdOrM8spgmLoK590oRhHvYv8lQybx5tCL5g1elxe4gWYK3cgD38dL9eQ5sfes2pzGrbV/7hw8jAP0594Wl0OrzcsBSw/fX4UncR6bnokSzYLgk4CyjI8xvjLpyYL3efI0utG0GTxieFho2r6WIpDroSQYPJDSI74iaWnVBzm4ZTUfsZf+a0cFoosuZqJJhSBrRG+0Gkb9AtbMsMpeWlHkWQjlbrSvMqRBsafgYtJBj2wSJyUhLgAnT+uDOnWfjA6yfPGAM5zLJz+RTjCjmUd1zti/MvGB6VekRw1xfivnh0pCO9VVxaB6b7LqFrB5WurBEJDDUIUEfgEIDoK2+sAMwvuEcZ4Y5RXjjbUc82Pi/wBaPbMOszl7mxjMK8bOFhQfNDtj9eplVb9kH3XDgGQg= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2556: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 25:1RcqKI0fe860PyvimFpdZbF/feEf6qgwyGI4rxNFpn/IzLntLy+ZF8xmJBe+/58Ogyl0AF6uN5DAMwMM/kNDvk3hKNnlJ0fnFyPOW3pJ/dL4/jm2jz+p5YrkuqYYMEjvzjQ23lC6hxBXRFYc7f+YQRJglTao6bKkJGCT/Milf6daI+G/NqFGReI3BhE/Y7/ZqjHM41tWDAX55hteDBH8kRCo4416JN0cacL9mGqOF5qh3Y1p/clGN5Ff92pkIsr5j8Lk8x7an78tcHUGT3WIxBFwXFv8oMfP3UQcJANnLjl6/kZGlMspbp4J8AJM+6JaLFCxc5lqVFkv8IA1dnRvBaGSN84qgQphHfQQUjSO7qH3AyL3vl7lK/onViuIrl/nl4RRBALS3OcSXzjQA5XFeTJXTksTLXD0ckAeNrNAsdAPmobB92sfAyPJPS/apYjsMS2cT4ADxs2oU5BPCnvtnpJSn4mt1l/kwFLjCjGGV88iF6CS59mJc0d6KHAWgK29enaDRSQwj/i+JDzi+mjpLfConM5I9aVvNp6am8XKF07R+8kn/GxUdTf4QTKp0AawydZ5pzqSUPxHOJdqlo+ptnPZ6DWi+XC1ALK2o1KqpnWNQM+4E6d8KaslFFFqO6KT0zRxn/8St921C4lNXM21q6gmrQfdpboae1/d8JxLbAMU32m+HqTWtRyVJpw/Md4h07mNm/sWMxY1j0hqRONG3h0pH1XQqZvenXUyCemrBvRbajurmuLYBoU7U6imMwgB75b7VfB7r8dSzXiEYAbGBriU1CUfv9JB6VNtdNGyYnaSDHjlulMzZVzjNpB8ywDWli3MZnA85RVnCYJ6hHy1uDgjGc16CLIYCHbRReDNKyw9vNdbBc5+izPYIVt9rHQRyEnbVnvyEfFRkripdsVzalbSuZh0cc0oMdEDTqRNph8= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 31:d5BO1lKvB4znHEjoJSwrgbF1tvJsrF8crqG0eRuWZDebRme+qTcTsPOKyIqLw1py2Il86OJSi38iH+rmiYC3lRfrCQI+h7xG/NzbDEae9Aug0u7Ya8bjSDSYbIbA82mK9KZ65ghHoA77yg25JQ9mbEDZBZfB80wsqDc3JExUV1W4YPDXeZ0s9ty91JZZzY2W7yOozFOZBQxEtdW7tFl8Ic1edLMUuNV73eHmPa/I9NN9Xor9kMSMOn0mzpvGBP5DNEqFcBQ+l5tXyLEjKeNzvXKE44QCPCTc4TUkd+u99iVxhJFZCuqy/XaWFtcSZgYeD0ecUDpcRr11vsypgQ3XZyQjEu5HmFvHjW0RDMCVAlT3w6jgGEO7YYPIaF8motapg1MrUZnh1XaqJEz31dCYOHosorqR5E/0WrtKRd5Q58YYBeHiYOafL4pbyGPAiuVkCncMAzd8JTuQjp6JQw1YQ51j+CuJ+LPd6SR207yxcjV1+dimBe1vDV74RubXbGUydvW4FV8WJ0hVrkSTjMlsCA2gp34xJ4rN0imPt+FAy6zlvRj5JVn7aIF+uGEn+fdZFDJRyVrZJaHm75p6rAhHdNcgUj276Y1fBShs1g2pecRrCJvKW0Tv0Awycvs/DQyhjPwNzd2W35I/oMviUwvfKYMLdvQ+lk/oKkMteYDa/f4= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 20:TLw3r3olPNFZWMsQtMl4bDgnS5A67B7U1RKB5Up3j4ra7DP+pEtHVIw1kk2H/ZjNw02zEQmJexeEYx1Ap4GBG9bhG8soSyeIb/AHXNMUJtNPKK3kQevpFGSrnaycnLsS+G5ypjHfTUkspwChcSrp3AAcNr/l9t1AfylZ3to822C1512vTRJIDU48pUDg5IgTLnYtqJWg4kMoCzfLWS2GDQQCLfT636lTm3xa85ekWDWM24KvcQimu5k9Nfzkms80scUikSR4Dtdqz8I4zUtTkq+IfvmihQsj/cidx+v1xsUCHK4PpKbOi8XrDFcc+76Z+f9coUVpTKhUg1i9MTkOrzs6BfPrXYhts7aYTZNkojLQhuH9CbgvWrUCeRXGLGYoHYgWMKyc8SGwH0iDoidsJTSrFP+Ep5EwncyoJ9tffeM= X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(167848164394848); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(2017060910075)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0802MB2556; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0802MB2556; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2556; 4:Ty0N22FRIqtQNq7OpGoNgkJyGG1NBqwdDKQSUwnb?= =?us-ascii?Q?wdPMGRT2MsppFOU3dUhJA+UQo2W8SeLmL8aQax9beDySdxB8L0DPd3bAooH8?= =?us-ascii?Q?mTcS5NnMBxJz7Y/yuARP78n0DvUvngLZp77jDDlIe1U7Th4GTqDmHew85sYr?= =?us-ascii?Q?n8r+Oj+Q3eUUX/luMCtEUORk1dSSzoifweUBluNWG+tu81PNuJW7EMdnZOG/?= =?us-ascii?Q?rC1ZfvauByjtMZ9snvLHNanIS3RiXPYVhulG+WfHuWVvJ1Gr3m7psarvqcJd?= =?us-ascii?Q?DsW2RO6J5Q0IqojZK5Vq2BaeTEiRMkcmEUzMCDJU6pFgSywhshIs5RaXHpHK?= =?us-ascii?Q?n1mC4OsWFH4CstX584vrF7vaFD+ykpe+0kfk8xJ8Swf65dykFZk0fJp6DagM?= =?us-ascii?Q?IKqqk61+JnVmaqWmY7tL0Mw8cGa8kahR+LlVdZbEztuakGJgQdk4e5f7ZrTl?= =?us-ascii?Q?5NpxUcXsaKJLkFdGebDR/Yb1IPbIFOcNPrIfUJ+Il6v/i/G5TcYnLxaQznhK?= =?us-ascii?Q?BO0RDeNfUlwYjQu2pqja3M+36FKp7kdfyu0VZr0tXM5GJ8VE0ahl9jW73EpN?= =?us-ascii?Q?UO1TMuqA/pRq+IfPoicfSrzpvaj8AyIxwKTxw0rr6KdM76JNsWFVqg18xZNR?= =?us-ascii?Q?IZSIBaPjwK/9KxQODKOac70Zyi7bkiVGc1zASrFSg2hh0HT/vqT7HrN2wDc0?= =?us-ascii?Q?ZjARJD6EKC7WPUB4dNFhFKX+g6lWyDC5TWDWpppp0z098kU/H1pt5GfrMcT8?= =?us-ascii?Q?t1lexwLmURW15THPulJlcudKCMV1RToh5ObohOb6TNUzrel+vjXxHumQKs2Z?= =?us-ascii?Q?+Tz1T6CZyCzBV73bDMNqvUIXRJSz0ul5a/Vu6u3gpX6OgkCph7WO/0V+6Urg?= =?us-ascii?Q?etpSdmmcUn5ydFpm7QjTciZu8zC9uoWhrA2smp9KFjA4ekvajQcvbORBiZoq?= =?us-ascii?Q?UP4gP6trSjh0bxreWamd/QaPHRUnjEPLxOPF54VNGA6TXQwchd+3us2dZLjH?= =?us-ascii?Q?cUbr/1iKZXlO6H9ySJvdn5ESbu1y669ctQUzOqdrBLHAtTmcBwEAvB+x4v+a?= =?us-ascii?Q?tqux0RpZjK6aaRLOmkbBejvEWnp+nMIwoWO19xagv7QvxB6M4OaGPyWgGaer?= =?us-ascii?Q?Pgry31mRs5srvzDnKGL3tJiGjbBwes8/sP5musDnfRPOHDWLcDn7tD9P7u86?= =?us-ascii?Q?QKzDdfiq0586UY4615efCwQtBnlPP+JnM+kd3aDjKJtUaxs7gV5DCNCL+qU8?= =?us-ascii?Q?NSq0V+NFXQtVtf+cF6M=3D?= X-Forefront-PRVS: 0368E78B5B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(7370300001)(4630300001)(6009001)(39400400002)(39410400002)(39840400002)(39450400003)(6666003)(478600001)(6486002)(5003940100001)(3846002)(38730400002)(50466002)(6506006)(110136004)(53416004)(6116002)(107886003)(33646002)(48376002)(2950100002)(6512007)(4326008)(53936002)(7350300001)(189998001)(8676002)(47776003)(66066001)(5660300001)(1076002)(50986999)(76176999)(305945005)(42186005)(7736002)(81166006)(86362001)(25786009)(575784001)(50226002)(2906002)(36756003)(15760500002); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0802MB2556; H:pavelb-Z68P-DS3.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2556; 23:KLImkieWrnpCPL/B75ZkE2KcSB2vrVRrMLXuNqw?= =?us-ascii?Q?vyFEGwmWL7suv9SlZuvGU4yqKpNUIrSaZFVnSVyE2GeR4AajmCzceJBU8GfT?= =?us-ascii?Q?Nv80cM1W1d9+zfcr/Swlpuzo7GUlZu4lgCkFH8kKxLQX5wZJhdOgkOkeqlVq?= =?us-ascii?Q?dbq5ah9V7KzMSH9mq47xd4dwUbDwer5di4G4RdIhp81x+g+sRMNt6P+V0A+w?= =?us-ascii?Q?up82OeHYvqizs5FfHE/Dqwj7ME4NnR1rdewTeau70ohr7vbRv1PQFvfutNWV?= =?us-ascii?Q?owrZYJBByfwRHr+fwFBz3pB5qjg7RgJw8iz+AO6WIWKGixxCuRc/WSxBZrV3?= =?us-ascii?Q?B6vmQDlgvM0aGjYnUYUxDRXYuvx+g8Qk7H489TTclhjNJyy2/4Zllyq9JfwT?= =?us-ascii?Q?kE5otdhOyq2JRmODX/2nDALWlTMbXYDBPkVbuGKhtsIBsdXgMlcaDbZco5vq?= =?us-ascii?Q?wXrC75fXU9yCDkDZH6NrNmgoHfRmcY1q9n3JklPVJ3yUvZMJ/ZNTOIwmqOQ7?= =?us-ascii?Q?pjEArvGgd4FlzYkM+jyQ/joYme9gM6kg/X9I5txYJFVn4+TzmfsdY9e3k9HA?= =?us-ascii?Q?rSC7Hfm3nISHdWZfLKLCw1RChkP9HxRSFcBjV1HMrgUCZeWoL3Xkr/3saeiC?= =?us-ascii?Q?G92ujcGb33GEw19fPxd8PvDSZA7FpgOBuxpbX0CWUxvNLOAWzE7AYG2kGidc?= =?us-ascii?Q?0uJ6yD3AReUTdRP84AKrjXG76IHsrTFKETvG5dCOhRGaZFAF/YrvMXHfkAFg?= =?us-ascii?Q?UxAIy6ODywpChDrfGt+1PHtx9xeR1WuAIU7jJWP0lhZd35Xwtxdmhf1G1p7w?= =?us-ascii?Q?cHKO6jxqSrYDuR6zE48LroU5vDiUWQacODi1CbiqbYd/X7w/Ve1s8WNrqcDd?= =?us-ascii?Q?Y650NzGe1DPf8Tt+O5ERrSmztvr6Wir1jaQxt2MIhxY+82ePXs4BCG/PxJ0d?= =?us-ascii?Q?dIgu1wrrn2Z3m88467/fNg6Hx0/dliJNPW9iHv5iRfN4YlkzCeoDGxopNmst?= =?us-ascii?Q?8TCazU/b87+zKc5RwP2es1Ht3R0aoE2JcgzsmLzLVzr+t75zbJ80xbUR9uvP?= =?us-ascii?Q?1DcZf53i7CRNkE37sWQnFKnJHWA3tU2IEPKsc9Y2PbxDFPouYW5wV6wfkbsh?= =?us-ascii?Q?xDLu5AZ3oZIUlogcdO8734HrLMOKq7gSH?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2556; 6:u6MVQLlkVWf8iXREyVhM7Bx4jc/p1/RDqFCpydD0?= =?us-ascii?Q?GcV9KaBTObh7mPgkovlkZ2m1D11lRtAFs3xE0CgAO23kcyosO54xLnxvQuMw?= =?us-ascii?Q?LpMcPK37/4IGeSSz+P6ChggtJmBnFGjuWofrjSwjvncd7jRggDRj0v6JMbKH?= =?us-ascii?Q?DPubRztrAj+yGSagN6pWwWmhquDrOM2Tj59sGGvwGVwiwWZgRPk8qfM85svW?= =?us-ascii?Q?mM9I4voTEQqMMYglH055iFy+YEG9NMybnEhpBxx969GbkQ31aUdeAkEFawec?= =?us-ascii?Q?o8cOucxEGP5gbJYroxS1q/bk4PV75nKSsXgartGYbuBrZ/FiGICoaQheQNXd?= =?us-ascii?Q?UYWwqjoKnlVmfWZpQFTuNiLBmxrwX0HSg6tjvfB/hAZb8kDLW5rZ8dUQJtHE?= =?us-ascii?Q?O+QxbQLnkVOldwxvAbgkeeA+KgMuRocofOfeb18gRORfVLF4GJ+rq1EhARD1?= =?us-ascii?Q?bI0zLYnU+G3+5Kk6BM/hMhaR01iGvON7QFhZBY+tITHX+zuuLgvR4TlCUxeX?= =?us-ascii?Q?8Ld48Bq7VQxbQcaMVv7pr6yNYE4ODgMMVa5YACnAV3Z5fc8LvMAuXomvdJR1?= =?us-ascii?Q?JPAycocQlrvp61b9mNgd+Bkda7hlWn0Y6iqQCVPBaSAoD+clv+KUBxRvJHYF?= =?us-ascii?Q?FvuJTjQwdqVhgBsCWDt5qx6fQhBg+OJuOzCkyS8fBIAxoHtJq7O0wINAppW2?= =?us-ascii?Q?yOum385vrY8dIJ+4NWDCsR6fbKy9IdpXncsPqr23XaQQeixn0wUbYpEwdYdn?= =?us-ascii?Q?jaOc3D12XFhPVBcwvdOKB6e1NRGlIjgrnxwA5rFYiBiXh1kxIrfOOa8RhrN3?= =?us-ascii?Q?g/HdnKz6/lGpQYyRt6Qjn9ASiugJsqDOHuOMF8pBd9ZN0EQu6A5FCr75tPJi?= =?us-ascii?Q?n+z6AWkQr9AFMz/TDiqUgBUABgk3If2JTJtDUTxTPqZPocAx10VuQl+3pEJq?= =?us-ascii?Q?KX0PX7/klnH4fVjiEYBuJIXq5GiBB+LhnlMzxcbsaZHb/bw46UwqFbbB1ejY?= =?us-ascii?Q?5xQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 5:JqFAfGrf5KVVXO2d41JNzEn+qIHwKYq1Tyc6LOfA+sQZ1vCKvSDBzOD5ltiss2VcnAGZaRyrw9HC0zezH5NOmImDZCxtWqWVreTy1eP2PJDcgtk6PdZQPVEFKT0OoXcPnEXQ+voEg0VfEi46cYWJr74ileXZGFRKKMok8soiH5Zvvt8d7hWTL4dg/iF+BlrBunVid85iYsdJWBFIXJqcquAq7r/bzlaJVDpCJhUy8/vobv7y45YPPcOVEQUsWyTy9g2Bnrcx+/a7SDtc+uyU174ry9RINAk3CtCxhuHVEYQnSfUYkp+0Tfw/o3O/msN3j6YKXx3SNmkgyLihRzMAIf9zKn6ygfJhrjIF4+kkwS/dp6A1zvUW1gVAdOM8uPyJUKy5KgNjufa4J4KJwRKLzLtxeIlFyZUAtj6OxQNRy8V0YQzn1wOvcY669fzoRkNN4etOXzOAP89I8GkjUE1LPFCK9sFIKcZkvBf8SxVu5T+y2nHkyF2ybq6QwdB/XSSB; 24:kIitdy1SMVrdR2+OZQctCUOXIXNzteWhxXjBh6LrvfdSxLNjwmskAqCPObWR58IIHcNJpLKIOnTO2jZFNTOOlGG5C6pDu/XL0+FQjVjaM6k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 7:GbuMPnrocWTMoCYsFD16hMQlBpN1wuecBtyQME6e5NE+HGbemMvXvpnVDso3gNeZz/dcygPHcXVo5WUtZz5iSst+WcJLqz9m8V1anhwf0DpabKJ4qCiZEjQAPGrZbKvNr+LsIgTAA8bhJo/W1CfKz3NGBd/hGt721kZyASeAfLPAgYrIvrJoR4S0I1z36O81EcJ7n8GVU98ZZkLo0VaSEu/AjrdjfEdkhzlIPqJfXvXhrzEtzGm7UG/4ggC6zdYbzHB1hTzltXFd4icbwsKHFCqZgfuNQqlzFVbQDj3UQQC0XGiknurWJvS/wFD0N1LiaD/FOmxqs+HL60ERIwFsfoVs9pD0Q+nA+6A38GX2RgjYgZHnPr8lFjvIa4wn9OV1+87ia+unlWeTNTVX1RdV8GqNKUHvPgyJjNFzh9ZEUVKYlD30aiNBIIj6j9wwRY88XMOs2fOlZjiP4GJvVHmRM0TtRR9rS7Sjy0nil9pw1UToCr1cXofWtL9/DrOII3l4adiuU5VC1R+i8GfDmTXl8KMRb1b08DfYnVnh7HYGVlZHUZRvv+OLshcBRrNQuRLcbOl6iSB/eqd60HqABdWBborjculhw9YsSu0IzCrPMgGANQfq+0DRG8VYQ6I0UvtdAcPn8LBbrmPKoTbglBQOEVAMKKYAILWOopHCEO4zavZ/1MQoHhS4zifT9rJTnYYi9MfBa58B5vbxylom7xOAOM77XRyAEGgJ6XpVWeUsSPuSprS0bhwEvdlb22nVsb62rdcJmZlVj2lyNTEe32ZMe+BDv/G5RaO6IMiGsIqlm1w= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2556; 20:/D7XIH0u/NcOMqvZUega0ftlwdWjJdkseUVcpyKO6fnHrPWqA3slUNEzvWVwERD9U+bAVR7dgStZTjldw3XnuUUr69IdHYpoullnJf/rXDSoialk3CbtoJWHYv1yWmkaP37UNfVUAzeiYZyNN2Gp7sLrLOOAAM6FmKJ8Mk2tvMg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2017 15:38:29.4565 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2556 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.2.115 Subject: [Qemu-devel] [PATCH v6 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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 | 20 ++++++++++++++++++-- block/qcow2.h | 3 +++ 3 files changed, 47 insertions(+), 2 deletions(-) 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 c9b0dcb4f3..bbe5a2b2cc 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -861,8 +861,24 @@ 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]) { - update_refcount_discard(bs, cluster_offset, s->cluster_size); + if (refcount == 0) { + 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); + } + + if (s->discard_passthrough[type]) { + update_refcount_discard(bs, cluster_offset, s->cluster_size); + } } } diff --git a/block/qcow2.h b/block/qcow2.h index 96a8d43c17..52c374e9ed 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -649,6 +649,9 @@ 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); /* qcow2-bitmap.c functions */ int qcow2_check_bitmaps_refcounts(BlockDriverState *bs, BdrvCheckResult *res,