From nobody Wed Nov 5 15:59:08 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1497356492892278.87228315375046; Tue, 13 Jun 2017 05:21:32 -0700 (PDT) Received: from localhost ([::1]:43014 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKkp7-0002dT-Gn for importer@patchew.org; Tue, 13 Jun 2017 08:21:29 -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 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 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; 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: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 =20 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] @va= r{filename} [+ | -]@var{size} ETEXI =20 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 =3D 261, OPTION_NO_DRAIN =3D 262, OPTION_TARGET_IMAGE_OPTS =3D 263, + OPTION_SHRINK =3D 264, }; =20 typedef enum OutputFormat { @@ -3452,6 +3453,7 @@ static int img_resize(int argc, char **argv) }, }; bool image_opts =3D false; + bool shrink =3D false; =20 /* Remove size from argv manually so that negative numbers are not tre= ated * 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 =3D getopt_long(argc, argv, ":f:hq", @@ -3503,6 +3506,9 @@ static int img_resize(int argc, char **argv) case OPTION_IMAGE_OPTS: image_opts =3D true; break; + case OPTION_SHRINK: + shrink =3D true; + break; } } if (optind !=3D argc - 1) { @@ -3562,6 +3568,15 @@ static int img_resize(int argc, char **argv) goto out; } =20 + if (total_size < blk_getlength(blk) && !shrink) { + qprintf(quiet, "Warning: shrinking of the image can lead to data l= oss. " + "Before performing shrink operation you must make s= ure " + "that the shrink part of image doesn't contain impo= rtant" + " data.\n"); + qprintf(quiet, + "If you don't want to see this message use --shrink option= .\n"); + } + ret =3D 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. =20 -@item resize @var{filename} [+ | -]@var{size} +@item resize [--shrink] @var{filename} [+ | -]@var{size} =20 Change the disk image as if it had been created with @var{size}. =20 @@ -507,6 +507,9 @@ Before using this command to shrink a disk image, you M= UST use file system and partitioning tools inside the VM to reduce allocated file systems and part= ition sizes accordingly. Failure to do so will result in data loss! =20 +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: ref= table, # 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)) =20 $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 =20 qemu_comm_method=3Dmonitor _launch_qemu -drive if=3Dnone,file=3D"$TEST_IMG= ",id=3Ddrv0 =20 -$QEMU_IMG resize -f raw "$TEST_IMG" $((5 * 64 * 1024)) +$QEMU_IMG resize -f raw --shrink "$TEST_IMG" $((5 * 64 * 1024)) =20 _send_qemu_cmd $QEMU_HANDLE 'qemu-io drv0 map' 'allocated' \ | sed -e 's/^(qemu).*qemu-io drv0 map...$/(qemu) qemu-io drv0 map/' --=20 2.13.0