From nobody Tue Feb 10 12:39:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.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 150573882687489.26898431378493; Mon, 18 Sep 2017 05:47:06 -0700 (PDT) Received: from localhost ([::1]:36409 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dtvS5-0006VO-VY for importer@patchew.org; Mon, 18 Sep 2017 08:47:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33482) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dtvOI-0003UV-7X for qemu-devel@nongnu.org; Mon, 18 Sep 2017 08:43:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dtvOD-0003Tx-5b for qemu-devel@nongnu.org; Mon, 18 Sep 2017 08:43:10 -0400 Received: from mail-eopbgr00136.outbound.protection.outlook.com ([40.107.0.136]:6071 helo=EUR02-AM5-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 1dtvNz-0003Gr-VJ; Mon, 18 Sep 2017 08:42:52 -0400 Received: from pavelb-Z68P-DS3.sw.ru (195.214.232.6) by DB6PR0802MB2549.eurprd08.prod.outlook.com (2603:10a6:4:a1::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.35.12; Mon, 18 Sep 2017 12:42:47 +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=FWGUUX/4DpwZw9u+hxmAJ/FaWjFDKdEL878GQWuOznY=; b=Jsbgrqq32ZdJuxJOwPvNbDobYWPD2+I9ReE53GcbwEVMhRbbL+PflJO1wzvN8E4WpAE94KPcMAGlrc/59MH54xfs9fJcwYakECwRkKsAQ3R0I9hkEXUAi4URvD/4qbKlThy2UmLpDlQMKcNq2HN6IS2xge/pFeiA9kBoq2Q0sdc= 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: Mon, 18 Sep 2017 15:42:27 +0300 Message-Id: <20170918124230.8152-2-pbutsykin@virtuozzo.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170918124230.8152-1-pbutsykin@virtuozzo.com> References: <20170918124230.8152-1-pbutsykin@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR0202CA0006.eurprd02.prod.outlook.com (2603:10a6:4:29::16) To DB6PR0802MB2549.eurprd08.prod.outlook.com (2603:10a6:4:a1::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 65e9f52c-e9cd-40fd-e273-08d4fe92c490 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:DB6PR0802MB2549; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2549; 3:EoJjZSwDr5NpRtkHvYeWx24DwZ/yynSCHEhpn0MV3YR/jPhhjXASATkCvXwGiOzHgW8BPlJj3nOw40eTUBa3y3/FBIgf0e0R8yQsbCrNLtalUJFcTo7bN4G9XpE2NSz2JdTHsv+rd+ast83R1L6FdQigqWQgGM4tfpoDUvsPVNRcu9ZvTs3KWVtrGb78PTKLJFoxoIDitgwvwwAWoMjWmKcOvq2m0pKfXbj/IqfEi0zgSI4eJ0SzK8XqPzMny7T9; 25:+WkpghTk0UPaNSlsoAOVccZyjW3ANcBPRuQOrRafQb+d1AggoScvrmS+Wwp1EPX7J/8UdHUsfIs8Ext4+lrtkC19nqxYuYqrbOOTNTBIOEhaVoHzD+H0AMcMk500QLa+BBmhb+VWN+gLUf7qmX1BV8ZIIJANSQglvZSkf8zU5wb4LZVEAESnicoWeJRmy4P31FTaCyr3wX29rVpwI14iPnhvcni0DH52s9ndYD+lKo2K74vxK18B3wu1Z41BRK2k+/9bx/E5MouYjm8gmJ1dxdVOUFNy8D/fnxcVRcemNkET9RXdolhShoi99vs6TB6B/clfviWcv0TjwHoivw0jAg==; 31:ev0+oLzqwqCrmEEZkcFTbKygfOwR5CbU1EliBpg1RlhyNU80JxOtbEqnmZhE5zo4Jhp+VCTAOwJ8XY6HDWmSGRK4dI6eLqwewbFraggJjPy7y3A+dGKQ+x1wqOziRG6AIOcH1TSt9e/16axYmME/FwHw7NLIHIdfFLPMTM9CwPuAYgTqA+/QcgcLywRbh0xUelWmwtvmC3I2HGqfQTrhJBZTeGv3mnO6wGUvfmxiPiQ= X-MS-TrafficTypeDiagnostic: DB6PR0802MB2549: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2549; 20:Q5zPb/fWlALc82YKd3OiLARpi9QrIj15z1Dk9Woravn1SQj3kpFoXUtAtyan3p0LoZjGul/ThLQP1eJRNq/hVXDbOp0NRTxQpLMS+D1KGCL5D2nOjhbZm8CvRHDeof5rP9Ydf51mk4W0/XI91k6uqVj0RKQTg0BQj/OFybUt7lnj0bkmrFNRSOXfLpMDA4j6vEgr/u/GiCruWiwHzHVZfd/xaDmIXPgL+kgYqXSHVmr/Uol1oKde4cqv87i/2suigR89rA58Dyq0Jv3tyujbJSQCS3P22KPlZcFCw0ltqpxNd8y6cTAfMllQAUwxCsf+8iBFH5fpZyKYIoG2B/I6WaCQwRs6edtzn2Pwg9fnB566C4Fnj4TItLY++k2mhAV5lpV1pLbvO2YwPp2dAB7O4SeyYJHmAYf71/5ommTXDdw=; 4:yyhGLpdZrEztbv+9Gut4IqHArw8Yexye+dTo88tXZmqmGfdJn2/UQ2+4wVKoUBxvLRY1MgnV3rITu1R513X2QFu4oTSyIrOylDTa3ngukk2k/SD1WdlvBb9/mHpDkIvK05wriv3u4qiTRHZYg5dnABp3QKYNEqw/DO/xMdGS/iFvgfS83s9Esfu3LQSmZfIZL8bIMjiLX4rmTT79XShFYtCf1dEQZwIsPNsLpl8b3iG0KyRDKXmqYdtA5zGHp8sYUTwGNpnJ+WTHNAl9y2bLoFioo4HEkcYAXrXUZG+eVcU= X-Exchange-Antispam-Report-Test: UriScan:(17755550239193); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123564025)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0802MB2549; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0802MB2549; X-Forefront-PRVS: 04347F8039 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(7370300001)(4630300001)(6009001)(346002)(376002)(39830400002)(199003)(189002)(36756003)(48376002)(105586002)(50466002)(107886003)(101416001)(110136004)(53416004)(50226002)(25786009)(305945005)(7736002)(53936002)(81156014)(4326008)(81166006)(6666003)(5003940100001)(68736007)(2906002)(8676002)(6506006)(3846002)(86362001)(478600001)(6486002)(6512007)(1076002)(6116002)(50986999)(76176999)(47776003)(2950100002)(33646002)(16586007)(7350300001)(97736004)(16526017)(10056002)(106356001)(316002)(5660300001)(66066001)(69596002)(189998001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0802MB2549; H:pavelb-Z68P-DS3.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; DB6PR0802MB2549; 23:tfARpZ6AewP8WJOoYFn7362yNnbz9N2PhA2MQtz?= =?us-ascii?Q?RNerYJnNDU+pLewlPv3i0ZPnFYSov+b89YOsPUebVEcyLMNZUz+bWIRQbxKB?= =?us-ascii?Q?NHAsnq5V7H1T5s8KiSFOK06ZfSNpz3HwGx3cewdu2P29Tv9iOM42FfcP67LZ?= =?us-ascii?Q?T7EaVNcOc1/lH8h1Ko9cd8dN208xAkHwTWfV8MbdooGAYcY8B7G5haMRn6cO?= =?us-ascii?Q?uFVNVViP6iJ1Im9q7yS2hAutlTwOFsQC408xvdYaNiTeLY8jTpw6p7eyaTxy?= =?us-ascii?Q?jOQR6SXV/T6Xm5mUufj3z2wh6xzUL6mp5ZENr+K75moCjSe959+95bT3QVLQ?= =?us-ascii?Q?CddgxeiZunz+0TwrOpOqxqLPaKyU+AQsfBnpoU1bGzBsHw2/GGZrQJIrdk8C?= =?us-ascii?Q?HRqcvhGGQAIjsffHSX2xj7ZMcRw1c4o+MlIJv4tkSnmtCwgH8QQcMS6FqMkg?= =?us-ascii?Q?7qxrsHmL4/yIyfPZuOvbMliHFpOpwgJzknuabd8s9l0rmD93HRNCOswfWRIO?= =?us-ascii?Q?oAOFNmXSd0OuASkUezwIzbepmGu85CMgH1BZDF6sXGHsOE2QSDTtzA+0m5Cb?= =?us-ascii?Q?YvUM0rAm0MtuptSSKYz00c5zJNOlSYy64XDJWyD+SNujNqEd/OkJZD0VRY/k?= =?us-ascii?Q?HpOKd9jHdJ2nzjMUIDHQpGE8x2dJYmjXsYehQJGyag/xpMeWG1yM/xkeCKz1?= =?us-ascii?Q?rWdtqaKmMirTZdjVpq11AQjLhyPTiWQA395oIl7m4zg8TeSDz2gKxkUKR+Gk?= =?us-ascii?Q?fGqItyYIWiIRiocJadL7L3KPjSfv0DHdXfgbBBFpZifS63YJ5H6q/9Ft6af9?= =?us-ascii?Q?BhpyIsDNSnWEN1LZ5TkJEonUcLJJpsazCL0ABb+uVx3bzPKLVDuvEy8qMPZ2?= =?us-ascii?Q?t1oHQ0ToTpFfeYppfEAFZUBAlp8RIijcUi9uwWTTYq6e2v3S8qNo7oVJy/4i?= =?us-ascii?Q?U77OYt6rvRGimynthIwCrGs9DFSejhvLtmVNKVBwTYhQVeP9n4hSSsqquB04?= =?us-ascii?Q?pb7wDnfAXV1m9ALFwy1vf2p8Q0brgnPsXakMMd2QVIwwuGQBSHWzynvvYcBj?= =?us-ascii?Q?th0QldVw+yRnuKWU210B+aTspjhepXYAq7pY0cBvjsJGyZ605ZG2RGph42l7?= =?us-ascii?Q?v2ksKSbtRiWJTa4YGkP3Se9R4vGokKy8jLFvZ18Z+amk06rtWhr7VZVAnfrK?= =?us-ascii?Q?WQcwlj86sNzI5p8qabjr2KK/vAPq5ZJxIMzm+nOZWHZ+7aW6zpjs5fjnntUe?= =?us-ascii?Q?gqoi1lgsEIyVFHfUR6cI=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2549; 6:upyYm1s9IqzUBVDW9BuvbYOjOwvzoLA4tIGX8Jab+z3WdG65r4hpHZWXED76+/cp9u/pO+GJHDE7iZkRZQRaXLVNbKVa4QCIIO/7g3GtEdzXVjnPAWHvPaMPip8QPZvV9SFhF2YwAUWQXZkkqi71Fq8J5MzQ946OMq12UaWkkhafI+9XwjSe4TZDpO0kUOKd+/m4tmoeao/mX601mEI8y7hkwk8mZXVOUMTCXdITTpbgBwERKJSvwu7nPJwN9Fr3KsMOrCQ9jggsS4Xdi3l9Zzxx3jVyPvh/mR6hQLNtyY2cEZbfys6VEPm+0WBbvBUnRgo0GoSEtRWbEUzn6/T+cQ==; 5:GkfIJJeKZIBb2sHOKMOk5chL/DMMasj9reYL6oTCpC1dSBbgzR0oLJIiNufT14C6YrhxL8+P8cxKtR9BA1Uen0p49RUNUm5SXM6rrOg9JpHWD7b0TCJ6RhQL404aNIiGigVbSZuJydUX5YFAuV9y9w==; 24:N4wZD62jKJCBhbTIqoYVePHFQMEJpl4M+hCRBfbILvryuDkSSMdHOYO3JTdhnsk2I2BLLTsi0RwSf5UBhixjaHar2siQv0zmIOl4FC+F3G4=; 7:WZzWT325J3bDHEdmJ0v5aaLLKN7ae80K4A+ae8OrjMt78R1Kq4NXGnVIIjesVTV0KUSq3ACIq9swBeDh2SGhqPHvJJ+JweYzIfRQf55NMO3qQSkwBi0NW8nrTJ/jzqphvSuZcG4TzmmNe0PNfc3CkrQeuOmlUTeGnbp5mNsD9757fS9d4BGfVEV1wAlFCAVgGS5b4DDvwVitzZojvF/mbIPJJICY4l1q81ZUUlv9QIU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2549; 20:RxGsr2KkQpmfTYwZha9WOy2w3Z3eQYqA9iNj9fcqdqW1DVOk3NGVZCbFX/RxjYPVoWbOWNYsUlvFC5PNP/MOb+rcfXlMQ9v6CiX+6UNkKD7b3WNLmMuiFxwEE/uHyV8BgjDPDbzuvTwqi3QLbqAwmFaQVzgmAIwhxwndci4FbGc= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2017 12:42:47.4936 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2549 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.0.136 Subject: [Qemu-devel] [PATCH v8 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, jsnow@redhat.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 is additional precaution against data loss. Perhaps in the future = the operation shrink without this flag will be blocked for all formats, but for= now we need to maintain compatibility with raw. Signed-off-by: Pavel Butsykin Reviewed-by: Max Reitz Reviewed-by: John Snow --- qemu-img-cmds.hx | 4 ++-- qemu-img.c | 23 +++++++++++++++++++++++ qemu-img.texi | 6 +++++- tests/qemu-iotests/102 | 4 ++-- tests/qemu-iotests/106 | 2 +- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx index b47d409665..2fe31893cf 100644 --- a/qemu-img-cmds.hx +++ b/qemu-img-cmds.hx @@ -89,9 +89,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 STEXI diff --git a/qemu-img.c b/qemu-img.c index 56ef49e214..b7b2386cbd 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -65,6 +65,7 @@ enum { OPTION_TARGET_IMAGE_OPTS =3D 263, OPTION_SIZE =3D 264, OPTION_PREALLOCATION =3D 265, + OPTION_SHRINK =3D 266, }; =20 typedef enum OutputFormat { @@ -3437,6 +3438,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. */ @@ -3455,6 +3457,7 @@ static int img_resize(int argc, char **argv) {"object", required_argument, 0, OPTION_OBJECT}, {"image-opts", no_argument, 0, OPTION_IMAGE_OPTS}, {"preallocation", required_argument, 0, OPTION_PREALLOCATION}, + {"shrink", no_argument, 0, OPTION_SHRINK}, {0, 0, 0, 0} }; c =3D getopt_long(argc, argv, ":f:hq", @@ -3498,6 +3501,9 @@ static int img_resize(int argc, char **argv) return 1; } break; + case OPTION_SHRINK: + shrink =3D true; + break; } } if (optind !=3D argc - 1) { @@ -3571,6 +3577,23 @@ static int img_resize(int argc, char **argv) goto out; } =20 + if (total_size < current_size && !shrink) { + warn_report("Shrinking an image will delete all data beyond the " + "shrunken image's end. Before performing such an " + "operation, make sure there is no important data there= ."); + + if (g_strcmp0(bdrv_get_format_name(blk_bs(blk)), "raw") !=3D 0) { + error_report( + "Use the --shrink option to perform a shrink operation."); + ret =3D -1; + goto out; + } else { + warn_report("Using the --shrink option will suppress this mess= age." + "Note that future versions of qemu-img may refuse = to " + "shrink images without this option."); + } + } + ret =3D blk_truncate(blk, total_size, prealloc, &err); if (!ret) { qprintf(quiet, "Image resized.\n"); diff --git a/qemu-img.texi b/qemu-img.texi index 72dabd6b3e..ea5d04b873 100644 --- a/qemu-img.texi +++ b/qemu-img.texi @@ -536,7 +536,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 [--preallocation=3D@var{prealloc}] @var{filename} [+ | -]@var= {size} +@item resize [--shrink] [--preallocation=3D@var{prealloc}] @var{filename} = [+ | -]@var{size} =20 Change the disk image as if it had been created with @var{size}. =20 @@ -544,6 +544,10 @@ 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 part= ition sizes accordingly. Failure to do so will result in data loss! =20 +When shrinking images, the @code{--shrink} option must be given. This info= rms +qemu-img that the user acknowledges all loss of data beyond the truncated +image's end. + 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/' diff --git a/tests/qemu-iotests/106 b/tests/qemu-iotests/106 index 32649578fb..bfe71f4e60 100755 --- a/tests/qemu-iotests/106 +++ b/tests/qemu-iotests/106 @@ -83,7 +83,7 @@ echo '=3D=3D=3D Testing image shrinking =3D=3D=3D' for growth_mode in falloc full off; do echo echo "--- growth_mode=3D$growth_mode ---" - $QEMU_IMG resize -f "$IMGFMT" --preallocation=3D$growth_mode "$TEST_IM= G" -${GROWTH_SIZE}K + $QEMU_IMG resize -f "$IMGFMT" --shrink --preallocation=3D$growth_mode = "$TEST_IMG" -${GROWTH_SIZE}K done =20 # success, all done --=20 2.14.1