From patchwork Tue Jun 13 12:16:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Butsykin X-Patchwork-Id: 9783749 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 5CF65602DC for ; Tue, 13 Jun 2017 12:21:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4F453286C4 for ; Tue, 13 Jun 2017 12:21:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 43B16286DB; Tue, 13 Jun 2017 12:21:14 +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 7B432286C4 for ; Tue, 13 Jun 2017 12:21:13 +0000 (UTC) Received: from localhost ([::1]:43008 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKkoq-0002DD-9L for patchwork-qemu-devel@patchwork.kernel.org; Tue, 13 Jun 2017 08:21:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60604) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKkm6-0000qV-BA for qemu-devel@nongnu.org; Tue, 13 Jun 2017 08:18:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKkm0-00071O-0P for qemu-devel@nongnu.org; Tue, 13 Jun 2017 08:18:22 -0400 Received: from mail-he1eur01on0121.outbound.protection.outlook.com ([104.47.0.121]:46144 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 1dKklu-0006yS-12; Tue, 13 Jun 2017 08:18:10 -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=HfvW5KQK4SdDgakVf7zK0PcQ1GFdOi/mjJBKPN+Fe7g=; b=XBf2SxB0b8LQNw092TT/zsmVVJuvQIk//aiiIwC3mzhT7uXEDqBimUsNy8lPyHf/FkvA7Iun6D9yxFH4ymmFamrQxZbA7gTPb5doSLxY1u1RBmc135X65EJNgoqvH2Mrxqtxb70YSPJNGbgfYPCe8pLYFI+7Uho9EEk7UTvq5E4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=pbutsykin@virtuozzo.com; Received: from pavelb-Z68P-DS3.sw.ru (195.214.232.6) by HE1PR0802MB2555.eurprd08.prod.outlook.com (2603:10a6:3:e1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Tue, 13 Jun 2017 12:18:01 +0000 From: Pavel Butsykin To: qemu-block@nongnu.org, qemu-devel@nongnu.org Date: Tue, 13 Jun 2017 15:16:36 +0300 Message-Id: <20170613121639.17853-2-pbutsykin@virtuozzo.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170613121639.17853-1-pbutsykin@virtuozzo.com> References: <20170613121639.17853-1-pbutsykin@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HK2PR02CA0136.apcprd02.prod.outlook.com (2603:1096:202:16::20) To HE1PR0802MB2555.eurprd08.prod.outlook.com (2603:10a6:3:e1::20) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0802MB2555: X-MS-Office365-Filtering-Correlation-Id: 8a97e3ed-a887-4120-adb1-08d4b2563f78 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:HE1PR0802MB2555; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 3:1dFZgQbyINtuUp5EWJjvNY+64r6/InaTNAlWtuqr+rErSfDvkZaZ7IiPwctXOaYRpQKFejTYuhGAeJ7v3vXe2SrDcUf5+GgLcXgkoAMZB308BhgD2WGF5iWJ2cECOhimT38cW6WeNFYa2vaOyW8uK7iK9lbAmZ+ocyMRBigr9Vhl6vWAMQi+9CsumYXdrM3owfF9WjvnN55rbbnlru/4wcVtybV9i3mhioURXoISzg5X5lSTqqg9+yZSZZ94q6egAS09r2kaW3zHl6WNRo6bWqd2PZgQbT95mFHUqYvfqc53td7qT1UKnpvWHms6TwNtRsgx7rCHHIT/NujaxGTVeQ==; 25:lRpnf8uylcRWfazWXIeJCKW7bpd7cDG8x3ER49BgkCSESHzf9jac7+DJHmqUcEpWa7YqR4Y3t/kZMbWxxAITZqJI2JUwShYNLXdOqJLr3cPKVrOhW+Us4FghLcjdjviO7GVi1FCy11mf1gChAbk22NOFd8d4+XjTyZxBmLc2gaXeulzeRxlljzlHCkkIKkN13G4UWghMYNnIZzzTUj7X+lN9crcv5DojYFaFzV2maNvQThjGbfkiQ7MYahIAoaPPT2ggsD3wfOKYu3QC4n9HCTbDQmdWG6z7P96zrEgmIBa2uWf8FGj8fWL4DRQeDp4s76+gTDro7I+GlgPoAaNl5+KQCaqlbZujTtowvjQgYsaD/OAk30pGN/mwtgEPH2MnZd2vEu3DOD4i3ZudIoi5cU21K7OkgR+0DFZdOqgUiDEkMZo//sZ8uSwNZl1mIYfY6yBSt+ydI/yaJ6FzVbZixVF+Zlv2hPQ9cvKqx1Ou42k= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 31:ImUXQLKx4VwizO5yyq65+yinfohTxUi5d77zLcRl3EXDjFl91jASTua8rOWrYeaiykkTaj3RTp3LGkryodC/D4KVQgZwbP9iQZS4Tqtgllmx2CHMcfJWTkrKkUxxpNt0UmNWxUwqasWoxAeA2+ccriOZ3HpE0CPyLM6LabuZ/okd1iaiiXcMHSh6z97P/3ThdQFtCx9aBkbzm9IM77tU0Kkt8Ta4gyV6d6mOjouGS+M=; 20:P5ApJsqeudBfdNn33N4g+WWcWRgB355vZIaa1PeaBPIhKeGIcXqO0MNzLbUWgE23Ba7QG7jtRvC3JI+Yi4mFCujQWGgpoh1S54/JpNT2ecmvE083WDNXmxWCNqQ1faJlPOTnUPSqKpDUlixWUrsscGYMBH92lowulx5o50zyZLUwg7bzqaTAgv7jtBoeyO+5S2GZtd5hbfPj5hRI0e/oTlX4Mlkz5Hmn9Xf1BAvVkhWWrKCopxQrCoZgeInQu+hEADhzbbqNtZj1tpOADi0i6TiQhYKsMgIXGQkUHJyBU4LQSOMsmzJFHJ8kxhOxykkW63LfXIur5LkmpdjW2F6vbCnCrcbb4Jop5oSVZ1J11bPbStbjE4jEPsduqF2IFKG1bL0bFbAy17zfNjLE4fNPbasgeUFI7CoHVEOlxHOsVUk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0802MB2555; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0802MB2555; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2555; 4:tsbgIuFUm6nQQqF3jf95CNGjm85Pxs0al083C8Lw?= =?us-ascii?Q?rYqiwjHR0bvVqF59yvS06yjKVpsUScVcFRN6V74pIa1l57SGrfeR+eG6hTa3?= =?us-ascii?Q?bD2b6e6Fb/v3DjDhywJJKC5ITke5NFiJx7Pjy1YyHAc0caK0MliyI5iripic?= =?us-ascii?Q?1QQCQvnv6GIUxfvukORnmsx0nW+4Caq/cPnsXyqpo9k4mYSRlENZJO/XQzVr?= =?us-ascii?Q?iEMJVTb9YLdJaYvp5sidKXS4rcnJvzYK/GmpJ9F5IpBLsBHmduB9IYIDh3jf?= =?us-ascii?Q?x8v98i3Of2xt1y5MSuAJ93XN7XAyO5X29/XNEW7DVTWPNPqulC0fPzEFro9a?= =?us-ascii?Q?ltmFMgopSRYSua18vH33VbyhMTLsuUUkXl5ajW73IQn88mL6SiL7elS5xBCY?= =?us-ascii?Q?OtaStg5hxzD3MfdflsU9XvwXI7dDYD64S490W3dY20PvFelKsVrapfJ7y1aA?= =?us-ascii?Q?S6iYznJcLzKQLL98Q7DHL2eBRuFCN5y6umHVNyf72ue9CtJZ9mbSs3bFDqLi?= =?us-ascii?Q?O8gfOVgAxvJic6sSELzpmG0+LP2yQnQ06b+hmQLFGjE/obN82rE6lNu+6s/s?= =?us-ascii?Q?L6yIsNk3jlU/ip6H4MDA2mUmBWpTjxNsOcmB3L56O6gf7Skp9icUdsSznq7e?= =?us-ascii?Q?bFmX5ISTqee0iiVzfrs2hVOlOksYmVufpRQ/S7adMb5Kb1SWTNf89yjeHSm6?= =?us-ascii?Q?F6sl68gtQWoKvyvUqXSBr6dD/ferPnBkOA8c/sDvn5bW2pcEY8KzTdfP/iTO?= =?us-ascii?Q?2ma5VxsvtSRA8Un/Cs/+iXjRjvQ/KmXEGCqkGIxd6AJbN5pKGsSazD2Ycs/8?= =?us-ascii?Q?R8i1ngCMOj2ZUk7MNhT4JEaLQDsrG7zC/5y5n0c7CAaKHHh3V7Lc3GIsHbeC?= =?us-ascii?Q?eU6nvfA9QTAcaZh89yMawavMAmwk77xmokPYM7L37bnlqO2GC36oz2Y7w1b6?= =?us-ascii?Q?/GAQ5FG76fHTLA5tuN+18HJf78WLE8cPujcN/PU+q71vCBF3HcK0nuiytHwA?= =?us-ascii?Q?p45J//y1dCUmkaE/q4xRoWsWXIaUmNGGCVK2kYb+iy0e7BfoTcledjciQ/u3?= =?us-ascii?Q?6LUZYse/oXpFMcx8WgdZFL5t4iiRixEkGeBS5lsgttGfGOAs5+eiYRVk+lfG?= =?us-ascii?Q?V4lzJKTKgdj4Xolz62hijReRTZ+EFgmnSszQy1r9XGKVr96MRaKUkn+8pDoK?= =?us-ascii?Q?JHSzlrjNubG3EPE=3D?= X-Forefront-PRVS: 0337AFFE9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39450400003)(39400400002)(39410400002)(39830400002)(189002)(199003)(6506006)(25786009)(53936002)(50226002)(107886003)(110136004)(4326008)(53416004)(42186005)(6512007)(33646002)(6486002)(106356001)(38730400002)(5660300001)(105586002)(50466002)(5003940100001)(101416001)(305945005)(48376002)(69596002)(81156014)(189998001)(47776003)(66066001)(8676002)(81166006)(10056002)(6116002)(36756003)(3846002)(97736004)(6666003)(68736007)(575784001)(86362001)(1076002)(50986999)(76176999)(2950100002)(478600001)(2906002)(7736002); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0802MB2555; H:pavelb-Z68P-DS3.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; HE1PR0802MB2555; 23:x6VfVT+zACpGJgKGRY0YPpXNWd4W1vFapalzkng?= =?us-ascii?Q?MAxYYvPUYxM3YTpN/ow3xHOZqPc4hTiBOsol36W0Y0o1c5oOkwT06806ZMUe?= =?us-ascii?Q?z5SswYMCgNuRlAWs6IzVSKuw8+L5+rkTnxN4Y8Z+PzQizKF5kIZ/6A1H58vx?= =?us-ascii?Q?YaOfEnyhQrgLC4oXobxGGmOlNf6uhbl7HvDKa/3mB9tdG+oX6xY2J4uBwRAD?= =?us-ascii?Q?qpA5tQvJhHKhKbABRa4BdhlxOZh0u6mJrNr2vyAH7BayRqMYC2ToltZSbAaj?= =?us-ascii?Q?V66Q1Qooqagfql4BOEtuLzVYF91xuShpCTGUC3thBdIiOEJHhs9O+Q8IYsjj?= =?us-ascii?Q?GfMA/6JpM04+d37bk4arkBN2djcou9pQ5qhuL0xr3qNfWtqSSoc+qmPIbH5u?= =?us-ascii?Q?ShBQh35RmJFkNksAIoF6c+EPlx70iQfNGw28bdWJqvrD0i2G2qzMBms9c1PW?= =?us-ascii?Q?uRKV11Qn46igeNu9qX0vz+Isc3s8eUNR233wTRomjpRuH4oIFrP8iuax2kh5?= =?us-ascii?Q?4tSpZM/eUiNHWHNiZjDRUZIrDbDIaUwUmfNTOBgMhp65JGQqVtS76ICa0m9E?= =?us-ascii?Q?bcQYOd4v9nveGbVmzJJNNyzwFv44FJ5eWQ/vO3FxEea+Ml7kYR2nz675vPVH?= =?us-ascii?Q?KimvoEL/DXzerc7hT37/byFz1eNzzXF8rv6mqw3EDRql4uV1vdE5VwQDNYgR?= =?us-ascii?Q?lSOC1h1vi0ndekpLxZz7I9sqFxGQorrOLKL5JNWoWBGz+EEvZOixYGp1y/xE?= =?us-ascii?Q?sMslTLpVoP1sHDOesee6eUMEEuoDczwiTG8DAqlcAnRAe6duFo+a7PR+0c21?= =?us-ascii?Q?OYv2KXRMA4EeU8Ic8d/2he0B+pMh7MJGIBY0gV3B1RMFxZFNqxWF2ri+XzQK?= =?us-ascii?Q?00xwZWr1o3Ayme4umAmUZQdJ5QEosyzVraXLPG7z8gjS/PR7fYrzO6ONPEY2?= =?us-ascii?Q?2X/QDiuaWG/RAPOJHJ9yBJltAnLIqpQz808bWtTF8ytVHszyUzPD0tB1ekFg?= =?us-ascii?Q?QmTBbPniuwRgscE8IWdZTBhw794o0On73iwHl88jwVcd9+ve1mG4X8mJMDcb?= =?us-ascii?Q?7ljp8rPzgFzyihZw63mwOiAYUY8eHincriEgqjJBDe2HsvVN3fRXXnptZVVg?= =?us-ascii?Q?vkGaqsj1BbG05S4Z+wTBG1/XW9fuFyymbpvQFQS5fKLzj1xXl14U70+0tCXT?= =?us-ascii?Q?tkdA5ilDi6WZIwLpFPRez3Dg5O5H0kN3JH9QCzPdVRzT1mYF1/H2Yr8TGers?= =?us-ascii?Q?2W4FWk2NjQA5Ec+idJffkHDmFbvQmv5WtzrCMrerA?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 6:iv23ohSAsl0jH1SJKmxrEh04M1zSIUnNy4LRh3wWDifk5VyZj9EBpuyogEXOEYExEbgmBQPgmeQUDbKWFqKGWIIc1BvnobXteHIxcclfYFZyy8hLiv0ETE9NV40a/Y3CcOtxQNbZWHnD3WU4k9t73ez+EdPD0xg55l4ehji3vr5w7ug6/CDolJ/GdIh8WtGNSrda9p4x8Mx5Tmgg3Tz5uVxGCHljPyt28UTKL1onbjCQ8InyiwNC/R5BrOgg9yYSfkvPjuL/YRBG8cYLpC9+jB2FtG/2oW+rtoc9WeviBlcUq04Rcq4h2JzCfM+GVn+dCxafpZxPmXEjrYNxIFC4W+j7R/D6nxDXFEgAp0QZSr9So4V2wnuZlcCQit/dtwLjebPxoumXiZ/+P59/hRXzRz0SvqOtlBSjq6meFawpoiA4/IrmvhAUAj6yOMmHSuxjnTtQT02rAK2gI5XPsf+desvx/V+XzmyatrHMbNU6wiRToFbzAt9qBQG09u6hl8Pv1QigTcKR6VP/BvKnx39Pcg== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 5:rEFPq7xrv9Qot2h+lanlm1/wSo5gLHd0T6dNR0J3xkIk+ZFmpaXV3F3czNAXPg4opnniGoW611HKWmOJnidE62VIuTa3vjItQq7CFgLub+lAlSva/RgzP+hcekJZ2T2MJVAkLBGoUTY2iQiSlS+NBAHyM5WmoDRxHJu6wgE+JeoQf+Jni2Zzv39VsmxbexnfX4lXqagNQDJ+b0HoU5CIYYuYDPeXX3KHi/bTcA6jNggSz8Nadwjp6IdbY36yBoK/liAR7FTcsxz/I79vVKQh4K3QKTjYIVJG5sDA35CBJ6qb+v7fNb8kuBOO236J+O9AHwbQ67IBqx+giSZ77YmrKK+xWzWbhMB8qwUPGTAb+hL8k+DD/EqTMTkN72XMwaIPHbDzYv3+qlzTfz2wZu7hEE90EIAip6/Y8E6sJtFTsgIhxZBiqzzXL3P8+hvPhXsZq74f4cN12RiQ9v2J0YE91NIFWqCK7riCMVt66B5Qb7sWmNnlf9ECOjT9U9VxDgDU; 24:NWvCgIrNmAzWbfVXdYPYuAoP0zkgw1PxK3gfaB86qEzldhEnpGMHA7bejMUqrPkYQsvOs+S+bHCnODTqW6lQd4A9A7N3ogedkrisPYhJPag= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 7:Skiw9xiC//CQ61y+W24k2Nt2hmia8z3VCaMkBc0GC+oQ9i+te8YQHQs1o3NYbJSq+sLb9av+53nWjeDZgHLlTejgMfNKgj0fZYMoWzO2YLbq6Thca1H1bjbDtQLI4C+04F2DnPcQIJBkyN9BCjtbZ8OoINBJB/nthxlLJSTNdwFtPpJ11UlkQmcDHiM1gAWIoArDhkTuXIdcZLCKk+B9K84qoGtvcR/XukjicRCnZ1na61DaDTicCy68auXyLHuRxLZYgiIGgkCcvxztAB0HTV3XZMLsmD/Nid1j6yQyF371EPZXtb+dCX4onsQ9Odo4EhrHtbD/L1SU287/NdXBYg==; 20:+xyE46NA8Wpn5QaPMOXp3bEGCsD/skkw0SkF2KNC5S/dwoFpLlz85rat9zCTO/NSWiB7QRFyT87q52cSrZza5omjD1SkXEDYTq3xDR17xnEsU5KM67Gf0hhS5Gg/bFQEMPzahw1t6POB69jFq0ZCi3QyM0ho5JeF4T2yiJqKP/s= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jun 2017 12:18:01.5513 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2555 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.0.121 Subject: [Qemu-devel] [PATCH v2 1/4] qemu-img: add --shrink flag for resize 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 The flag as additional precaution of data loss. Perhaps in the future the operation shrink without this flag will be banned, but while we need to maintain compatibility. Signed-off-by: Pavel Butsykin --- qemu-img-cmds.hx | 4 ++-- qemu-img.c | 15 +++++++++++++++ qemu-img.texi | 5 ++++- tests/qemu-iotests/102 | 4 ++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx index a39fcdba71..3b2eab9d20 100644 --- a/qemu-img-cmds.hx +++ b/qemu-img-cmds.hx @@ -76,9 +76,9 @@ STEXI ETEXI DEF("resize", img_resize, - "resize [--object objectdef] [--image-opts] [-q] filename [+ | -]size") + "resize [--object objectdef] [--image-opts] [-q] [--shrink] filename [+ | -]size") STEXI -@item resize [--object @var{objectdef}] [--image-opts] [-q] @var{filename} [+ | -]@var{size} +@item resize [--object @var{objectdef}] [--image-opts] [-q] [--shrink] @var{filename} [+ | -]@var{size} ETEXI DEF("amend", img_amend, diff --git a/qemu-img.c b/qemu-img.c index 0ad698d7f1..bfe5f61b0b 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -61,6 +61,7 @@ enum { OPTION_FLUSH_INTERVAL = 261, OPTION_NO_DRAIN = 262, OPTION_TARGET_IMAGE_OPTS = 263, + OPTION_SHRINK = 264, }; typedef enum OutputFormat { @@ -3452,6 +3453,7 @@ static int img_resize(int argc, char **argv) }, }; bool image_opts = false; + bool shrink = false; /* Remove size from argv manually so that negative numbers are not treated * as options by getopt. */ @@ -3469,6 +3471,7 @@ static int img_resize(int argc, char **argv) {"help", no_argument, 0, 'h'}, {"object", required_argument, 0, OPTION_OBJECT}, {"image-opts", no_argument, 0, OPTION_IMAGE_OPTS}, + {"shrink", no_argument, 0, OPTION_SHRINK}, {0, 0, 0, 0} }; c = getopt_long(argc, argv, ":f:hq", @@ -3503,6 +3506,9 @@ static int img_resize(int argc, char **argv) case OPTION_IMAGE_OPTS: image_opts = true; break; + case OPTION_SHRINK: + shrink = true; + break; } } if (optind != argc - 1) { @@ -3562,6 +3568,15 @@ static int img_resize(int argc, char **argv) goto out; } + if (total_size < blk_getlength(blk) && !shrink) { + qprintf(quiet, "Warning: shrinking of the image can lead to data loss. " + "Before performing shrink operation you must make sure " + "that the shrink part of image doesn't contain important" + " data.\n"); + qprintf(quiet, + "If you don't want to see this message use --shrink option.\n"); + } + ret = blk_truncate(blk, total_size, &err); if (!ret) { qprintf(quiet, "Image resized.\n"); diff --git a/qemu-img.texi b/qemu-img.texi index 5b925ecf41..c2b694cd00 100644 --- a/qemu-img.texi +++ b/qemu-img.texi @@ -499,7 +499,7 @@ qemu-img rebase -b base.img diff.qcow2 At this point, @code{modified.img} can be discarded, since @code{base.img + diff.qcow2} contains the same information. -@item resize @var{filename} [+ | -]@var{size} +@item resize [--shrink] @var{filename} [+ | -]@var{size} Change the disk image as if it had been created with @var{size}. @@ -507,6 +507,9 @@ Before using this command to shrink a disk image, you MUST use file system and partitioning tools inside the VM to reduce allocated file systems and partition sizes accordingly. Failure to do so will result in data loss! +If @code{--shrink} is specified, warning about data loss doesn't print for +the shrink operation. + After using this command to grow a disk image, you must use file system and partitioning tools inside the VM to actually begin using the new space on the device. diff --git a/tests/qemu-iotests/102 b/tests/qemu-iotests/102 index 87db1bb1bf..d7ad8d9840 100755 --- a/tests/qemu-iotests/102 +++ b/tests/qemu-iotests/102 @@ -54,7 +54,7 @@ _make_test_img $IMG_SIZE $QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io # Remove data cluster from image (first cluster: image header, second: reftable, # third: refblock, fourth: L1 table, fifth: L2 table) -$QEMU_IMG resize -f raw "$TEST_IMG" $((5 * 64 * 1024)) +$QEMU_IMG resize -f raw --shrink "$TEST_IMG" $((5 * 64 * 1024)) $QEMU_IO -c map "$TEST_IMG" $QEMU_IMG map "$TEST_IMG" @@ -69,7 +69,7 @@ $QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io qemu_comm_method=monitor _launch_qemu -drive if=none,file="$TEST_IMG",id=drv0 -$QEMU_IMG resize -f raw "$TEST_IMG" $((5 * 64 * 1024)) +$QEMU_IMG resize -f raw --shrink "$TEST_IMG" $((5 * 64 * 1024)) _send_qemu_cmd $QEMU_HANDLE 'qemu-io drv0 map' 'allocated' \ | sed -e 's/^(qemu).*qemu-io drv0 map...$/(qemu) qemu-io drv0 map/'