From nobody Wed Oct 29 17:12:36 2025 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; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1524759953471225.60297208092527; Thu, 26 Apr 2018 09:25:53 -0700 (PDT) Received: from localhost ([::1]:43342 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fBjiN-0007Rs-NS for importer@patchew.org; Thu, 26 Apr 2018 12:25:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43007) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fBjd6-0003BX-0v for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:20:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fBjd3-0000dQ-Il for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:20:19 -0400 Received: from mail-he1eur01on0132.outbound.protection.outlook.com ([104.47.0.132]:43469 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 1fBjcw-0000VC-Fk; Thu, 26 Apr 2018 12:20:10 -0400 Received: from rkaganb.sw.ru (195.214.232.6) by HE1PR0801MB1980.eurprd08.prod.outlook.com (2603:10a6:3:4f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.15; Thu, 26 Apr 2018 16:20:06 +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=gLkE/FMTuvRh6xrQzX0q770NqQOLsvT9EcTxDWogBLE=; b=dzD3OZrX7y/LVYfj3iv6R4eo3XpcvG0HrHNytB5UKvGjAW2WoBhtTOvUrlHtXJWK0LYX0n/phzdCJBDrQg0RK+l0rivlBlY7WzzVq784uthN+4HhPwPaQ+LSCksGOMseFcg4DuSraIDL3QAWClnFtGiF9Hwp1wUlkxSXqViy7l8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rkagan@virtuozzo.com; From: Roman Kagan To: Kevin Wolf , Max Reitz , Markus Armbruster , qemu-block@nongnu.org, qemu-devel@nongnu.org Date: Thu, 26 Apr 2018 19:19:42 +0300 Message-Id: <20180426161958.2872-2-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180426161958.2872-1-rkagan@virtuozzo.com> References: <20180426161958.2872-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0902CA0049.eurprd09.prod.outlook.com (2603:10a6:7:15::38) To HE1PR0801MB1980.eurprd08.prod.outlook.com (2603:10a6:3:4f::22) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1980; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 3:7leqkMW4A3TkybAhII+VRSS+gHQ589c/sA185vcHS5lm6qp+anjA9Q8F1AbArzpIpIYTWmx68D9gwjWi9c0INKO4taGjz1bORKHj52YPz3CwelQvppOiBEFenoT7UUOdCCHdKVjswFv6q9/Jr+DehgOlFo+o/ppzhi5TrLPZxzGMNNxYTBEtmtYXpli2ZcLG6C7I6doeSTXu2rsChyB8NxX25Aukb8JToBe3KfmJHzvb7PvJKKKDPnjmx+F0SdID; 25:wWYo9GVAsPmNskpvQq2WnUIrjbf1rAW78z0VnV3M8QmYNsVsFoUSJsOjsmXS2KkjjJY2U+V+lC0wzfjNaSP6GY/rZNIYfIZ3UdG7M2/yaGr4BLMeB8g++wgL78zfOtpauKWdjP2je6AXKt1D7SsXra/Hh/g+5ikV/e34UoHxKne1KRi8JyBCdejJ2y0hR/2i6Hx9/9O0qx1kdVr4G3bbCycFMjW0U7l2irrUGReuYpRnuqeMpSV5XwfnXs9bUZ3MpOeKRxwQAVc3y9rklhyM3MzQeUQ12W9fnksu4W7kXIhn9nCHz7j/w/LPhY2yer3q4RgB0lI9D+zccYVRo/yLQA==; 31:tRVN1oOdPj8biQmiMO4jm4HFmkvs2awtdJ2o+25qyCxUMHsnrrhVk7v2An2rAwLsrNDblRgihdxlNeZt1/rN+c4srjUHRpwt5xGH6i4NaAatDNYtcayvSEJV6hQEH/7luKCYL1aedrU12nPqdlnmXBw8ZubrYKCTKDRKfu2zRl9Z6DK8qvTCqJPmajNrwo0G3jDIVOKHt5e7DsaMqlLU6RG1yuN4v7Kbxvk4R3Z47Ig= X-MS-TrafficTypeDiagnostic: HE1PR0801MB1980: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 20:fn/qzYY2zIUWZm2aey68xwZbva50vEHanvORmTWM4xMVxHpGSBQpW7ojkoXYnFD2rsTnwgmXy6zpwRI1CRDAL/VBsP7XTN2ScK5U8oZDLTfCmrquFSd5kI/dmAaKdiDISu/42vJC5rqvGQK3MELK5RlI/6RKvwhB9vqt4kqvSQ2T+Xqx2OocMqQnQxBFV6LlZc477TK423Df7HXlUQ5UOCOnt+83f27KjaROB8q9AiosJx3KFAQioxnuyIV61eu5tQ5k/2xCIcR2hVvgB+1Pr3ZWaxRKKYCr8q4uU4XjCBXR6daAT3NLBiDy3XB930XfzAwiCtADOBog1NyQ2L2/hkjXfWQANP95VzGATu+PnkKg7kiJIXMCoaVZbNWHp3Yz4B1E8xhNLDum1msKtk2p91KETXK1/YVduwXRTroiMkyW5hwuDKPTb52FZx/nSd9XgpjoNZ6pK6pSrGKLjtqpNfUPewmw96em3j2D2LQV5aSe3HySOFmSRDdGAote2iIb; 4:+KT/GgSBg8KTHYB+JdmPpJALx0W0od3jZBTNl9GGWwFz+m5IxXdEN69yFafs8Vd80GKp/pDPgmkQW3dq7ra0JfGi0zAQ5ww7GyfjGmQpodaECP+TK2+1L0//UK02Lsm5HK4ikr//BikIZdebCf5SBQVpRD53OiToXWrtv1nm5zmqox84VQGGCEeHe8iyM1PpQkiDzJITVdGT+2YhlgO2O3VpaOpKVG+Ng7EFp0qCpBpCjD++wP22fLFRiokA4H+5vgeoQUqDm6KAyWBPvAyK2w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231232)(944501410)(52105095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:HE1PR0801MB1980; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1980; X-Forefront-PRVS: 0654257CF5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(396003)(39850400004)(39380400002)(346002)(376002)(189003)(199004)(1076002)(106356001)(956004)(59450400001)(55236004)(53936002)(6506007)(2616005)(2906002)(110136005)(81156014)(36756003)(6116002)(97736004)(8936002)(3846002)(575784001)(86362001)(47776003)(105586002)(11346002)(50226002)(81166006)(53416004)(7736002)(305945005)(476003)(486006)(446003)(316002)(6666003)(16526019)(76176011)(15650500001)(5660300001)(8676002)(386003)(6512007)(186003)(50466002)(48376002)(16586007)(66066001)(51416003)(6486002)(26005)(52116002)(69596002)(25786009)(68736007)(478600001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1980; H:rkaganb.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; 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; HE1PR0801MB1980; 23:Loc0P17FQWxCV7Xu4eFbYtWGfNNLqhoAQlERhkf?= =?us-ascii?Q?zL19JuTMy+C6UqEc/Tlm+OTm7waQvuak0+Jns9t2mQFYhtc01fzrw+VCfeJv?= =?us-ascii?Q?M1ygwuoaFcM+BKktCpKVVVTJJT9lwI+PcCNoEpVyPf7Jj8SVdjpjQWygOg4M?= =?us-ascii?Q?WonQJSsO9R/Am7TuF/hIvXfguQZ8lWpDGsPY7HTrKIJ9SleiigJtzTlJMH9L?= =?us-ascii?Q?0rwTTJSM41cOovewTlhLJLghIJKQi8hVTKhvH7SYlMoPYHSlxc3X/VXAkT5u?= =?us-ascii?Q?t6n6wqOqun/0TVcq4hFJPr47dJFt6Y//N1Fkl+awZ3QZnFm9GQBZ+6TbkBOq?= =?us-ascii?Q?je11/YozmhZYiJ8MmpdGYZZLuji5j5VtXduep0/grplihJHfQejG3XqfX6Ym?= =?us-ascii?Q?SCOTctjUKYuuZAA15Co23ZxPtIb5hb/J+RuK1XwCG81gtXfGW+DniRqqvRqN?= =?us-ascii?Q?F6hDnNDi/gLpggAwbdLfqGZH9D/cxYQvDDrUYg0ljLlJTC/iej87pmip+hxv?= =?us-ascii?Q?eQLDPjoFiiCIS6KeKe9rzGxrbWiadjUjFyQwNMxduaobUnA+0/oZM8rsCQie?= =?us-ascii?Q?HnSjfM8YC6FxhRj1o+R6uB7E7Y5/QP9sROwgfEJZGSdN8C7IZh4Kwcjf4kWM?= =?us-ascii?Q?me7KkQ8a6FP84/EYcYf0hyob8UIuh6KehF/8EdQZ1I8H4umk4IdarrY3rjv4?= =?us-ascii?Q?PS+Hta2gniRWcZZab3JiZIRE7S0ejrtfWxqExtYQ183KSL+cjKyBwgc2rtsV?= =?us-ascii?Q?v+4SFO+YJ5khNMT7YnWrkVbWdjO9k5K4wj67sVmNWDoNMzbWay5cxamhnPYZ?= =?us-ascii?Q?GKOXOLSEpJ08HyP/mW41ItFxYWY2FkGffd0ex3sN2xzZFmZE5aleij/MVJOx?= =?us-ascii?Q?Jo7ubBaNCFZWafHmSMBs0wGN3CjiLFzLfEIh9SPlzXp/mJTyNTjaTpsH/ZcR?= =?us-ascii?Q?cUW/yzXiSBYjG4HPztgPLnt90o2gRrVkyCZGme5TgM5XOB9fzZcSPlYkhXr3?= =?us-ascii?Q?XeQqaYK3ZIU6sEkwxWYvVJ3az4EPhFiV8qP334TCHOFRTiCTkp48Jp8RZ1q0?= =?us-ascii?Q?kZdqeh7OZV4uqch7HEMeA1MKUt6jxEED/LwRFkYmceS8AGrf1yW0TfOP5V9b?= =?us-ascii?Q?2Ca5uDxYtDJ3Ye6CIo8Mxd/9epgzqjG5AyFhk144HTE761yg1g6bNqBEFBvq?= =?us-ascii?Q?b1O8EraKvXMcrsTE6YdxVZZlAbE83zGZc/IdkwIOtrc0YH4y19JW7krcRG5G?= =?us-ascii?Q?9GnuwdMGKS11pcV/0vIjch26QyaH4E/H2yz38EwLxZXRojnYZqjtJk4RzCR3?= =?us-ascii?Q?x8VNSBiS77RF01/1pwu2U9Wk=3D?= X-Microsoft-Antispam-Message-Info: 4H7gAYHgOVizQ2f9pwWHWTnYKuyLlb5bWzDYdq7a+jFXIUvNS5jNHlQonV1OGGU0M4qsDFBbzeqlJHkL3d7TIZl2V3/xhG6GsdVoWYTo0JnorRo1Yi/9HGbUDChlbCpYazUdCGtJ4TVp9tnUU2pv2JchXU2qzlswXHsWpmoAmS26wmlNlwJLKScchsJ/8I42 X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 6:GCM1iWGI+Gtf8MIktwNAVp6bWEh+/NdSjEeXy0hyXn++//1U1k4NOrBppAoBDbjezThftM+7sUzZpE9yGbl1X/XF9H3kujEWj5OBHqVcm4oNUH8u8lGkqn1LyvkwcVbfFIyPtfJRqbq3Umq+pfXWbhBjgz6U3veMc+mbRBMwQkgcsvVi7MTFgZPawzBid7mmDNMb6YVhjp5/OatD3PPnjGlZoTgp4olBsSm4fLKk/vv/NWsyrg3GVZq9o5NF8pM8HJK+id55DsGcvwgW9I85j9+ZcQJ8iK/l9QnLCRDEG7SAAxbTw8ZH+13lm2/hmCiCOE/JfArkjrEhoEGSk8Fi4MXO5Ne03ae1h3G4Ek2mLff+XH+XzWxVB+jna3ER85dWGXlawdG4jIGK3l253+VStFbZb6ZX7QvTU1V3dM4ITCacTK2tKLjqcHw/tEnkBzyytQ5+73jO6M2YjZnBuAxHfw==; 5:4q/8tW8VBQatZQEfV6TCJsONjj7EYo7QdI/fBdav7XKKpvVjpulIYNDvsNMgr9uuLFOKV+a2TA9KCHeRMaFCTmssFCkVKAmEp0GBJ3X+xflYWiw9THVvq8i/LzbU8ndtUa4BCtWfKwSJSCcWSSvOnrfIEMHhTGDekenhD6m8RVM=; 24:Uo8UeygtiVbnHoTKnZnOHBboHiXNWMyx2oelei6wgkK9XvZEPVvGEsIad2rsGhrOuAm373c5tWPrPVmOD0amvBX7YaV/z/lCxUqyiqjeCzc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 7:+6OxvHW+5nhrN9BsnjMnbfgEB3W83LpDz4/uro7r8VFRTCOj+6GzG8ARRQm+A+Ff1z3xFldRFuQ4socrY1gzWbJfPKYPR6JZhzxTLGjZG6IrBJnlKfrxFfQ3ERaR3i1Qdxiyqg5yesfb2YGg8N3CJQYsHwFdtjwyXWI3hYKzpJXP5JA0ShpWHbMZSAKktgEBD5i1midcC8C32eeXYovi7YWD0iPI0na6dqGR1NLxeFLBfSaffWIP4j1cVqJPJxm3; 20:tz2pC5zgJdGl/R21/3aZDxpknTuHNztj5tEQ0guVRnQZsOn/MQ2YewT0skygWD3Zw2/fNwA1RZxUsr4Ww8uN+0RYyhDC1DtbtPyddZehfVnUqXsKkpZaoH/mMBONa5cZy1EvFOxHk7Cp6TvBim/W8JuLhsMdILjwzm6b0erQ/xY= X-MS-Office365-Filtering-Correlation-Id: 5a00b224-1605-45de-10a4-08d5ab9192fd X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2018 16:20:06.5584 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5a00b224-1605-45de-10a4-08d5ab9192fd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1980 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.0.132 Subject: [Qemu-devel] [PATCH 01/17] block: iterate_format with account of whitelisting 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: , 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" bdrv_iterate_format (which is currently only used for printing out the formats supported by the block layer) doesn't take format whitelisting into account. As a result, QEMU lies when asked for the list of block drivers it supports with "-drive format=3D?": some of the formats there may be recognized by qemu-* tools but unusable in qemu proper. To avoid that, exclude formats that are not whitelisted from enumeration, if whitelisting is in use. Since we have separate whitelists for r/w and r/o, take this as a parameter to bdrv_iterate_format, and print two lists of supported formats (r/w and r/o) in main qemu. Signed-off-by: Roman Kagan Reviewed-by: Eric Blake Reviewed-by: Max Reitz --- include/block/block.h | 2 +- block.c | 23 +++++++++++++++++++---- blockdev.c | 4 +++- qemu-img.c | 2 +- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index cdec3639a3..e60983248f 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -429,7 +429,7 @@ void bdrv_next_cleanup(BdrvNextIterator *it); BlockDriverState *bdrv_next_monitor_owned(BlockDriverState *bs); bool bdrv_is_encrypted(BlockDriverState *bs); void bdrv_iterate_format(void (*it)(void *opaque, const char *name), - void *opaque); + void *opaque, bool read_only); const char *bdrv_get_node_name(const BlockDriverState *bs); const char *bdrv_get_device_name(const BlockDriverState *bs); const char *bdrv_get_device_or_node_name(const BlockDriverState *bs); diff --git a/block.c b/block.c index a2caadf0a0..eaa73edc79 100644 --- a/block.c +++ b/block.c @@ -371,7 +371,7 @@ BlockDriver *bdrv_find_format(const char *format_name) return bdrv_do_find_format(format_name); } =20 -int bdrv_is_whitelisted(BlockDriver *drv, bool read_only) +static int bdrv_format_is_whitelisted(const char *format_name, bool read_o= nly) { static const char *whitelist_rw[] =3D { CONFIG_BDRV_RW_WHITELIST @@ -386,13 +386,13 @@ int bdrv_is_whitelisted(BlockDriver *drv, bool read_o= nly) } =20 for (p =3D whitelist_rw; *p; p++) { - if (!strcmp(drv->format_name, *p)) { + if (!strcmp(format_name, *p)) { return 1; } } if (read_only) { for (p =3D whitelist_ro; *p; p++) { - if (!strcmp(drv->format_name, *p)) { + if (!strcmp(format_name, *p)) { return 1; } } @@ -400,6 +400,11 @@ int bdrv_is_whitelisted(BlockDriver *drv, bool read_on= ly) return 0; } =20 +int bdrv_is_whitelisted(BlockDriver *drv, bool read_only) +{ + return bdrv_format_is_whitelisted(drv->format_name, read_only); +} + bool bdrv_uses_whitelist(void) { return use_bdrv_whitelist; @@ -3886,7 +3891,7 @@ static int qsort_strcmp(const void *a, const void *b) } =20 void bdrv_iterate_format(void (*it)(void *opaque, const char *name), - void *opaque) + void *opaque, bool read_only) { BlockDriver *drv; int count =3D 0; @@ -3897,6 +3902,11 @@ void bdrv_iterate_format(void (*it)(void *opaque, co= nst char *name), if (drv->format_name) { bool found =3D false; int i =3D count; + + if (use_bdrv_whitelist && !bdrv_is_whitelisted(drv, read_only)= ) { + continue; + } + while (formats && i && !found) { found =3D !strcmp(formats[--i], drv->format_name); } @@ -3915,6 +3925,11 @@ void bdrv_iterate_format(void (*it)(void *opaque, co= nst char *name), bool found =3D false; int j =3D count; =20 + if (use_bdrv_whitelist && + !bdrv_format_is_whitelisted(format_name, read_only)) { + continue; + } + while (formats && j && !found) { found =3D !strcmp(formats[--j], format_name); } diff --git a/blockdev.c b/blockdev.c index c31bf3d98d..f43c6bcf27 100644 --- a/blockdev.c +++ b/blockdev.c @@ -530,7 +530,9 @@ static BlockBackend *blockdev_init(const char *file, QD= ict *bs_opts, if ((buf =3D qemu_opt_get(opts, "format")) !=3D NULL) { if (is_help_option(buf)) { error_printf("Supported formats:"); - bdrv_iterate_format(bdrv_format_print, NULL); + bdrv_iterate_format(bdrv_format_print, NULL, false); + error_printf("\nSupported formats (read-only):"); + bdrv_iterate_format(bdrv_format_print, NULL, true); error_printf("\n"); goto early_err; } diff --git a/qemu-img.c b/qemu-img.c index 855fa52514..a938cb253e 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -201,7 +201,7 @@ static void QEMU_NORETURN help(void) " 'skip=3DN' skip N bs-sized blocks at the start of input\n"; =20 printf("%s\nSupported formats:", help_msg); - bdrv_iterate_format(format_print, NULL); + bdrv_iterate_format(format_print, NULL, false); printf("\n\n" QEMU_HELP_BOTTOM "\n"); exit(EXIT_SUCCESS); } --=20 2.14.3