From patchwork Tue Aug 1 14:19:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 9874761 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 7489060361 for ; Tue, 1 Aug 2017 14:26:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 66A9E281C3 for ; Tue, 1 Aug 2017 14:26:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5B7ED28438; Tue, 1 Aug 2017 14:26:20 +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 B0C8C281C3 for ; Tue, 1 Aug 2017 14:26:19 +0000 (UTC) Received: from localhost ([::1]:42871 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dcY7m-0005OQ-Sp for patchwork-qemu-devel@patchwork.kernel.org; Tue, 01 Aug 2017 10:26:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43298) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dcY1O-0000Xm-Oi for qemu-devel@nongnu.org; Tue, 01 Aug 2017 10:19:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dcY1L-0002XL-8z for qemu-devel@nongnu.org; Tue, 01 Aug 2017 10:19:42 -0400 Received: from mail-he1eur01on0132.outbound.protection.outlook.com ([104.47.0.132]:46811 helo=EUR01-HE1-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 1dcY1L-0002Tv-1Q; Tue, 01 Aug 2017 10:19:39 -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=Ta/4Iwj4efzptlGQR7uwKhSE9FJ0CRACLIdN7nlrJTk=; b=ZYfXkb/4Alyx08q32eBZKBK0OcLYZKoRBKyn1+coN9SatiOuXk10ad1+vapZ7A+DgvmzYVqjYYiG6hStHVF0oTnJPti6pI88izZK6Ttda3i56kbqB/X2RLBZy8WQHAwDtkr5kNQOZkkZ7Y8DbwmC4zRodT5ikYs64XLEnXoqmdU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=anton.nefedov@virtuozzo.com; Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1304.22; Tue, 1 Aug 2017 14:19:35 +0000 From: Anton Nefedov To: qemu-devel@nongnu.org Date: Tue, 1 Aug 2017 17:19:10 +0300 Message-Id: <1501597152-25342-14-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1501597152-25342-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1501597152-25342-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0202CA0002.eurprd02.prod.outlook.com (2603:10a6:3:8c::12) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-Office365-Filtering-Correlation-Id: bf10760d-0aa3-4295-7597-08d4d8e85690 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:5NRxvwzv1oZkoFF0UvAhrByOQQxaXG7ZGg4NzdxH5H2kC05NLuAdAkoTLxRZ31wAyzjwZYLXLTANPRq6WmTsunXgbiRhJMwYUIGJx6QSDeTqfapgl+NSk8wRT8RVbg+Of9I5FneC+rVbVTWflPb0NU1lpTzCbDeEr3rIycHEWZ98L9FQmjcxsj3revw+rlorflMjHOz3v/EH33gQV/XuX3BQw4aWTlAuM/0aupY/Wa8V4cC8c+DwhHIOhA6oB25vpEsK0VfsSbHArd/cUn1Ivs6tzjt6qvr5C6s9j91EP7eWw59ZSRa3rIIOIFdvN7YQKOUPtyJcJfE2LKVF7lCBn5OZ78QHIQVg0bb7ynenM30HpZ3I5rmXIKi86NC8E4yyWjCY46ugkMmnGzpEFp+56YrW3ttZyLkObkxNb1H+fmEJrg/vVwXOKNiJkn6TepXKZU12MD2yYTxDv0n+xevLWNM0UIAbTV39DRa2Bi461vnu3gOLj6TWxMSHDg5dwDzeB85Il6xuZhAyiOY55AJ550ufAWuup3pcwRQva1b4mmQDbxbWb1eB+Rq6JKK0J8VEPBTx6I2PHVmAbAsmQvOUy/dQPIt44/jGguevJumwu6tfczOmQ8WKwxPx8sLxxVlaP/NGcSmQe4H2sfrXeFwRN4PYdn2KtDOALZQVADriOSlw+B+AaGgHf5zPnr0xF59LO/5QeLtCUJBElA+dOy8ZwMj1+ugdqSD1j/KwwtMg+l13EvewUowKHnB9UyCyIs+M+kJ9dOlWKD0oE9+QNYTE1yzp8x2QgjtYSnajJX7oFHuECTzDq18bX1kEoL6mu5qM X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:AjhQLeoAMXUIObxgE4NONV0U7W2JQhlF5uuxcsJNezSIHRM4ISesgXfCHy6FWkDsWzQu0B+/VJyksaO7EdDJGF3MjJqju7gn9hye9ehW+/UwaTsvpYpbGNMeOVrbdRHyhEzTiSLDnRos8K3FDa/8tlopIWMAUaYSTf1PrGsfsmTPFY4phI6sQqVuZs/MU0IsUssjh3pNhktrKFT97pQqJHHoY6U5z4npfD8bFgBDtc6BzBAvlhaU0qtrqU8PSZELt0q9laImMflMJePiZkIQ7aHKY08TZPGSOXH3dxbspGn3EOqHl0x5kfkQpRzJg90PeEjjgMVtymZyHE8JBDXLCD7YES2XD30YOdJnVToxX0h6wG9j8+4ahW/IKrOzqLe/ivnuL+e1zQg6ap040ZM2BEyDWzIjU3O+DuSAATG6j8JRNvdoiwfUCyy2ws62FjJ1U9xmXok5X5GXXvixhbe6mlU3Oifs2Zb6x67oeVv60LqTWOWQh3yu4q6kAEY1sES0iQfTtpqb5plEGULBr7GTQB1o/pgefrbkzhBw9g4AB824nzakthA1wn0drLvzLczHiizj/QHHDAHh8ZyW4+D9yFaRj9EfyqeTTZ7KB+ghd2GLY53+Gt6sEs4WNtSvPfItN+Q/7w2kOmadXJMM1QnHJblQTYn3+zTDGmjNOTyEp2YzLioJ7eTAYZgYOfGa7YX1n3FDcDytkJBWhUYHQUfKCdlL7upJyNCuEiF5OObub5yU/KG37yUaacjcNXKSj3Lc65Nj8mypH2vJvo/wORN2+OnMGhHDGE3DvBIJTvnkAh/kG/itm9L7hJDxX6rs/Omg0SKo8Tw5SwOowXaJuMjwj3QTtAgL7PkbpiVjpLayGWd537NJq/SemeNL1n5QyjYwo12Ybrx+wqGsFVNpmbaaVhIFQ+YPSUcwOjqxrULjPcA= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:mdaD/5vIcvGk4ZViErN7MCRc9XpfyngnBT5cK1NMM8B/wCdThgTbBYwFND3bri8Id0SN4zaRQpqhRQebrOW8IgwUOc4yC1LVzJsoEU3NdVnq8yLwZkTf1nX8X/XAbtrnz9T7TNp2MXfUh5MxJrasqJpCBeRRmNPWD4iajK1qDZexbOFiJz6T1hBRHixzO1Hhz4ItE8WZBwbpnBt0GVbMJxLase/u1+Tgao/BdMjqj1rO+k8RKgGRQcoOfh57KpenDTqId43Zw6xdixn5LvPrgD8R+ER1WukrwSk2qoLyF2urbz9MxHJetoyrhGzbLeOQYv7g3fUM3oGUAo+G3KSqXncNQUQhJdMPbwr1PzOVHGQMnEa8DvetSx8rN2qQ8zROur0XgJEblUztQcDTbqo4EtW0HtqSNjs/yxuvzwbN5YzgjqoKeS2JbUJp5IEGtYL+ZPiPbLmMXRMHjWqnYajbs0LT7HbfMYPzEW964W4RKbmmufhjxT6BCPMHyMDIT/WsIfaynpA3FsXN6Yq4drAJjGZ7civzeFnWyeHo+apfcKbbjo0693naF2rcL43PCg7asQOurcd5lwNfrsPDFrARC8bq3jhopLtABcBC39IpItga2di5NJpbGDCLyArOsdflYowz/L47seQWwWGvlalQONyc3bIjNy2UYJ6xqU9AxJE= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:yy6vQez+nqueH6WshzH9UuUz9buTLQs+y5wc70gr8pEwyoiUew283Niu/tPVoExKsQyX91rscB8qrenYoDRWm9/mUKBVmy8pfRARRjNMJzOt1vYn3NCyn6nozvBod7A6zrtgSPZA+GUmTJyLsYAW9gvByKgzPtomzLFzJqhtYDza6Xdq1g0WQ2sr4pj6woZQNEQksApj57tEw5apB7j1iXegz9+/+l3H6kjpd52aMgPTnCgPKeYQSW4g16ud/OVfW6lZWltfoUKPos4/MJRck5oJTGr9gG8kU2TTmahXIHsSqfTaHScqrNbRg1tkHoH9cZEqDn5f4H/1UHOuQcGw9VP6v9QIUS9WanaUbKi662zMfRIvKfqrAA55Iugn7NSInG+cbbmSZNvf6W6XAh9/nnPr+Yrp0wUBH+IL4QHtTHQ= X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(20161123555025)(20161123558100)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:mHL3JMplwYivx8pJiwGDvTC0i12tCAq5drH1AkXx?= =?us-ascii?Q?mktCOrnUWDCfpG3d8PU5yIcSRL5Hq9mNi32dN/xWp4sWWXwsuiZEHfrVO617?= =?us-ascii?Q?4X5tyvCfv2euODQFys2F3vse1P4DQPKu2sG5rr6MzmnjMc2eunTjft2ZmAXi?= =?us-ascii?Q?A/om2+MwWd7/Aw9Bvq1E200h61lw+A8zz3wqyGnvgNCjGOaulGnxUhmn9SA3?= =?us-ascii?Q?sqIA3By4Tp3q6b9K5hdBN4rKOjyoi8tfb0JIx54QMgG7UsZmoGROf7YlKpfD?= =?us-ascii?Q?OogKW05ayZXfTfeukbqywOAVLvCdTsdFrfMJ7AypQlIm80bKQOXgDWvtpmWy?= =?us-ascii?Q?ISHee8ZeNyDOxVm5t1e/qX11vpa5XXe/ugfPJ7ZQxN8AyFW92qlYX63Wk68K?= =?us-ascii?Q?PggADSBwrB8K2EOtsV/Mym25OWvRft0jH9N3q4ReXWjQKvl/r+M4Tk03EIxa?= =?us-ascii?Q?tv3F2gahKLGaGRz7+Oe4nhzAf9B58e9ki7W//ofLgu8boSVMJP7jdmsqPBnf?= =?us-ascii?Q?70hKYVg9QXl5gGzfDveALB2M1uVcGEW2uvw6sZHSc40GdIsO3H3DFklrvwMU?= =?us-ascii?Q?Xu5oRdDn2FKfYdFmFyk3y0lHe9YV/xEa31RiVzRpfxgFFACA6MJQRd2ZnshL?= =?us-ascii?Q?C22Wr+HmHEJzEs2gKkmC2dLPV0DrkTMcXK+xrglhgXY1SzNN+rhitKP9nLpE?= =?us-ascii?Q?yoWdOkjEbDey7jndbtUlHMJQzrQSqxL7UzvRv0DCYJtlf/C1AJF1+CkCsYpp?= =?us-ascii?Q?hJTzmB8uglMJDk6EBKLld5A2e5cIqEgsZjiuLlWlwd7uwEzGcp6nrMCz7Esx?= =?us-ascii?Q?iT5kz2BftFuEaOU5QJO62r+bGf9Whc6VdTG4MiXAvyty1NlJPN8PG+G+UGGj?= =?us-ascii?Q?kXSvZfl2YcxATxDeuy4PdOVIXrq42phJep7qOqyTMS/DHKNxx8JXIM9/emoM?= =?us-ascii?Q?k0Iw6YY3TxMSs4ezng841w+N24JvaBb049FQ+A53tAIq0EPo6VxB9w/o+ceh?= =?us-ascii?Q?2eVGDcynNKNNiRIY50GbdhjccH4JI6ElnKw9Pe/VIeDEUl5W+ZZ3noHvjLoR?= =?us-ascii?Q?2pRn103Hu/RjnsXmt7T9ONbFSvd+zWAThJBEsQUkJLzzda/Cpe2jxzI8eb5W?= =?us-ascii?Q?rTux46pW+juBPuGvR5emd0JkOBqNYFfA?= X-Forefront-PRVS: 0386B406AA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(7370300001)(6009001)(39840400002)(39450400003)(39400400002)(39410400002)(189002)(199003)(81166006)(53416004)(42186005)(7350300001)(2351001)(106356001)(2361001)(105586002)(33646002)(25786009)(50466002)(7736002)(38730400002)(189998001)(305945005)(97736004)(48376002)(6512007)(107886003)(53936002)(575784001)(86362001)(5003940100001)(110136004)(66066001)(6666003)(6486002)(2950100002)(6916009)(50986999)(76176999)(4326008)(68736007)(478600001)(101416001)(8676002)(6506006)(81156014)(2906002)(36756003)(5660300001)(3846002)(6116002)(50226002)(47776003)(69596002)(21314002); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:Hw3rvCjc3duRGrxbteQsGZMKe/pAF/q3UnKcCyY?= =?us-ascii?Q?4KSsWSc8sqJkFLeireUozu4tuCk74cvDQPjFwqZ+xYK3J4d2PKceDnDtShv9?= =?us-ascii?Q?aOWvAcFUL711XGZ2RdI5ii9/Qqi52ro4dwsvn5+Fe0oByLX0a6WCNQuQdGpO?= =?us-ascii?Q?TLl0L7vuA7KHzGsh8h0MyhstffAY9WVnPgV9uetntHoTScVZs3jke2Tey4dJ?= =?us-ascii?Q?+V+FCXFVjEvad/k5bahnqooh71mC4MnhAvldayeBDb7hsZNOy3m/NX+WQmPT?= =?us-ascii?Q?un7Uxwz8nDF6WDj3mvSWTkzKTkYmPCHrhYEyuFbnhaFU1h/3ZnbBZhJydIIE?= =?us-ascii?Q?ezTxVhzB9F0b3uJDtqRGNKAs3IsEPESEkI/V15Zf2tGNxc0igYFvLX924Dwo?= =?us-ascii?Q?8uWtZCUInXmNwoHbGjUlophnZc826YI7djI83EjOPt5zQ/GDWP9JWO+k94pK?= =?us-ascii?Q?0YfPivFa3/hYJakDUVTqEOISC9QAqqp8T1RyRc652FUNKTGYpLSGaNro1pb1?= =?us-ascii?Q?aIDROeT7Zj/1jBiFs6JxYXPAjA6SHNDbMKl7YtB23TpcuIA48sAX/gJDhjFB?= =?us-ascii?Q?+HRHLoFqy0y+utt944R5WIdLHvww5aqruYwtqkwiTf1UUO6wcTXg5co+Hzy/?= =?us-ascii?Q?WRS+Ps8tSQaDN2Ss1+wGESdKk9LKB54wywlTZe4yZtQ70HW8PQ3s1AJt47hs?= =?us-ascii?Q?uN3YWXvIMcCoUMRlJToiZm5LQFsPZ03A/iqHVPsFO9LzkGPA+WI7bnnOaK/L?= =?us-ascii?Q?7yNFfRTK6EYD5tIm8R5sqskVgVj+VmKKGbiNydpfPXMNq7G65CDi05si75OM?= =?us-ascii?Q?pArutC7vFlvixGcohLAdx9X2X8Lgibgr3HrTokbwQCV+AuMYrqOjZG/mXr0a?= =?us-ascii?Q?24CZAC2dWlm2vlVF0PzX6kx3E09ZOTVpXLzibPDili8c0L8sYIYHYO+k0fdt?= =?us-ascii?Q?wL9gNQNDg93/Xx6d3nNVRQ6q2AM8pi2FrgQjwNlBkQ9gt8a4zQw9Ns5ftPYY?= =?us-ascii?Q?ZRZxRlnK6ImS6Mq/ArhcaN2Kw85F/OO1pczjOwHfHXCbbue8S5qjBAbEypLQ?= =?us-ascii?Q?Ze6qPqMy/wkDXZ0l7Fo6mdI6cLQYbz6XIfaBm0uKjEGIzRtuFF/3S3r5P0rs?= =?us-ascii?Q?s4B3hjykB3BdVB98J81TxUi7iXCOiuFvCbJHGKkem0nQ7Vkryh9J1Fto5I9k?= =?us-ascii?Q?qd5LHeDUJyCwHiPB1kruHMzGYd6hsXNsyugT7dtn0PhJe8QCYqMjFikib+hM?= =?us-ascii?Q?pj1AShu/ZPaxdzCxDcytjvFYfbzD0hqXacUJj0hdkWejLP5wWiYeiX/o1Ubp?= =?us-ascii?Q?u8VpJVKPYyF4NxVSO6+qU7422kOsyvfe1OB6NwZgQ3HuDf04ftGr4G2V9pjQ?= =?us-ascii?Q?WOxiJUw=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:iZH7KCO5gsmUXzXQuHaL4NZv8Y5+wVxIADwHFI8X?= =?us-ascii?Q?8OPr953wipQDNo82ZmlRXuyijdidU+ZKgCrVnm+DPPbbltz+02Wn4MWZJ6Mf?= =?us-ascii?Q?KmOvnoQ7yUKZGrlNitlthrXtBXAPrQEMdVXV0K0TeTBSbQyk05yQiDswUIgg?= =?us-ascii?Q?hIJqxyMemiMaxHyUtXTmPHPix9209R04bqrDQpgUvo/QzU6ZL60lNEveuD0W?= =?us-ascii?Q?bUwsA2ouOsLpfRMZDoPalmbzMXGrQnG1tbi+YAMM/LDvodh9E4ihcmTDd9fr?= =?us-ascii?Q?LUvaRy6ZfOKpOPZ7ZXH0FXSsnAWfFnX/gtHbizjFHbt8ZYT/bofQMneoSNVo?= =?us-ascii?Q?zN/d4JqoWZw55cSiunOtzcgH+Vf9+r0ADbB4gPU4jF/GcVALy6ewob64GX0e?= =?us-ascii?Q?rjO5mX3CApZbJx1p01yU2j0O+eCHbMor3OxMo26U8mgThKEBJEkJoGtuUY9a?= =?us-ascii?Q?wIi5ABF5y2ptI9AskYROXKhvfkFVR1FUvM0Xar6XasOZ7xvmYi6bpB+3ynJi?= =?us-ascii?Q?Z3uw28OQehLs0EVhxIA8r+8zaU1vuZeuSKfsk0sfqcP6my+FK6yo3rjmpEDs?= =?us-ascii?Q?XyIUjLg6OhtBeBEoc5WJRrvjhXs50JkJBwVglOfKQa1qFr0p0IbaFztK8sWJ?= =?us-ascii?Q?6gNuyBKpEp/ie2Jh5t/oFypP8ZkQeMQFdOB5RXvtXyeBsexMPdE/LRwP2ecZ?= =?us-ascii?Q?ivFqvyHVQlzTNR9aj73w8Pfc9vfxpgSYkx/DIo0K/E1Msm+/w8DYshhwbj9w?= =?us-ascii?Q?ByEnrRkU3BMDzmuupiQbaOL653DQakzxiix2HYTKj1lIpvD5W9JkicGqiXrh?= =?us-ascii?Q?EK2k42lTM44dKGSKgUKQsQu68W46DfOxNwU4zXU4urk1Pk1JrIMvIgoSoK7v?= =?us-ascii?Q?eckhdoBKGT/oQvlp2vPgFLR8Tqh1VwxvX8q0WKdbkl232DLpONI3TpUQx0Oe?= =?us-ascii?Q?HvtTLfF6d68I4C+aA74srmX1f+WtugnfUajYq9ZVCrZcg1ZNiVmp/cbZxS2v?= =?us-ascii?Q?X5I=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:aUfZUvuvj8bSBOzUtzrPql5/KNoPIjgzYUSZyaH/SJGF9urAsOi2knXedQ8vwsfxV5TuMc6VoM3XaKFuPIa1Vxay6YzP0GTPerlg4U/zog5sKzU0CzzOsnGCP69RQ0ZMDDw+cwsTXtgVgkWkBT1vE6IhMN4qZV0soG8yYDPyOn7i/4wgu6yukgMA38IF0n7AHO4o2qVm7s0c7sHRW2lCKtCLSetUJh7AmXANLJ1FhEcLbhN08dqJqKPTsfPxHDOxeqxU65WFlNQhYLlPtgOGzFVpcKUNm40tt74MBO3hhDgUXp1iBOGbU14GxoJUy8y/MfwxQ9GVm2OVbW8OqiTp2ejCzABPzUkQkx8/xhdh7dkj9UeGaWNjTlco0mhuwVY8r3I2txhUocXJM2EG4LBgHF+LCMoV4zO9F2szVEHRyWcceQTg3Hlqr39itt36vFRNvNzIdxXhLG4gqunHiC+GKdgL8zBh+HUoPuShxrMrnKfBMJUIfwwpunauWHmuw+uj; 24:t8/amLn0gFuMnoN+ActDqCWizz9NUliRjLk5kP9LnobG817uJ5IVdxKQxxUZB20PNP6ZG5w7/dK7d07A8GJjb5W1vghuebGMEdQ7oSd9Ha0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:t14Gn8cJqFEW3JFNwSO7AXPjRKoJptYy9LUnuEQN1NGkxW5lNS+fQd3vQtAWwIRzON8KXdbYu8+5fbogBcy/Ke61j390Zzp2KZqYUkooh7bZzSV30kLZnkwy+x91/ITKOAqQAEeErq1H6d3ukDhO/19BXzBFzOP9Ihb5TlT+1xohGcZVMHVGMR9iOFTymIIxnW9Oq5zfpZBfoTFF+U/Qa/NbQV0xeVEhdvPVcRfYNrvTG5fVmFkA5jThkiaJpt9dZnMY0wwR6FsvMvsQSLq7T4vHEDDgIN5ys2kcCtGlwaZtL5rPyf8nMu/XXqYsN9CRIReDjjx2hur+dw2qHtCj6Q2tKcMtzu9gXIKbCsjTWDkXmqJ2ENYCaATX6VYkV++11jYUQd6oICcnf8h9B1RcEWddRzhjjjvBqFpCZlqfaqP7sifQQpfZanmZ4Zv+mWUrCT/WK0Dzxm2KgUMb8VUSgwG7OT9kwTcfV7YIEDGxxKo0haTOhXQLmhQVesOlwgFKFJoX3iEvqbE01sMWtpN+DcuJnWMPsQzOvFqDSKljq77BJbGCendKEb1RuA1D5K1P/BtHgHTCJE8aWCRRCh17IuGRsM3vjGGc9xXiA2FF1eSuHsB3AKpnubMbwDN93f8suPZ6byOOasTOB7deos9/bUc+So546EqR7/ZEre+QZpqx33QkxW52HdQN/XFaeh0xyATyj+KMEzXHTozcyNW9oC9rUMdlkl93TBzeNIWPhyi3nbsNmGFf7xCgjd+jMn75qpVeZyx/VZ1qp9J7zJzO4AK87M/XnXhvkgNc6ys+GrE= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:psRdiORyJ+5ncJPI3bjDz9VfFSre1aCKIiUneJ3xEkaLTy+Y4hSXKN7mEnQniW1bOSVZJSbEkhJjwOMgzUji1CO08xa4SaocVayx0GutYeCiiGs3cOsR1pujf9cLZYuQNuKpd5KHVldydX/hylWigXmhxAD0lqa6sisk9IPpFbQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2017 14:19:35.7402 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.0.132 Subject: [Qemu-devel] [PATCH v4 13/15] qcow2: allocate image space by-cluster 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, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP If COW areas of the newly allocated clusters are zeroes on the backing image: (even if preallocation feature is not used or it cannot detect if the image already reads as zeroes, e.g. writing to a hole / preallocated zero cluster) efficient bdrv_write_zeroes(flags=BDRV_REQ_ALLOCATE) can be used on the whole cluster instead of writing explicit zero buffers later in perform_cow(). 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 Signed-off-by: Anton Nefedov --- block/qcow2.c | 22 +++++++++++++++++----- tests/qemu-iotests/060 | 2 +- tests/qemu-iotests/060.out | 3 ++- tests/qemu-iotests/066 | 2 +- tests/qemu-iotests/066.out | 4 ++-- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index e49ad50..9c49d40 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2039,13 +2039,25 @@ static void handle_alloc_space(BlockDriverState *bs, QCowL2Meta *l2meta) QCowL2Meta *m; for (m = l2meta; m != NULL; m = m->next) { - if (s->prealloc_size && handle_prealloc(bs, m)) { - if (check_zero_cow(bs, m)) { - trace_qcow2_skip_cow(qemu_coroutine_self(), m->offset, - m->nb_clusters); - m->zero_cow = true; + bool preallocated_zeroes = s->prealloc_size && handle_prealloc(bs, m); + + if (!check_zero_cow(bs, m)) { + continue; + } + + if (!preallocated_zeroes && + (m->cow_start.nb_bytes != 0 || m->cow_end.nb_bytes != 0)) + { + if (bdrv_co_pwrite_zeroes(bs->file, m->alloc_offset, + m->nb_clusters * s->cluster_size, + BDRV_REQ_ALLOCATE) != 0) + { + continue; } } + + trace_qcow2_skip_cow(qemu_coroutine_self(), m->offset, m->nb_clusters); + m->zero_cow = true; } } 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=blkdebug $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 a20e267..290ccec 100644 --- a/tests/qemu-iotests/060.out +++ b/tests/qemu-iotests/060.out @@ -114,7 +114,8 @@ qcow2: Marking image as corrupt: Preventing invalid write 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) === Testing unallocated image header === 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 # 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" | _filter_qemu_io orig_map=$($QEMU_IMG map --output=json "$TEST_IMG") # Convert the data clusters to preallocated zero clusters diff --git a/tests/qemu-iotests/066.out b/tests/qemu-iotests/066.out index f94aa5c..81ef795 100644 --- a/tests/qemu-iotests/066.out +++ b/tests/qemu-iotests/066.out @@ -22,8 +22,8 @@ Offset Length Mapped to File === Writing to preallocated zero clusters === Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67109376 -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