From patchwork Thu Feb 15 13:51:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873827 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Zkf01aqm"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyR055S4z9t2f for ; Fri, 16 Feb 2018 00:53:16 +1100 (AEDT) Received: from localhost ([::1]:50876 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJyM-0001rj-OR for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 08:53:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51066) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxR-0001oI-TU for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxN-0000wS-J6 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:17 -0500 Received: from mail-db5eur01on0116.outbound.protection.outlook.com ([104.47.2.116]:35200 helo=EUR01-DB5-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 1emJxN-0000ut-8w; Thu, 15 Feb 2018 08:52:13 -0500 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=RW1cGhDA2wb0ujJUU3v8nnvvV4Z7gXcxQ0u9B1P7Jgs=; b=Zkf01aqm6HfKtb6k2PsRFNZXaM0pKzKsho1b4ML7Ucfvd2t9yykj6gqWIwaq8PW0K9E21l7EdWRejMj2oN5Nggb818jiO4lKPmPu5KYDmgUlUHDdbiPjEM5Q4LwQEmz9yB2rV47oh0xWE4XGSbK55nwTv2wosryVRthvnLQgv50= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:10 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:39 +0300 Message-Id: <1518702707-7077-2-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 33b998b1-f777-480c-8cfb-08d5747b4fd3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:sHnc/m2m6WFp8FqrUH+5Q1kHL4AQhebqaePlIkUI6QRrvvYmyriJonbOs5QqMoT8YEp2eykHYvfXAr/bZQthqVykZO40oWCaH5ckM2ouai3EUJlJ1dYkid8rzMlVP0VDoEOSDP8stGuMQnv1T6oYT/7HTqMu0sgK64s1dVU2gzBweQKuMOUXH257OdBeBf4vI66B9sNY281nlhKIUFGeqXiWNHckCpDGm6fBAZbKNr0EwZQ70Fgc1rMDBQDqkvTk; 25:bgmN6M0d+X+sLslp5FsUhl9P6JxGlJCFeTPBpFSJYeaC29Zd+vOhF5j1B9q/CAjEsN9OHs9wDb91Pw/GRdImE3F93dSVVyS86y7Ma0/+SPvV/S+3TErxgJeOo4eiVBI6sWdqZy8/oaO8Lw8HdacYeHtMd/xIPC6R/EHTE0vKHvMy8gg1a/rgEy6ubAQaAa4EajVPubjWdCJfO4JOBNyX74JHTWZs/QXDRPNeaUOeDHPbYMzOH6W4bI2XEj++b3JpS33wgmjbJx7CgXxWIXHYJtV7WxyJetG9lOVFb3rOFsEItid7+rqUGzxa+Ybx/gzxvnylAf5xZQ2TzXNtjXyUUA==; 31:c96EzWBWH+Z59C7a/K3642nTWlJWUwpxlT+932SrCj2D5rYkiUsQwLU3eqYdUCvdwQhN03aDwX4+nP2GxQpn85ME/iWSpPv5V2q6/aR8CuUx5P1oA1A+ipcxCRJ2vGSzp8rXmyibqksajLxP0L2mXvxoXEG240n+mo9ZBXPhBc+Ssw8Qe6x83r9OrLm5CnztGKjT50lKnsp8KBNiMxLutRRDkluVH5JizLDfh7Up3+s= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:f7/zrmYq8k/maYarfvs34Mg8TSkWUZw17DvXiO/cRcyw/3RftnC8Rvj3tityh0Y7EX6p/gJ7YIJ1SKhJ7zJ4PO111GYr98leBh1nYIOyNKjsb5pzcr1KJubaRRStV3atZ+nMly4RgU3QsngCrD2lDUoXHbmjQnc3dXA32vGqVWZmPUuVNM1t0HPPvanqZTI6p5ejdU3gNcsFCz12Qet/kXSq24jaXmZ//gndiRHsopd2UvwovBxoDfiWx/FFqNE4GzstLEKrZY2/1hjGkTlmMBt/5XuhI/tgmcH0/gxbGo9GxEPQqBEcJQnL5idyu4JTxYyA6xhZxi5nGlTMPliww5arvIZSk3V5nZti+fmixthFggoG0JYIbhkVMqqEiykWpQvIHVoOWCjtNktttDucEcd6YozayRZD2++7+FlKklOdENuaIvwQ52HSprY1ykqZ3mY1D93Ugq4EHzGvSiTVatJpq25wPyQCxs03DcyV1n44TWID+68Y2drkJmV/IR2Y; 4:vwMOhA4xf5KEOxBhcuUV7TdR3tLYqQBR3qudh3pqmIzBgmo/1d1kvdexCWG1sHEFpTCW/WEptxC2a9A9EDJQAE07WGbPpISBbFC1fi/z7LeYwhIITOziPTLVxmVPuiVjtlNUmmwyB0dA09ZBQeQx+wwciExZOZHzROAVjjuktgmmzLPgctJrI+gQkXXRmpa+k8mO1QlwSVwZ3yu3eRGwVQNuNaZ3Z+N0tRuoSyfXf4caoZoGUxDHhiuI6BwUYnc6khRq+CgmRnPY5il/VOX4vXfhACff3qVN6dH8qzPy+QbkzOJceJHZSZ5Boj1m1QH/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(59450400001)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:WAVEWQzrrHmM2fFosi5qXJGMxUWh3hL02C6ZfRZ?= H8iehrjC+vrWBCOPLA3aYZohWZfxKSFRypl0uhCN2vP6UYmfjJW8nwm/Rce9FkY8nNm4a6KKRg7mbXVDW9LMr1eX3O1ShWFEXjilHztaAJHke/voHVRnk06pdKMFG3kYp8mmgdlrFSSoDDJ+sCKQb7SIKWvW1+Y6sfM+ilYnPNxt6M3qlX94sZVF5+9FW70J4PT9LIU56i9dSGmJhFyBzYa4yb25olmH8Lutzem5JRfry/qz/KeMokXjoUPZ9t1jVClL02rj4hBcLntAwWLygxdE8mt8iTLggYiyGF4tvcLu/qR5VMuew6/ic6IBX6L0bP7O8Y0d1JGHK8Hp2taO5pjl8GaGAOrNnwXCaJAxvkNTj4kax7lN+xxAj+ngwvx7Dc5UMWDY1acQOEY1PNnNXRdg+iieupK73rtg7/vAoqnnnpHF3QhmQXCoKebqHvjysE4/bZYK7Msz/kLQe4uw3sk4JkPIQr8i7kA+diRIRmHszH2m5jG+Wuv9emTWMh9zLvcHfvW/hrliVJI3Vn66vAOt+EDvHCV3VDAz26KOPd8+cNRUHx2qNqqwch9IXC9GO/E3sXTBgGnG17XlcQBedGU2sNvHabZYIGSZwYIyB7c9lUnXvJU/SRBQjjN/ng8COVPFC35fn398bDg9EdhhNjykJU1wMDAvUKOzTDR92vduhydUeUnZLpb0Gp9y28mZw0wKtEr8uivTfwWve/u8r/xl/WsWVbm+x0cnb2ZVuXLVh/vKdz3TdDZQ81tnO9AIsQX8fXKrO92YxJRd0R1L2kr8EeGfAW1KPHEK3BYrm88m0zBDdtuQ3DT3bTSCCgTwRZOXetxM7qIu5sN8lwf7VUtHLVjSROj7/tdn84qzDJvER1KdPgePk/w+3M8IPe9Kjq0UHLiZzhaxwsrtCekJAGr37UTrbQqhb3lnipuwk2lGAjBiB9QWJ0ACabwaSJu9qfHktPpC/GBdWYN1B6CZW9yKvCa0XGzxhmOv5G8LGOLYn2JvNDxNDCW1ovvL5eZF21IGZX68AA5bnnPmpHaYRMmQOhoF/EAs4XHU7btTojkZzwMsh4gMRXABtDbe1p6wLmCdz9M9mVS+xpf8SEpOJsFMf1PiaYdZYvNRvnUXyVj6Oi2if7mOzutbq9+W1l87UYMSM0GYYUDNNH1jsUFuyF6MxYstxw+csC1ZV/ctpPgn5vw== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:m3603ugKkemptuHYYbYi60ATZ5sxD1gHBaAJmE5MEEBid9FfXYF41UNw+VL6qpVSQI2mybIqRICHF+EmqmPLeZhHADpX7yyo1Q2GY+OPGKHBPIailRzkKevBSRf230UglaMSmpSGG8YaK5g0r/6RSXsCNJW7U3KNQHyOZ3/4ko5BIVewe6ooCGaXbcvq/qE5sJYBUHLWiAZuQGJ1y1D2Oc/jr1KoZB/Bm1vwJREOXZORGvaeZuzLP8ljXONAxeGzMh5krM8X9c5U5bAkaKuTjACwSwQJqjdCFRiSiVCckSqAMygXnBGoKOjVCqQuG60uO8Lv3MX1GAZgC1Dis0wLL14nXBJbhXBHJA7LMj21oSU=; 5:c3FPUub0Ap930MuEapE10TMnBh7USy99OjyG8WPtYBes8DJQewfN0wP3idAD4jRj1/oHVi0UqhraFYwRk6d7ZfCBjZyoF6QqyuVvRlCh5obSSQYmq19FLwhENUjU/ugqBOnSrGLatDCx9BrCsm35+xfE8ksBtsDrLKFYr2rOLWY=; 24:xi5jeV1rh+OimlUUqxWfNHoYwkCt75BCCGNX6HGiM2aPGDKAkAnYVQh+LdD90ma3Cr+JK9fSalqRkbTrm8zV2unLgWVneOkWrRj7fsCPFZ4=; 7:GsIq8b8T1HjBHrKrDxmBSXXyJ1H59ZTlJb9fKQGvQ6QJO30WqV0yPV/6RE/W+ZFg5O3PEjA/rJ+9erdKUd8H6cN61zXjRxsDInDJUyzzeNptFxdOPrTpTpRXOJKrEg7f4iKlPSuSGw3zXGpSWndL+cqycYY43VBpmgSLDAT+rU2qsgtkzLm5VydrUyjiC1mQJaiw9i3XNOYs8RDD4hp4PnKn1b2TfhwS55JJ2/3igk0R7bJEAd8oDy7U9OWTjLT/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:466C+VYtLLqU4xFLSXSoB9UAbk4ilXkxWJI3SnFVhnjS3wTx+XPqXwJhKu18dSbs03jts22TTr1WMwVMOWeFfYyVwUwnSyoRKwdiIi2yGNKBzCLj/wDUKl4hKov3RITYa+98YkqjatGYjsi9Ytl7Z5oMTNjnG+O5UxkPO1sCFNw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:10.5919 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 33b998b1-f777-480c-8cfb-08d5747b4fd3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.116 Subject: [Qemu-devel] [PATCH 1/9] nbd/server: add nbd_opt_invalid helper 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" NBD_REP_ERR_INVALID is often parameter to nbd_opt_drop and it would be used more in following patches. So, let's add a helper. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- nbd/server.c | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/nbd/server.c b/nbd/server.c index 112e3f69df..b9860a6dcf 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -218,22 +218,46 @@ nbd_negotiate_send_rep_err(NBDClient *client, uint32_t type, /* Drop remainder of the current option, and send a reply with the * given error type and message. Return -errno on read or write * failure; or 0 if connection is still live. */ -static int GCC_FMT_ATTR(4, 5) -nbd_opt_drop(NBDClient *client, uint32_t type, Error **errp, - const char *fmt, ...) +static int GCC_FMT_ATTR(4, 0) +nbd_opt_vdrop(NBDClient *client, uint32_t type, Error **errp, + const char *fmt, va_list va) { int ret = nbd_drop(client->ioc, client->optlen, errp); - va_list va; client->optlen = 0; if (!ret) { - va_start(va, fmt); ret = nbd_negotiate_send_rep_verr(client, type, errp, fmt, va); - va_end(va); } return ret; } +static int GCC_FMT_ATTR(4, 5) +nbd_opt_drop(NBDClient *client, uint32_t type, Error **errp, + const char *fmt, ...) +{ + int ret; + va_list va; + + va_start(va, fmt); + ret = nbd_opt_vdrop(client, type, errp, fmt, va); + va_end(va); + + return ret; +} + +static int GCC_FMT_ATTR(3, 4) +nbd_opt_invalid(NBDClient *client, Error **errp, const char *fmt, ...) +{ + int ret; + va_list va; + + va_start(va, fmt); + ret = nbd_opt_vdrop(client, NBD_REP_ERR_INVALID, errp, fmt, va); + va_end(va); + + return ret; +} + /* Read size bytes from the unparsed payload of the current option. * Return -errno on I/O error, 0 if option was completely handled by * sending a reply about inconsistent lengths, or 1 on success. */ @@ -241,9 +265,9 @@ static int nbd_opt_read(NBDClient *client, void *buffer, size_t size, Error **errp) { if (size > client->optlen) { - return nbd_opt_drop(client, NBD_REP_ERR_INVALID, errp, - "Inconsistent lengths in option %s", - nbd_opt_lookup(client->opt)); + return nbd_opt_invalid(client, errp, + "Inconsistent lengths in option %s", + nbd_opt_lookup(client->opt)); } client->optlen -= size; return qio_channel_read_all(client->ioc, buffer, size, errp) < 0 ? -EIO : 1; @@ -398,9 +422,8 @@ static int nbd_reject_length(NBDClient *client, bool fatal, Error **errp) int ret; assert(client->optlen); - ret = nbd_opt_drop(client, NBD_REP_ERR_INVALID, errp, - "option '%s' has unexpected length", - nbd_opt_lookup(client->opt)); + ret = nbd_opt_invalid(client, errp, "option '%s' has unexpected length", + nbd_opt_lookup(client->opt)); if (fatal && !ret) { error_setg(errp, "option '%s' has unexpected length", nbd_opt_lookup(client->opt)); @@ -438,8 +461,7 @@ static int nbd_negotiate_handle_info(NBDClient *client, uint16_t myflags, } be32_to_cpus(&namelen); if (namelen >= sizeof(name)) { - return nbd_opt_drop(client, NBD_REP_ERR_INVALID, errp, - "name too long for qemu"); + return nbd_opt_invalid(client, errp, "name too long for qemu"); } rc = nbd_opt_read(client, name, namelen, errp); if (rc <= 0) { From patchwork Thu Feb 15 13:51:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873831 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="NQyux40p"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyVR1LYgz9s7f for ; Fri, 16 Feb 2018 00:56:14 +1100 (AEDT) Received: from localhost ([::1]:50972 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emK1C-0005A7-Lt for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 08:56:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxR-0001oK-U8 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxN-0000ws-V0 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:17 -0500 Received: from mail-db5eur01on0116.outbound.protection.outlook.com ([104.47.2.116]:35200 helo=EUR01-DB5-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 1emJxN-0000ut-O3; Thu, 15 Feb 2018 08:52:13 -0500 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=vQCbcJcIJW8+0THHZAIw2oHI70/Rh9nKA3vQO4RDZ0Q=; b=NQyux40proSjxnM38FsWkwIibOkQPdNo6YmpmUqbGRzN4VlpqP+ohOC/mb2+yOChCtYyOGB2fA2PQ9ipdjaAGj+Sm9FrbFpOoSZR/GE4r49Whd4du/YWH/aXyIrKJaYuUGvi+ZY5b1PPDZIktP9YiLEmISi1PjJZzme5O8YcyDI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:11 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:40 +0300 Message-Id: <1518702707-7077-3-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d3362e1-8d2d-4616-3843-08d5747b5060 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:Qnksugbh0ab9GeVHF0Y/e76pMfqmZw9X8oTS1WX81l1Boi2nSZzXd7gLa7f6NgcMV7nxObhyFU9iEteBsqxawszeKRF/sAEgBhwQIraYfUUOwIcJI9lYtL7eveF+7dK92rxZNDMYvGVkQtGRBW1Ttw92AGltbnmyoEO4MCF4FN/ByWhU8kMqJHEjdPkQlIuKriFAqFqWTR9Un6JVSdLMCxK9lIYNe4GJo05Qj9P8YY1e5eEy4SzHYOEQHfBVweI2; 25:arsjPRt6DiU8DmozxO2ToO5W3lQZI79UNC93dv7FoELAUaZX2RIm66P5Gun7cS1u694yNglVUt6UEyfLjgw0WtljZe6CVPZC9FygLItt7YHN2EG2i3w7P7HO0SD3InvUrTOt0Dbp6L4RKBxcjjN3tgHQfDXcf/jcJDb5O49lzwjxLwhRX7uD2vqWNq8PjMJvqv1/7GMS56jJz0j2M7B5BNHU5oeExHfpx35htgUtxCWTJy133DtLEtRGMckdYdQDCu4C6pc6KZL6vDQuQM+B97L7UBGuybKQSEAC/yCXj+DOTs0nE9kePt9YJO+hi33BY+0IR3TzL0rleQRpJcvuYA==; 31:jyNPId3UhPkTVRN8hBizHx9RULtxROIAz9qDKp53a9L9LBMM3Ycx4I+vrC2YADVv/NA3wt/4+IW+W/wpNVquRprHxlMz2guEfBZ7CpgTWmqjnM57pp/jaDTt1LB4zVCp4QTYPi+e0MkyhyHoZ8Xd5GxtgoNvXqnKjyd5ABqiCkC5oXiJ9odzHExm+4vtPOx1PqS0Lseiee82iSE4pAyIjbIm3BmmJIdFosZBJMBq+D0= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:3Zhcf+vJtYt4ocZt6Ep5MkQ6Jv/VatTLtGAgVQgWtKy4M9Q2Y0xXbp4rwf6Eu6LoGkfKNgRLqVFZ5MGy42/7gN5DKzW6WutylGqSlruP51V23GtOSWYjI/p1EyQN/T+4X51p77NUsNH3SflGwySx31QoNa2b0wi2Ys58fqJIKQp1RBrlNemlBK9zu3x5wSFQ35xWq+1ms0LCUz/rjLevN3e7DZjBNlFG4s7+Uhrz2CWzgUwSwsmlKzjD8tBPl6lVmie7lryaVv1d1Zn0MM5vDP09+DBHw9bbZHOPWFPaQtfr+vPIw1CqbV95fYxnZYH0PvLOP0ZO+Q/3xdeu47bM0NYfxY8j3APYU631m9eUsVIAppoEyLYRC9wgcumr2CYR5d4PVrV80DQwon3Mz4rGdPvL3ia4/TONcq9MQSk/un/YQvj+Db6lL/gGYriohdJJbMXPIOPV9z+IdDje2lmjLSZ2oqsvkhKaQU22+N7jNmq6M2iQuxzAw+HmO6sJWFTb; 4:HLiYu7f0n8u+J9klzN15ifTqO655x2RwmdB+YIPHud6HrpKaL2aOtSy363w+Gw002C665iqWNl5n4lLwx+NOYyhc1VtVDPnTv9U+1AaQFZLVmKxYgjSPhyZjOhR8hTI3vFbT7gqKCDJ47KOqTnnKdQ1JQAIR3GOJI7YNO+aml2KfZzyDW53H0ycN/LkAp3eszhW+WJL2TIkKg2dzolFsc7RlTI0OPFozjWK7MbHFuu6WFT4NltVAgSFO64/LYPKWVRTCPhWujcdeII8Jnm/vIql6lk1diWxg3eiJiVj6QGOyVoneYus+4cHaCstgTEFT X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:rosE4a1XQiuxWhiNiofrEmReGUV3GBjpex+kKZK?= TX24fJG31H5iyeKiDxXaLRxjvlGr+KCK3aaXB3LYHjPCZrUlPc85ktv54ubTlFgPrbTBGMOsUYVRe4K9xM5k2QAGizmc+3q7NlTamNJNcNyQj48rupyBTfkhH86aDmPtMwYXVIXCx5X+diqszztDVUc+xiogORdl9FiG6FJoAfA0vbmlm0xs1w78M2RVDsmGWYgjUSLeB63u28TCTMsuNEorvhRUJ6BM5CnvxpKMaUUk3M9u+q14S2seur8C3EuJVXI8cs5wIIG1Wy8Y3X43AZ+ZeiZCZfj5RJV9OYRapXbbCUmov5Yk7hTsSqTLdeA5N5Wb+yBzkVwLWF71JbEEL46xQWIt8+o64HEdl8TmYWHxfH57Xj6RFXbCY5CNYy7Mj0e5no6Arie5VEZDpaxyy8AbHHHOlQ8B4Ig7L5N2Qf/l4JKliYapMfHhSYmEMJRobqjNy2oi6Mug9twXmg2DHnkqRDlS9A4AuxAhXB+2FX3+PLfCJY0xfPpLaMapIeZJyDTX0RtA50n/J7g8Yj91ZVcPshjdX8m2IWdAttzStN1sWESKiQmy0Fcs8ks8Dt7DOkXirZZ/1dIfuU+e3cVj0UIv9QCsc133JPE94zlRkDKWBc9qLa2ZrDSAzsS6xiRcsDWJ8e2THZn/ipEyFhGQrrP3JqiWcUFsBGC/ic1eI8FYQUXwrMq8HH0m3gIn0yTRza8kFqWFASrtPMlsBZAeBc7/W8H2/avsATkce55KqJn21QvnWI37AZYC31igcbUxMW05gtYRe1/B4UX+FhtQOLPl4E7T1TcIccRaHAt1Ntf/B1QIAuspTIhf3DF5WCuLUSi1ofYGsgBi2WGMmKSt7ZqeTU1Zr25gqugAgjNiyij/PwAqqirkFEOr/VlpvQmdMiLQmdnvRUQPXAV89aSlt4IcWNQur1GrTkLEohhfY2jkP++0KWN+NMp4Ge+9DuyNNxJII9mnvtl00JUhJFQeTVpRLIOcM0FIuAFIN38zOuZ+3ut8yEud3eh8aFXEO+EM8VJE0GLu5HtrposYQgUB12BsYVOBchB351kOdAJFga1YhWJWjdVhhGJxgFu+LsJ1oJGl0tXy718dKQ3bFJs6e4EnpzsVnLYcCrwPavPwdrhack1tra9i8FR8kxpovHOfEmGQ= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:MOogdiCstfJJHZFl4o1Uwb1jZ56quZwqcg5Eqky9jSQCHPZEbR1uTe2yS9q36COcRPN5QX8LhhPJDOmZcPxZtuECXvwQZPZIg7lQ3QIowKPb1sutk8tmOrUjzR2UjTJv0oI5RRUDb/kVAsc7lrL7sg7HzBR7/ZcuZRSSwlDcs0q7mGdW1SRh4T9cs2ZZubqXQJEH4o/VMZnaAEatZelVJGPy8J/cHqiu4uSQ07zkOrwWBY2XGxDxa9YG8vx9wufV87w+L90CPZTjl6ixic91JbYpjRHfiNSMiAnQqpSeKbZ6KHZWOPQr5nB8hCfkzl9/+g27nQXOXKpgoZbMR45e2BwhU24hkEIluwgNs57kZwc=; 5:02Wub3o6Qt3PpvgegLAp3Wcv4g44+R96OlFeDKEiGjln4CjYryABj0/5Jyj3sQEUZWCkumyNQ9wFb9R4pJENq3KqY9KkC6DqY6csSyMlwJvjL+AhR/z3egNdvgrjsgpPWH1Hi3CVqH94dIqSPurwSxmGDt74K4nyfAxmPZuUz+8=; 24:PVpRSXyzA+UkIpBQC3YW3VMTlNl85x+kw2X908mj4qLsybroia7fpcav57zC9o4wjVL4bkyksljIzJDVJqTW6bwyHBiOTHb7Qqu+PKU2NAw=; 7:qfGhZEKsVe+rgYmof8iInbfkytTBneCV6+JTkWpvLNAKqVPzg2WTRsJjyPa3AikdztbfZ/N+u+BZRDPqghRzSBdlWmw5X+r+9gWEgETpcrIe5HqYvmomBFfMlAg2fcheDPrdvu6AmDnygBYH0Y3aHwLRm/29XFbw+OBSUpl6+KBYINIPfEAHm8BQ2RT18Y8hQ6qNigsC6Dt0CKIgWYfhuqK5Cpq2HYaANZ1tWQSZw2UNuGSTFyLDEoq2TVfRGguy SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:ZVBhIU/BmdREbaSKfcyyNp34ZAaOD4V/83YrHgL4SUpVnD5dlDF+1yTPbA9E0oLa0HCUZlFd+6zMy8HGZU/vQC0Or0+3sRGSFT2gH/PiymugMxGmok/dzBnVxpBoWJZvDd3WSrbznffQEUf+AK7G2O78AQa4EIOn+gYsOmSRXnk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:11.4669 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d3362e1-8d2d-4616-3843-08d5747b5060 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.116 Subject: [Qemu-devel] [PATCH 2/9] nbd: change indenting in nbd.h 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Prepared indenting for the following patch. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index fc50003003..ef1698914b 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -128,21 +128,21 @@ typedef struct NBDStructuredError { #define NBD_FLAG_C_NO_ZEROES (1 << 1) /* End handshake without zeroes. */ /* Option requests. */ -#define NBD_OPT_EXPORT_NAME (1) -#define NBD_OPT_ABORT (2) -#define NBD_OPT_LIST (3) -/* #define NBD_OPT_PEEK_EXPORT (4) not in use */ -#define NBD_OPT_STARTTLS (5) -#define NBD_OPT_INFO (6) -#define NBD_OPT_GO (7) -#define NBD_OPT_STRUCTURED_REPLY (8) +#define NBD_OPT_EXPORT_NAME (1) +#define NBD_OPT_ABORT (2) +#define NBD_OPT_LIST (3) +/* #define NBD_OPT_PEEK_EXPORT (4) not in use */ +#define NBD_OPT_STARTTLS (5) +#define NBD_OPT_INFO (6) +#define NBD_OPT_GO (7) +#define NBD_OPT_STRUCTURED_REPLY (8) /* Option reply types. */ #define NBD_REP_ERR(value) ((UINT32_C(1) << 31) | (value)) -#define NBD_REP_ACK (1) /* Data sending finished. */ -#define NBD_REP_SERVER (2) /* Export description. */ -#define NBD_REP_INFO (3) /* NBD_OPT_INFO/GO. */ +#define NBD_REP_ACK (1) /* Data sending finished. */ +#define NBD_REP_SERVER (2) /* Export description. */ +#define NBD_REP_INFO (3) /* NBD_OPT_INFO/GO. */ #define NBD_REP_ERR_UNSUP NBD_REP_ERR(1) /* Unknown option */ #define NBD_REP_ERR_POLICY NBD_REP_ERR(2) /* Server denied */ From patchwork Thu Feb 15 13:51:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873829 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="et3pce4g"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyRG2TlXz9sQm for ; Fri, 16 Feb 2018 00:53:30 +1100 (AEDT) Received: from localhost ([::1]:50878 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJya-00025q-DN for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 08:53:28 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51121) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxU-0001pp-BD for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxP-0000yO-Jj for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:20 -0500 Received: from mail-db5eur01on0107.outbound.protection.outlook.com ([104.47.2.107]:9504 helo=EUR01-DB5-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 1emJxP-0000xE-5u; Thu, 15 Feb 2018 08:52:15 -0500 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=OkDlkLT/xrsg0DcUSBCB9k8I4Lhv2K7gcSnLgE0KcOo=; b=et3pce4gtND1dTLttfHaxLrhKxtN282QUHKUlMyyQmBCh7cF/QKXXEfmblJ2NL26uXkvBShqMtyopmPtogNiS6WCTWh1/9ho/y0/FbIxQbg1zaxMVaf6dlXb7y3RDiRumaCb0f9T5rXCouwnU+otDp/FGowg9EnOdYhuuaSLdI0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:12 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:41 +0300 Message-Id: <1518702707-7077-4-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d7efc9db-244b-49ba-1ece-08d5747b50e8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:4a3/pOJLi31TOlUyhbQBzEiVRkELuzMQMd8pbiDpWbjgh0gN/61vJ5MTkXbNBIlc+m73geSvnkyrQjqW/bo3gWdRd5/VviNwLb79jKNb8DCUnPm18usz67g5MD7OwUDg0qAe89cwTa0Is2tlixC91bzz69eOFpgvBbrmru5yFuAabMFTRAjDsPugKzAc425+AfydwvhGRWR2kuYprzaYsayv3GtBUd4Nl/T1WfVdn8IvPUn/EqsN9/epe+8ZOES/; 25:YE1T3S2IK64HAm+5AuQspfQjOCErq6nRml8ZEMEBYgZqf4Zv2QQSyiTHmhYlgeFGEvWIYUOu3/STtVQGvlp5DwhKonXjAVfb/IF3HoLipNNCxNbLKZgQWK8NrghCcirCOzfGdxs4eD2ixHAOrU/DTofYC0BUouC/6KhoPqDsUKkRvPq21e8YWBJdBs8+6GPueCCvBh6LDuxGkLM5P3ykRVllRDvVVXKZxCQ5iNhv/ZWZCHHdBHtW3xWPN8UeJ07CK1gMkqfZQJOS8dcbVugVmMYa/E2N9rqUE1nut3WyJIaj4/YFGlwmg0pdxykxdfwzOHrTkG8i8oaLVqSBuaE9kA==; 31:YKBqxDuZIuX0ief95ddgPFOQptKh6y3Y+zJVxvC/U+t+l8hpoibpDzJdwJWyGZh+9Q75BsrENQVNidjTSRU4/+xX8tZz+oDe5+F17SSFA/ApmE1uiTtA9TTUdxRKDy0smOXx7kjFVORs7Bk03W4tjwapArff9revlKqpFmV/HcI7kIgJCzECy2pVf3PfAoEw226A+Ec5YfTk2cqW6XzdZthVxW4WY8JvknfnQ2XTBG8= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:rKAZefNahpC05yk1MUYJcgnPgAhnKzynn3qqKdnyVwO32WNEjzoyP2IdvYVFs3WxKElmFVB2k/pxIsWwbCyt0tdFhlKWPoFXmexr7a86l77llSRKGOm12DS6Hrd1hLYXacLfYjoqX4bP2dbPCsiUr0XqQi7L3HfXAKmZ08aSXRQDx/bHBvFcy24wvNCdxhKMl/vPqbKtqgqWAU0as1qjr9nMpMUZffBm5ufBSaltpVTOLyiNNvBgY31Njv4kVTY4kdwJqSiDqhWWtpwpj8V6SufxRadPDnCv0xG9++tlmY6VXWzmONpMCilVaXPP1xnv61T3e9xTkKw190AoWpCiVyv4JarV8hub44DKiDFzaE40eHkodwLyIX/JcrVNXOvcDG2W9B/nDMvQnGlkaeUPBhNT8RJ8dXPjNnXbw0zwW6bfyr+TgWBHWrVIkouMbczWTudg3BdBbs3trgfqdKo/oWNIqjqNhXtMjydjThicb4fS+dtr2c03UoTGv7FqYtGm; 4:bGhLRJCjrae1oYbDB8VjOVf9W/pDEVukf8fWnPXArY5vDH48On9mK3XILp71KcIR8LFHGhzE80Qnp0/eWHSEt5OqF8yl/9wiH7bGW05qFAo1vbjGBV69NEEVLXKJW3KFYAEJ/d/Q+BGiGXGoRTYih2G72L9fJbxbf6jAj6p7yvbkaPk5VthWTfyA6rKnOCkUAl1Z0UEYS8MbIiL4ec/LG3E4tHMwlStXWNNAsn0p2uUwccFY0MWiIaK5V1j417gNGy4dHmt4qN2CtR9N2KtnmOlkWzt4ZCOtYJUztbbpgFfzPP4vWa7sOTVNYY3QFvUG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(59450400001)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001)(309714004); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:tDBAGqw6RbIR84oX5PPpb1qj7Xk1la0jRnPslpX?= lcfMZXDK5YThjLJ6mpQjB1MYxd3GkafeCdHF4pVQ7j0cC/JyXGzCwg2r6MNFsU7rpFkkWrtZEtAFMU2gQPftELx5c95AEyT6rxjoGJ6UIouxjqrZJSw2Z1MBd7BpQQ6cgkM5c38qhuKimK7oDrggsv62zLTsDL2+RvmAC0pltoSiYPAv51Qf9c9Th8U7oOEX8Uj3tKk16DpuM/AOqMP3ft4IoyxzkFEl0G75LvJmLixt3l2qWVANeKjv8BDyaMix/5NuzTzpyBUP368qluQLWTy2qNmgFr1FV/g8eADhRHc9Wp86iweP8bXo+JAq/q3pbp2xropz1vn7PmqtnoxQtrWet2oH/08ii2Et0AsziKmhX6xvD1aWAwc0DmP+TNFmph6KlSY3i9qX5fJTVBhdKht0QI1MyJ2HN/7eCuHcSZkn84lEfZHLi89lylRueQFPhJzO4ewEPslQlYMofr9Vhm6X5qvR3OkjxbpeayZsvmBpBW3kDlog2ML7xoU0UNbooo8EFZFYRVlQcWdeNWRdBDr8Q78615miJCNzYP1DdaaK3jsHMl5SqIPZMk2gMNbDJwMr40/vNrgD+YsA+E6a6zwhqPNv7obqqeKTD4W/yvbkcB7jlQsH6aksYD9B6EcfaBGVJCGu8JB84VRO9Xs3vh0mZEjp7+QWGrPb+tSyzTwPRFCIc8XOKDITNCNIMuegOs/xQFtB27Bdh/Gj5BYp0jhuTBCSJ541QHbxrAVS8UYrwGSePuxcEOOeMirruRaQ5pSDalHg3Xp7KOTzumVacpnOgJLhLoljYamCuNvpUIr8u8aqA8u8YXGEkbDcdRi1wjGYJzjM0XYgWb4NFhfcNSqG8fqBBMWaZCsC+VNZc2LvKfkP9nVCdTCqhHKEA/qcNOtvrrW2uRrwx2KwFKxY8V2hZ8f4ah0B+Tiuz+mFAdK18NY4StRaTmSxCKwMXn3eCBh09IwnBlJqxOrkuNJ1z36B25C0/HSu0XuV5VsW9XRYotxBUxNfw4Mh7O/W1vMgSKjMNpFe3XPalOD96UVjm8Cl2WHVt9Olq0KiBIU4cGgmhHqU0tbgG3BXoQzkVQbboKDevonmFba5KOfezg+QAxe7txP1ujXwH9J1PC6BZNuV/FoIL7E5DjuChdQUjJpaSGjRC8PbqemOmSKlkKHoSD3T8m97PVvmKeP77/iOTf7MrJgWUpnmqmddvaXYfFcmSV9Y= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:eJO+8T75xzCl2UkwQP6YNQVXNIV9yWwpFFWfqjjFU8Qqnv9sYtos+XgGlyBgUj94TFt57t/pILPJt0Tgc6bFOTGDMMg1QC0hjfBqTpvIYf3zvr8R2KGXzEI1IbA/+Fk0j7ZwWVv+Uy2ke7J2MdwU18Y1ARMZNsKqTpbm/TD9dLyjKv9NW6IhrG1oLWQ1tsxU/70f8Jtj0Vvx2lY9GrC/cduapo9p1r6Gd9E8fPHl5pTCU7TzV31JB7lpdjk8EzjsVhPwVy/b99PgSelNrfqlFmhrlQjKLrSFdq+HwTKfEEU19vB+o146O868gNunWfbWQNieTMI9lxhW5ur/ps/mtRWduRR8OxlY1z+oDn92HLo=; 5:gMr7SYZey5KwoauWQvAKCmMxrtJnWEmgy8ImqXxYhRsRAOHypXWkjDZcA/jKGbcH4J7drk7Te+qq/C9DKrNR27m4wy0xox+Nm4XEnPLxcbnfZ6Yy0X291NYkz7sUhZcljBC8Lfe2eePSIsfEtj8tPUYkKQ6IXLYwKT3KyyXLI4o=; 24:X3kN8CmoBh3aQkI5ayVm933zwPpfaZPu21lKivvyXDqZyTU7Wnm0mQPi45y+4R7p5BpAhqEiE4HENlxz01/Zym3QAOm+Q67O1c4Sy0W1oNU=; 7:rRTJf2gkj54b91syK+oK90Zt7tuym9Q6CVE8ee7tHS2C39IqiPmUyuKCUPEpDyPmTootVdJskHbXexXTY8nCaJIegNHhSJcLwKExspMGprHR2tMeE0VfQ3p5Czaa3xLWbqxbXOQY5ZQ/h2Bs13yg6wPEEeaY5Mz8XFHWBsSCLXh1igFZ0nzgfRAohvP3acGZ41VPFzspzBCD0USTl51UlR36Xg0rZ2/RN93S7+LxBzUN2NLP6FFwPhN3nIs/GEas SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:E25bw/Qijkvc2+Y+qN0cpTR2P+wdEVvdrkXBP7qVUngsLfbefw/SYHqG8kQVy2cXf8QLljMniiLEMfivGVArD0ESI9TKNU+7T8TpMcqL6UNOXjdgEhzKHpYGF+8EgKTuF8cnphKogAp9Pqxgl+vK1ESyht2iek+SjRXmXjs0lOo= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:12.4200 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d7efc9db-244b-49ba-1ece-08d5747b50e8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.107 Subject: [Qemu-devel] [PATCH 3/9] nbd: BLOCK_STATUS for standard get_block_status function: server part 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Minimal realization: only one extent in server answer is supported. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/nbd.h | 33 ++++++ nbd/common.c | 10 ++ nbd/server.c | 310 +++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 352 insertions(+), 1 deletion(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index ef1698914b..b16215d17a 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -41,6 +41,12 @@ struct NBDOptionReply { } QEMU_PACKED; typedef struct NBDOptionReply NBDOptionReply; +typedef struct NBDOptionReplyMetaContext { + NBDOptionReply h; /* h.type = NBD_REP_META_CONTEXT, h.length > 4 */ + uint32_t context_id; + /* meta context name follows */ +} QEMU_PACKED NBDOptionReplyMetaContext; + /* Transmission phase structs * * Note: these are _NOT_ the same as the network representation of an NBD @@ -105,6 +111,19 @@ typedef struct NBDStructuredError { uint16_t message_length; } QEMU_PACKED NBDStructuredError; +/* Header of NBD_REPLY_TYPE_BLOCK_STATUS */ +typedef struct NBDStructuredMeta { + NBDStructuredReplyChunk h; /* h.length >= 12 (at least one extent) */ + uint32_t context_id; + /* extents follows */ +} QEMU_PACKED NBDStructuredMeta; + +/* Extent chunk for NBD_REPLY_TYPE_BLOCK_STATUS */ +typedef struct NBDExtent { + uint32_t length; + uint32_t flags; /* NBD_STATE_* */ +} QEMU_PACKED NBDExtent; + /* Transmission (export) flags: sent from server to client during handshake, but describe what will happen during transmission */ #define NBD_FLAG_HAS_FLAGS (1 << 0) /* Flags are there */ @@ -136,6 +155,8 @@ typedef struct NBDStructuredError { #define NBD_OPT_INFO (6) #define NBD_OPT_GO (7) #define NBD_OPT_STRUCTURED_REPLY (8) +#define NBD_OPT_LIST_META_CONTEXT (9) +#define NBD_OPT_SET_META_CONTEXT (10) /* Option reply types. */ #define NBD_REP_ERR(value) ((UINT32_C(1) << 31) | (value)) @@ -143,6 +164,7 @@ typedef struct NBDStructuredError { #define NBD_REP_ACK (1) /* Data sending finished. */ #define NBD_REP_SERVER (2) /* Export description. */ #define NBD_REP_INFO (3) /* NBD_OPT_INFO/GO. */ +#define NBD_REP_META_CONTEXT (4) /* NBD_OPT_{LIST,SET}_META_CONTEXT */ #define NBD_REP_ERR_UNSUP NBD_REP_ERR(1) /* Unknown option */ #define NBD_REP_ERR_POLICY NBD_REP_ERR(2) /* Server denied */ @@ -163,6 +185,10 @@ typedef struct NBDStructuredError { #define NBD_CMD_FLAG_FUA (1 << 0) /* 'force unit access' during write */ #define NBD_CMD_FLAG_NO_HOLE (1 << 1) /* don't punch hole on zero run */ #define NBD_CMD_FLAG_DF (1 << 2) /* don't fragment structured read */ +#define NBD_CMD_FLAG_REQ_ONE (1 << 3) /* only one extent in BLOCK_STATUS + * reply chunk */ + +#define NBD_META_ID_BASE_ALLOCATION 0 /* Supported request types */ enum { @@ -173,6 +199,7 @@ enum { NBD_CMD_TRIM = 4, /* 5 reserved for failed experiment NBD_CMD_CACHE */ NBD_CMD_WRITE_ZEROES = 6, + NBD_CMD_BLOCK_STATUS = 7, }; #define NBD_DEFAULT_PORT 10809 @@ -200,9 +227,15 @@ enum { #define NBD_REPLY_TYPE_NONE 0 #define NBD_REPLY_TYPE_OFFSET_DATA 1 #define NBD_REPLY_TYPE_OFFSET_HOLE 2 +#define NBD_REPLY_TYPE_BLOCK_STATUS 5 #define NBD_REPLY_TYPE_ERROR NBD_REPLY_ERR(1) #define NBD_REPLY_TYPE_ERROR_OFFSET NBD_REPLY_ERR(2) +/* Flags for extents (NBDExtent.flags) of NBD_REPLY_TYPE_BLOCK_STATUS, + * for base:allocation meta context */ +#define NBD_STATE_HOLE (1 << 0) +#define NBD_STATE_ZERO (1 << 1) + static inline bool nbd_reply_type_is_error(int type) { return type & (1 << 15); diff --git a/nbd/common.c b/nbd/common.c index 6295526dd1..8c95c1d606 100644 --- a/nbd/common.c +++ b/nbd/common.c @@ -75,6 +75,10 @@ const char *nbd_opt_lookup(uint32_t opt) return "go"; case NBD_OPT_STRUCTURED_REPLY: return "structured reply"; + case NBD_OPT_LIST_META_CONTEXT: + return "list meta context"; + case NBD_OPT_SET_META_CONTEXT: + return "set meta context"; default: return ""; } @@ -90,6 +94,8 @@ const char *nbd_rep_lookup(uint32_t rep) return "server"; case NBD_REP_INFO: return "info"; + case NBD_REP_META_CONTEXT: + return "meta context"; case NBD_REP_ERR_UNSUP: return "unsupported"; case NBD_REP_ERR_POLICY: @@ -144,6 +150,8 @@ const char *nbd_cmd_lookup(uint16_t cmd) return "trim"; case NBD_CMD_WRITE_ZEROES: return "write zeroes"; + case NBD_CMD_BLOCK_STATUS: + return "block status"; default: return ""; } @@ -159,6 +167,8 @@ const char *nbd_reply_type_lookup(uint16_t type) return "data"; case NBD_REPLY_TYPE_OFFSET_HOLE: return "hole"; + case NBD_REPLY_TYPE_BLOCK_STATUS: + return "block status"; case NBD_REPLY_TYPE_ERROR: return "generic error"; case NBD_REPLY_TYPE_ERROR_OFFSET: diff --git a/nbd/server.c b/nbd/server.c index b9860a6dcf..f2a750eb97 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -82,6 +82,15 @@ struct NBDExport { static QTAILQ_HEAD(, NBDExport) exports = QTAILQ_HEAD_INITIALIZER(exports); +/* NBDExportMetaContexts represents list of selected by + * NBD_OPT_SET_META_CONTEXT contexts to be exported. */ +typedef struct NBDExportMetaContexts { + char export_name[NBD_MAX_NAME_SIZE + 1]; + bool valid; /* means that negotiation of the option finished without + errors */ + bool base_allocation; /* export base:allocation context (block status) */ +} NBDExportMetaContexts; + struct NBDClient { int refcount; void (*close_fn)(NBDClient *client, bool negotiated); @@ -102,6 +111,7 @@ struct NBDClient { bool closing; bool structured_reply; + NBDExportMetaContexts export_meta; uint32_t opt; /* Current option being negotiated */ uint32_t optlen; /* remaining length of data in ioc for the option being @@ -636,6 +646,201 @@ static QIOChannel *nbd_negotiate_handle_starttls(NBDClient *client, return QIO_CHANNEL(tioc); } +/* nbd_alloc_read_size_string + * + * Read string in format + * uint32_t len + * len bytes string (not 0-terminated) + * String is allocated and pointer returned as @buf + * + * Return -errno on I/O error, 0 if option was completely handled by + * sending a reply about inconsistent lengths, or 1 on success. */ +static int nbd_alloc_read_size_string(NBDClient *client, char **buf, + Error **errp) +{ + int ret; + uint32_t len; + + ret = nbd_opt_read(client, &len, sizeof(len), errp); + if (ret <= 0) { + return ret; + } + cpu_to_be32s(&len); + + *buf = g_try_malloc(len + 1); + if (*buf == NULL) { + error_setg(errp, "No memory"); + return -ENOMEM; + } + (*buf)[len] = '\0'; + + ret = nbd_opt_read(client, *buf, len, errp); + if (ret <= 0) { + g_free(*buf); + *buf = NULL; + } + + return ret; +} + +/* nbd_read_size_string + * + * Read string in format + * uint32_t len + * len bytes string (not 0-terminated) + * + * @buf should be enough to store @max_len+1 + * + * Return -errno on I/O error, 0 if option was completely handled by + * sending a reply about inconsistent lengths, or 1 on success. */ +static int nbd_read_size_string(NBDClient *client, char *buf, + uint32_t max_len, Error **errp) +{ + int ret; + uint32_t len; + + ret = nbd_opt_read(client, &len, sizeof(len), errp); + if (ret <= 0) { + return ret; + } + cpu_to_be32s(&len); + + if (len > max_len) { + return nbd_opt_invalid(client, errp, "Invalid string length: %u", len); + } + + ret = nbd_opt_read(client, buf, len, errp); + if (ret <= 0) { + return ret; + } + buf[len] = '\0'; + + return 1; +} + +static int nbd_negotiate_send_meta_context(NBDClient *client, + const char *context, + uint32_t context_id, + Error **errp) +{ + NBDOptionReplyMetaContext opt; + struct iovec iov[] = { + {.iov_base = &opt, .iov_len = sizeof(opt)}, + {.iov_base = (void *)context, .iov_len = strlen(context)} + }; + + set_be_option_rep(&opt.h, client->opt, NBD_REP_META_CONTEXT, + sizeof(opt) - sizeof(opt.h) + iov[1].iov_len); + stl_be_p(&opt.context_id, context_id); + + return qio_channel_writev_all(client->ioc, iov, 2, errp) < 0 ? -EIO : 0; +} + +static void nbd_meta_base_query(NBDExportMetaContexts *meta, const char *query) +{ + if (query[0] == '\0' || strcmp(query, "allocation") == 0) { + /* Note: empty query should select all contexts within base + * namespace. */ + meta->base_allocation = true; + } +} + +/* nbd_negotiate_meta_query + * Return -errno on I/O error, 0 if option was completely handled by + * sending a reply about inconsistent lengths, or 1 on success. */ +static int nbd_negotiate_meta_query(NBDClient *client, + NBDExportMetaContexts *meta, Error **errp) +{ + int ret; + char *query, *colon, *namespace, *subquery; + + ret = nbd_alloc_read_size_string(client, &query, errp); + if (ret <= 0) { + return ret; + } + + colon = strchr(query, ':'); + if (colon == NULL) { + ret = nbd_opt_invalid(client, errp, "no colon in query"); + goto out; + } + *colon = '\0'; + namespace = query; + subquery = colon + 1; + + if (strcmp(namespace, "base") == 0) { + nbd_meta_base_query(meta, subquery); + } + +out: + g_free(query); + return ret; +} + +/* nbd_negotiate_meta_queries + * Handle NBD_OPT_LIST_META_CONTEXT and NBD_OPT_SET_META_CONTEXT + * + * Return -errno on I/O error, 0 if option was completely handled by + * sending a reply about inconsistent lengths, or 1 on success. */ +static int nbd_negotiate_meta_queries(NBDClient *client, + NBDExportMetaContexts *meta, Error **errp) +{ + int ret; + NBDExport *exp; + NBDExportMetaContexts local_meta; + uint32_t nb_queries; + int i; + + assert(client->structured_reply); + + if (meta == NULL) { + meta = &local_meta; + } + + memset(meta, 0, sizeof(*meta)); + + ret = nbd_read_size_string(client, meta->export_name, + NBD_MAX_NAME_SIZE, errp); + if (ret <= 0) { + return ret; + } + + exp = nbd_export_find(meta->export_name); + if (exp == NULL) { + return nbd_opt_invalid(client, errp, + "export '%s' not present", meta->export_name); + } + + ret = nbd_opt_read(client, &nb_queries, sizeof(nb_queries), errp); + if (ret <= 0) { + return ret; + } + cpu_to_be32s(&nb_queries); + + for (i = 0; i < nb_queries; ++i) { + ret = nbd_negotiate_meta_query(client, meta, errp); + if (ret <= 0) { + return ret; + } + } + + if (meta->base_allocation) { + ret = nbd_negotiate_send_meta_context(client, "base:allocation", + NBD_META_ID_BASE_ALLOCATION, + errp); + if (ret < 0) { + return ret; + } + } + + ret = nbd_negotiate_send_rep(client, NBD_REP_ACK, errp); + if (ret == 0) { + meta->valid = true; + } + + return ret; +} + /* nbd_negotiate_options * Process all NBD_OPT_* client option commands, during fixed newstyle * negotiation. @@ -826,6 +1031,22 @@ static int nbd_negotiate_options(NBDClient *client, uint16_t myflags, } break; + case NBD_OPT_LIST_META_CONTEXT: + case NBD_OPT_SET_META_CONTEXT: + if (!client->structured_reply) { + ret = nbd_opt_invalid( + client, errp, + "request option '%s' when structured reply " + "is not negotiated", nbd_opt_lookup(option)); + } else if (option == NBD_OPT_LIST_META_CONTEXT) { + ret = nbd_negotiate_meta_queries(client, NULL, errp); + } else { + ret = nbd_negotiate_meta_queries(client, + &client->export_meta, + errp); + } + break; + default: ret = nbd_opt_drop(client, NBD_REP_ERR_UNSUP, errp, "Unsupported option 0x%" PRIx32 " (%s)", @@ -1446,6 +1667,78 @@ static int coroutine_fn nbd_co_send_structured_error(NBDClient *client, return nbd_co_send_iov(client, iov, 1 + !!iov[1].iov_len, errp); } +static int blockstatus_to_extent_be(BlockDriverState *bs, uint64_t offset, + uint64_t bytes, NBDExtent *extent) +{ + uint64_t tail_bytes = bytes; + + while (tail_bytes) { + uint32_t flags; + int64_t num; + int ret = bdrv_block_status_above(bs, NULL, offset, tail_bytes, &num, + NULL, NULL); + if (ret < 0) { + return ret; + } + + flags = (ret & BDRV_BLOCK_ALLOCATED ? 0 : NBD_STATE_HOLE) | + (ret & BDRV_BLOCK_ZERO ? NBD_STATE_ZERO : 0); + + if (tail_bytes == bytes) { + extent->flags = flags; + } + + if (flags != extent->flags) { + break; + } + + offset += num; + tail_bytes -= num; + } + + cpu_to_be32s(&extent->flags); + extent->length = cpu_to_be32(bytes - tail_bytes); + + return 0; +} + +/* nbd_co_send_extents + * @extents should be in big-endian */ +static int nbd_co_send_extents(NBDClient *client, uint64_t handle, + NBDExtent *extents, unsigned nb_extents, + uint32_t context_id, Error **errp) +{ + NBDStructuredMeta chunk; + + struct iovec iov[] = { + {.iov_base = &chunk, .iov_len = sizeof(chunk)}, + {.iov_base = extents, .iov_len = nb_extents * sizeof(extents[0])} + }; + + set_be_chunk(&chunk.h, NBD_REPLY_FLAG_DONE, NBD_REPLY_TYPE_BLOCK_STATUS, + handle, sizeof(chunk) - sizeof(chunk.h) + iov[1].iov_len); + stl_be_p(&chunk.context_id, context_id); + + return nbd_co_send_iov(client, iov, 2, errp); +} + +static int nbd_co_send_block_status(NBDClient *client, uint64_t handle, + BlockDriverState *bs, uint64_t offset, + uint64_t length, uint32_t context_id, + Error **errp) +{ + int ret; + NBDExtent extent; + + ret = blockstatus_to_extent_be(bs, offset, length, &extent); + if (ret < 0) { + return nbd_co_send_structured_error( + client, handle, -ret, "can't get block status", errp); + } + + return nbd_co_send_extents(client, handle, &extent, 1, context_id, errp); +} + /* nbd_co_receive_request * Collect a client request. Return 0 if request looks valid, -EIO to drop * connection right away, and any other negative value to report an error to @@ -1523,6 +1816,8 @@ static int nbd_co_receive_request(NBDRequestData *req, NBDRequest *request, valid_flags |= NBD_CMD_FLAG_DF; } else if (request->type == NBD_CMD_WRITE_ZEROES) { valid_flags |= NBD_CMD_FLAG_NO_HOLE; + } else if (request->type == NBD_CMD_BLOCK_STATUS) { + valid_flags |= NBD_CMD_FLAG_REQ_ONE; } if (request->flags & ~valid_flags) { error_setg(errp, "unsupported flags for command %s (got 0x%x)", @@ -1650,6 +1945,19 @@ static coroutine_fn void nbd_trip(void *opaque) } break; + case NBD_CMD_BLOCK_STATUS: + if (client->export_meta.base_allocation) { + ret = nbd_co_send_block_status(req->client, request.handle, + blk_bs(exp->blk), request.from, + request.len, + NBD_META_ID_BASE_ALLOCATION, + &local_err); + } else { + ret = -EINVAL; + error_setg(&local_err, "CMD_BLOCK_STATUS not negotiated"); + } + + break; default: error_setg(&local_err, "invalid request type (%" PRIu32 ") received", request.type); @@ -1680,7 +1988,7 @@ reply: ret = nbd_co_send_structured_done(req->client, request.handle, &local_err); } - } else { + } else if (request.type != NBD_CMD_BLOCK_STATUS) { ret = nbd_co_send_simple_reply(req->client, request.handle, ret < 0 ? -ret : 0, req->data, reply_data_len, &local_err); From patchwork Thu Feb 15 13:51:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873849 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="e6Eu1AXn"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhydV5JDZz9s7f for ; Fri, 16 Feb 2018 01:02:22 +1100 (AEDT) Received: from localhost ([::1]:51414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emK7A-00040P-PO for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 09:02:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51124) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxU-0001q3-K0 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxQ-0000yg-1q for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:20 -0500 Received: from mail-db5eur01on0107.outbound.protection.outlook.com ([104.47.2.107]:9504 helo=EUR01-DB5-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 1emJxP-0000xE-Qa; Thu, 15 Feb 2018 08:52:15 -0500 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=KpsfDInkkcrIPEvIDgvJnOpaARG2Upl8nlazv9G1vpM=; b=e6Eu1AXn9biaUaZI/Mh6cU1Jd4u6zTJbnTFPzGdIcA2stl5kXsrN7N/ThtsLdG7nm1Idi8Ww6g6kiBqdnpbKk+Cm8jQ8Mhf9a5OLwCISQn0zw1m59rnQeQd/1Hw4I75B2DCujHqINCGHC5AepAWg88nWAL3+rZEMdFihbzXsQzk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:13 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:42 +0300 Message-Id: <1518702707-7077-5-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ccd010b8-f116-440a-a309-08d5747b516d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:xiykcFAqK1Wi5zfHFSzMY8z32A+9o0uzNtxv9ESu6YvzAfj3FIs/Jwf6nBX+VRmrgInKIIBBmNCfO3/umu5AOcUH1s6p3zdjl1wKYB2KbDTOqdM66m0JBusxRO29K73ZGcN28pzZ2D9k1ruoyKU09f2uif+oZIj5pPP9/V4HwbSjwY6qqy5wgbB7hm8jjQ6+43KZCy3RJ/sJSh5/6liQamfxga6TNV+lxlyoK5n6pglbyfb8VzcPrbMDQuEpqTKI; 25:8NDU52CPoALujO5S6f4orTxV2tnw6e268cXH8yXIWemY5ezpWVJIAsXRv4B3VdfgiQi6V4SgIMWDz28sE4aDmqG3aNZLLbk5D+o8LY/BAsUtRJ+R+aOFzmRr5Uj8JdOS6FirFTx75UrR4Twyze64JXvYi+Prkl0k/XmotSuU1EqrUXPGsLWjxY2+ODIzVnW0Ai9qKoVsXQ2RaeWtsxNP/9BEplizvvMc4qGrtU9YfFanJ95G1ZkMFC/srW0Js+KvVHuoWe/61J7yY/0wn57CVG2HCe9Xy+Ij7gaeWKe4437daVlqDpgLmRQKB1c3iBGDriqpB+s6a0RsdBrhnbo2Vw==; 31:VJ9p/+gmPTRmVojaZgvulypGLpkG9KNyHMiRO7wC9rlUsJZIMjcKJ2Z4yiE3XA+eB/7wg7SCpLqhLt8VovpZ5iEE8tOgpbZWgo0Bah+xLTu+gHAHsHFl3U7xpHsAe7lGe3puLNxmu2rFE2xTa/lHtiwR97ASf5ZmEIYKiV0LIRkLjwEwHDZjhDYRB14zf/blOGOMndOw3VCSNSDl4aaXy0g3urUv6vcwrQLcuyjq8e4= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:Vd7bvR6JHxElN88e+JxX6QyXPsXFfI/JYkkPyrgKEHDbnL06nygjmpfBgrbPqFO5/148VO13mw4q6x/OCf6nXkx77aeCY+lgpYGF06tnfugxPZ9ZfmcbVHaMq2KgFsBaYrr1aZjTeB1tb6CHXgMpz+j8G+k50AIyE0R0Qp7r25s5UjUh8u1C7UD4edN6ypvQ4KoK6PwbGxop++PCfYiaZs9UQLVk3dNa1jSjxlcqE0ObDqWA/SyJu6l9LeuuJPf1w/bMOvoZaBDvmEn7Y9HTYuR34h0sVgccF/y/nFXyBQLNT58ZGknmy5wCAQg6Pp0Epou3LUogYBWofGTPe7AMnddhuJU6F6NHFyqm4R1CxijbafQwIh4YwvViOSyKNrzqk5VCNen2/lxx15A3iPAsrZCreWIdSw0SiHIvBWN78M/ICM7NQS2+4NzeGj0uS8ZqUgklTqxUsgVw0UFkY0sHpRf8De2pxKu2iLye88TrJADJpq9iTO8rtT40BjTAYCXg; 4:Aezp2OEHDgcfFVQvkEMg1HDStHqGVD9svhs0fj4sfGRcLyfvU1IFS2roM7R/2acUIPkY+rBkbPz2alAcFgkbcMk5wH2OPniSgZbfIulkwQ4HuoCZiFo/JL0xvEnFLzRu7YoKIiO5EgB5NO5N94DEnPizO3d/r5pakSePiIyMfT/loQBaHriGjaom7ptXTQsLu240MpMt9XUbMVwktdlG08vEUom6DwQMdeygZSIdpuiTl8aQuh03IKqnmRulg8GXT+b9g/FDq+jLyRLp69d9kg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(59450400001)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:UErq8WsQSKVDQkhu98NIi07II33r+ny1TFpgZOW?= fyMORd63inQMD1vOEndLBi1TUh/HwF9MicK4hmLTVdhzDw2fb8/jQVtd+xD4eHrBzZeFozUDx5xNpUVZLjWgT6oFKCmSnZow4Gn0qa7mO2v3OXeSTwfC/jFUYQpL2ixGUr3YO0WcLNus5gOe/xPraVEEQquH6OyY5TO9Msv6MTphC+03SYIJFNn5ufN5TkH78CR+EnMnkqw63PxdQeoWM4bzfDdGTPBx7h5vefp6gxeaN9tZnQFfnSgkIG1n8CxwrRUeI3dKPWvZZZSUY7E5BNunwbYCrGMbSynQ5bFlQKa/h9TmhNZYtsO9EBaMsduZjP5xotIRpiD/OorEewmbXffn09LygA5OhVg69tW9KEgQJUpX41MJOEkk0wLJKgGEb9fO1PK9jRJp1WanPnAnW/y8wErV9rS1td4wEIZRVuZL3u0VXOacvkawygQBnJdMAji1/YLZVYpTX8jHXejX32i02Glat3jLhF74vgdiCVlEdDuwx4Yynx9YgQ1AVwj4a7OE/nGVq90w+ai7i1oQmPUjBVDxAty2uCtontSAvXCVUzS3m3RBGokqDz8RAKU8EMgYxDakX3zkGkX+hznxpaBeJUFpRehUNBL93D0fLE8X7JVALp6Zj2hesV6Hh1wiWvJUD8XtnrOuqjc8sBM4dwXTi/1mtcfAbtpQb0a6wX5vsggVQJBOo1oboJW1pRtIiE2WulKW6eNr2tQbQNDtAmsuVewziXWxt/zCv9XROhIfpgA8BXQ7fxmgCADE0qsFxIOq/9fJNfYhb12S87NxZqm9bHg3+ZaHQ6tUWdSRuE2cZ/6KJU4IdPEiIfndpXWUdGs852Xr7dvbSWmdN3updIorBLgiEsABe5b0syFsDzcK7K2/JMI9cP04gZUClovu8GUjdNIUE9hkYCGn1XnNnIILLYEciFqiVlTl+B0XP40Ag/f3Bfc2wUWyh35fWF7n/mY9O2FN6Cs5KSEhVc5/5wYx+t6n/5LFFp0sdGHwxGbl9mfXIbByBn3WB5/hYBwwDQObYS5Uy+0EsB8TwprYzjWk4GWG+qqnmiHnupVQNSYMLjM84WotOfbec6zVvpVi1ftC4+m/5mv763qDRrkrPhwtQJIycRnzAAZNIVTqFoUsamcoTKOk9uhuouQlm5sRwy87Ta2fxZdAJ9k0yspiD8gMQLHbUIiRfcovikG1TtHZoqA== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:M1zafkIauHCW74di5PlJX/rs6A4Uy4FgudsZUo9dVVQhjBzJZ3JC8uW4QCR5HMHiJevEEd9uVXOfMlihLkqTuRRmT3lRIOM7eztB+Gybkh2PnX8aOMmCmrNtc23gZypfBf2nR9AFMVvI52XnSXV3d3odIs7/Nd2scBKeY7EJ4b/yMrVkiUABjMVj1kTKHO4KS57AHEfom8+pBejp8zl60IzGrSdovzhEWilPFTbL8qgmK34C70NKGaMFNiwLWrsc+ClKoJGYkqlcwhCRhl4vgbb5p9MqhPRyCXW4f00mQPBtZNqhk0FcaukuhEWUXpbUtfSyIppShZ6AcG3ZNTbi87gO3xwL4lYMXxFkj7r/KVo=; 5:M2iyldBKrrVLmtL2bkwIJJBktL2d0+dnmFZB4l2/rvEi+WWuJ8kqnd3TwrTwDURwTNhUVf3itDh0P2uEuJUmvsMAxIy+OfgCaWeQ8LuGzr1e6QrMElFsH69QcrClEh1whSAnd9/fMBBzMxwuDlutmdiVRyIB3VMFaRt6//ttTY8=; 24:eCnuDJ4QrNVyl7UDSpq76dVIIjhY3RQHwzH8LXUbfBeFa8SO2RixkwgQ5VOCgO0fIrA7HeuLxNxFBX8hQwjB96ak/xDObYBs72HQsTNTwG4=; 7:p3lpUAn5Fhst9ylH7GfHbAh4THl+xFPCM8qq+Q6kY6yEf6l5TcrJIqUODhZFu0E/Ez0okeMlYvu6iqLiUQlIl5dZhxJWihRfy/6MCOJT06jPWCOAk3gqKeWNBzhwq+qe2IR7oxIB/17CMhEhPbsDHJCC+QKEkhXDfj3sIuBIzevnbURvec42KXwxfhs0SeoC2BEsiBcQLy5wTwFtIrXDRbhe5DLiNzX0Zgo/GrnKTq8TmLCPMlohRscTKZZSrzj+ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:DuIAZUbKeQy3NB3mknb0TpGI9pyLZ6KTDsMswTL2aePIwBpyd2rHM6rizz+Msp3Zrfs1dcggaeSmlicMxmPL51fWgUy4Mt8Wy6BGwGgse4klpaI7kHOAIRFUQpWqZt9j/ommW/RvBQbVnwMIUpV7+hv5/ey25CTBqji+E5Ed10Y= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:13.2950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ccd010b8-f116-440a-a309-08d5747b516d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.107 Subject: [Qemu-devel] [PATCH 4/9] block/nbd-client: save first fatal error in nbd_iter_error 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" It is ok, that fatal error hides previous not fatal, but hiding first fatal error is a bad feature. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd-client.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/block/nbd-client.c b/block/nbd-client.c index 9206652e45..b1cbe95b13 100644 --- a/block/nbd-client.c +++ b/block/nbd-client.c @@ -481,6 +481,7 @@ static coroutine_fn int nbd_co_receive_one_chunk( typedef struct NBDReplyChunkIter { int ret; + bool fatal; Error *err; bool done, only_structured; } NBDReplyChunkIter; @@ -490,11 +491,12 @@ static void nbd_iter_error(NBDReplyChunkIter *iter, bool fatal, { assert(ret < 0); - if (fatal || iter->ret == 0) { + if ((fatal && !iter->fatal) || iter->ret == 0) { if (iter->ret != 0) { error_free(iter->err); iter->err = NULL; } + iter->fatal = fatal; iter->ret = ret; error_propagate(&iter->err, *local_err); } else { From patchwork Thu Feb 15 13:51:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873837 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="QCEAhzta"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyYk2Vxcz9s7f for ; Fri, 16 Feb 2018 00:59:06 +1100 (AEDT) Received: from localhost ([::1]:51254 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emK40-0000dK-9V for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 08:59:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51125) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxU-0001q7-KQ for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxQ-0000z6-Dg for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:20 -0500 Received: from mail-db5eur01on0107.outbound.protection.outlook.com ([104.47.2.107]:9504 helo=EUR01-DB5-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 1emJxQ-0000xE-6w; Thu, 15 Feb 2018 08:52:16 -0500 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=o9cOsy/DQJASWxnG1fINGqQeNBAPAShRQxuh+1WXmQM=; b=QCEAhztaVsxnhd2ktq8eKc3zdX+dlW13B4Z60YUNvOtDtynQ4ZAIdUPbn9sIvkMco7Qvx7UyyydPg/fgvoISweyKgIrXCPz3tofsF/EGCaXudVJqMlBKuN2ankqwA45OwSjIXOCsX5xIgHtmtj05YeBrLFZnnKf20PYJO8sqbEs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:14 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:43 +0300 Message-Id: <1518702707-7077-6-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 585d02ff-b929-47d7-8994-08d5747b51f5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:T0pRlAkkXw012/O76mKdXD6SjcWWkbvTAHHE90jVUMIQ1T9LIJxY8jcf7N8HxMgf6kYG/d51C3nlWHapHPvVqm8hSnqK1lDwdOlhUDKxu8FMvMcRXUtnHsRvXjCW8SP+MRv55A3Xw6yI3KvfMkoecHU07UeIffKpCZpym0yV7LvXyH8TirxRBOF/jqSQckeRAYP7Lt2yOtaZ6aDAErJPqqDTlEc+N2uCUIZ0ZpIvRThpFTwD5PsSjJzTF/Ljmd4M; 25:Do6XkC06yJKRcEKu+iBuHUd2gVpoRRZlFdQQakF/pVznimDAufTb7QkduCSrKW4Xln854LLnwhCsDmP4x4gpiMW6tLMZUNThyFx54vsBCtjDrhJWwSfdDuSr9acyVCwDhblBIE61bji2aeBnaWIoySUiaQCn532kxPYcc1qtQiSxgbJljEwBLYaSpn3qfIyi6EzN0gzFPCVVnOW47O8LoGxZOsMXmo690vmefpzj2KyhLmhmL83ERd8rvKiaBY8RQ8G+351XQ0hk/FO3fuMXQB0d6aH86EtCj0nDt/PTHOaRNEJGOKRSXs9ZmpsF6Qs/zac5gzbIurbulRXmi1P7TQ==; 31:h+wFlMoGW69MmLUliKW2J05v+UL51RMYYdHrF8qRm5wdSZJV/So704qbmA+ZYb9jPxpXafxLVbwSdHb/vXxr18KQ3qFCXFF0s8c32CsxbYPQW4GptVSuj2fl1KCi+okpr1EUjj/nO2QP4y0g9WUVFTAljUqcDdwViqEM0ouM0E3vQQAwbKIKPQzgLCEiP5Yj4JkHQeVIRVkbOB1zjF5j6JslELQn26xkiD4KSGWYmWQ= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:IA8XDH8eBMoW6huZ/fP83a/YQTWITC+uVuVsdfHmr7qKvbfIG1KEhDORiDItELqoxHA79n3eDVB/lyyNWVwoAJhKd+EnkEE/esWuQd4P5jKkkGOLXP7944D/NB6ba73y8mmt/Nx00mrIx8EZN8ztpwjuDNPuYQw5Nl/ziyrMQCjucdXS1mAIB/uOt3dw0Gnw2b1T5a7Dp0O8SA9L5W9jcRqtS5wU/y9DXQZqkl98YgDPiSvgayVMoKShXbmpfW5WJhK4FnP7oRcABchotdNjWYznKpqAAtp7wnUeLgo3y6/ruGgnMopGpcfFacQVbf7k/6jIDtfLBdy58SPjPCBHUmRCUVUqKfDwKvQc8z3z9VE1PbzCOmxV4DBuOTeGEfZXKE81sNocZBcjDUNFYI19TNMmn2K/Neoc4R0LGAKG8BXeZVGSt1KVpXEjJNziVjeK8s9jvYyz4uub12amC+zD1b5v2QFJMNFLhJuiUtrkQQ29PP9c2VYKG/7s3rUbSo5m; 4:S7sqz/+XnhtzvgkNsfFgH25nH33rIYiU4ZIx6wk5GBrv3GWPTBgkTrYWdizJs9mTWq5Wfc8VvKBdSYOiDF1L1YSlbGhfH3BPrGxxSHPg/OP8+3jkyXdL7y6fVUvYleRURvAZgHtf02R7Vm78clLKyrVjPbQKYiCfYcl9b3H1U1ZKdxW/xbf/5JiSmQdAZUVScxfd2lnkhQdN5k4uN99mq73QKwMRlYP3ECddUovFQ7zDnGO6jN7XmhhqxxQMDqR2eAXyZmWAEAQc8tkgUZ61QIk5vwBEVeluBrx66VEIeyeE7RRtzBtdUJwMnoeTiZxi X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(15650500001)(66066001)(316002)(386003)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:F6wMb5d/EW6RCegzsRPiTZ8QmB+6p2eprveQzJU?= rg8dO07tt85NU2cvcE8na4N2AT9TQQHaMF6PiYoiOiNRtHR57XBRvP8uYDXHa5SItHsGCO+DnPPLsgCGSsyEjjo2GlBKI3gBBpf437CCx3tKQK1FzWCBb22urPtv5VZGxFmkAgu2wwPRv5k0NLj3ABMGiQkB2f30lcUiy5QZVfh4cEouq3jUaXtJLYKrDRqh3ip4nMo5G41rAKaoeln/pjb0B6vH/bcIZJG7pX+Z1knTjnOnTTBuvj6VKmsyAT6CulPrC854QlYge+c32bT03VYfWlc1ppo9bz9+TKqTmEhJi71pRCOkYVtAbu08df6Cdq8d8fQkuu2a5/vHLlvH1fjf/StLuzPIXpze100JKoPQ7gpTbDgx/EFnFtGjtnLm52OAUfNmz4GSsuJwp6b4XbZBMnsjVhvdQI7pEnFFcdlaAhdodwc12A/qiwzyC4DsmEhM/5iDc70EMtrDftMgyRDpq5AI+Js5Q2hNpGtd76Gg/w+iN8V2sSr7iDG4OyY4hnEmC4W82MauUhoEUpW2URrdYHI8nXLc7lsdlmyRK2AzAZcC0DzQbnkV2k3EjM55zC2EDBN5XKhHSYxi2EOJwOSUcED6QD7vjh7GSWWhnhek849ybt2oC8/RFx2udiKknXfWVeuU6KxV9Y3c337p5UgmSSTKvHTZdDtvjTApka3Tg8kjwZwGRWmEaWqSKkjAzbZio6+YoqLiyKNP+MgPQr3jcHRz+r/SkQCsEiXKedBsxT69sNbLtBef+b6IH1BInidG6gzs8RRj/SHgAgByuJUWO6CfB6FQetuZVMF0fJbeBY/85eTQXLKWT4Z9Il4SZ5ObcrDQxvfSHpFPzGYJsX0DY93pyK2SpwXAYIFEQXhIvQXSGcs9bRvVB0EQhzz/VeZTDLljR3oDPuz2lTrhRoEl7dSxD2LN+ICDUpaj5mRE9BTjYTik4DaOYn4cEKna1gZk3Pe8F7nTocOf3gpgZFX62uR1r10itYhzqj1MlZj+2aRGeCJm3KBwu+FILwOadbP7eBt1CTrq3/ZhZRwUAtF64OiaytXLTZiDf8p6Loomi3xjsshv6xNmhJLkQTJXVVKxY/Sqvly/k0mvxL9CIzy6bhQgtI9uaOLzNMRuaQD1rdk1xcwuWN9U4qUry6d1VqUnken3tUju5u1o1itjJM4pCcFrQy81Y+PMjL3N1ULB4Fw== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:VH87TSYG4dj19hyepUS8xZ8IZKhAcga02ucUIPMxgTj1eWjCiYQh8ZrlcQvmGG59CpIBRzc8Gi5MAVH6pAoraHIW4aIVj4IljNV8n3VAsQ2JXiRm+mmqmdbbPiStbiYJNUyJ86UXoCop+l7p1uwCDyy3s60BG7A9Jm8pTrSYfmKh4xb7bvw9vCpFEJTmipNZlJpIb8HdEKGQxUaok3WKlP3w/TO8kFdz5Z1BLRSr5CDGy6QcVRO2xbAD06Ov2IBool/9QbI34tveZAYJ8AnrL26rgtsg0O1LRu7Z8jhQ6QZkuIvNpVoO/w2LcKcYsZdxKAldnb6Qf9Gym9E8xLuZBwAMC5nfJaSYvPfjGoAl3Q0=; 5:fDDO7olebiMi7lj9c+UOOAOEUzX3BcL3agCoHLL6mG0i6pT7ots8PupLavFLWqzrAzqMU8hhwATxHN//yD05hiifbMHXVVsB6oR+TRmc1wAc//AHmh4QrX/yIHxUX+D0mm4UIqQ6/xqZVZwENumZZQZkfUkR1wOAtWIXZc6CL2Q=; 24:An7ULhoVezG3niKRUmDsFbuI3bYfL1TDTgQsbLlWwAmsHtYooHE9KjdiPruo2bOsCZjY0hSXVDMXLtWaDawyhHDtG9WSNrPItDfGAgbxojc=; 7:dpemeYhwy26gLAUHCEAS6M+GLMkz/wcEJ+jw8eERgAA0k0Cwfc22gFL+YBPJEX0qd+LxDkax3em7Cn92ibdXQ7crVG4z/3v3TKYqz8THMJQIpucrNW9NJ5ukhFrcRlyR2N46FrzVmcbyGdhmHCjImiVfDPV4Tu3VhsQzDkUSZrL4RDKe+jzguQsmtkYTqEGAPuQQf+dMAh8QWoStBQejsUyOdlcwMjXNvET3xBzR8nJ3yZuCJAz6wLyYJGWsiUBi SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:z57TQCs9YIQU4eJmB62YlEOTyqqC4y4gHqy1oejf7p7T0CI9EA5R2uqhHlzNNd3IToPrRLhs02b3tp/ttXvccZRC75Ebdc+D4WeRljBDbNKvrwUytlc3Qt6AMiLKElc7wtOZBOjLgla8Zs2bASPt1PGQM+IEoH60KUWNFV4u8eM= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:14.1701 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 585d02ff-b929-47d7-8994-08d5747b51f5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.107 Subject: [Qemu-devel] [PATCH 5/9] nbd/client: fix error messages in nbd_handle_reply_err 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 1. NBD_REP_ERR_INVALID is not only about length, so, make message more general 2. hex format is not very good: it's hard to read something like "option a (set meta context)", so switch to dec. Signed-off-by: Vladimir Sementsov-Ogievskiy --- nbd/client.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/nbd/client.c b/nbd/client.c index 89f80f9590..1f730341c0 100644 --- a/nbd/client.c +++ b/nbd/client.c @@ -180,22 +180,22 @@ static int nbd_handle_reply_err(QIOChannel *ioc, NBDOptionReply *reply, goto cleanup; case NBD_REP_ERR_POLICY: - error_setg(errp, "Denied by server for option %" PRIx32 " (%s)", + error_setg(errp, "Denied by server for option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; case NBD_REP_ERR_INVALID: - error_setg(errp, "Invalid data length for option %" PRIx32 " (%s)", + error_setg(errp, "Invalid parameters for option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; case NBD_REP_ERR_PLATFORM: - error_setg(errp, "Server lacks support for option %" PRIx32 " (%s)", + error_setg(errp, "Server lacks support for option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; case NBD_REP_ERR_TLS_REQD: - error_setg(errp, "TLS negotiation required before option %" PRIx32 + error_setg(errp, "TLS negotiation required before option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; @@ -204,17 +204,17 @@ static int nbd_handle_reply_err(QIOChannel *ioc, NBDOptionReply *reply, break; case NBD_REP_ERR_SHUTDOWN: - error_setg(errp, "Server shutting down before option %" PRIx32 " (%s)", + error_setg(errp, "Server shutting down before option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; case NBD_REP_ERR_BLOCK_SIZE_REQD: - error_setg(errp, "Server requires INFO_BLOCK_SIZE for option %" PRIx32 + error_setg(errp, "Server requires INFO_BLOCK_SIZE for option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; default: - error_setg(errp, "Unknown error code when asking for option %" PRIx32 + error_setg(errp, "Unknown error code when asking for option %" PRIu32 " (%s)", reply->option, nbd_opt_lookup(reply->option)); break; } From patchwork Thu Feb 15 13:51:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873832 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="MrxZCxfW"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyVl67Nmz9s7f for ; Fri, 16 Feb 2018 00:56:31 +1100 (AEDT) Received: from localhost ([::1]:51066 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emK1V-0005Vb-SI for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 08:56:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxX-0001rv-4B for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxS-00010d-CP for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:23 -0500 Received: from mail-db5eur01on0094.outbound.protection.outlook.com ([104.47.2.94]:28352 helo=EUR01-DB5-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 1emJxR-0000zX-VJ; Thu, 15 Feb 2018 08:52:18 -0500 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=SiBAFZM5X2e4WlYicjfsuk54GJz/XhEhi8/deNTgzAg=; b=MrxZCxfW26iumb7TQwUG4uYtakZIGovKyhiMki0MzMv4o3c8uKx/33OM902TZns1JneBk0EVLeGEaWuNWqwL94UlFffyd+S3PdrnQprIIY4REkVM2K8ExVTY/nZ0e4opsSstTOE7T/HF5uSIzVl7sEX8R/PwT+u68fyBGyap/h4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:15 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:44 +0300 Message-Id: <1518702707-7077-7-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78a99187-b336-4f0e-4913-08d5747b5276 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:Fc8jQBaffCMp73p99iu3FFefDgzRSa3dKs5Qxy28yH7xP10TC2KF4yBKwYU1TXF/PlZ9DXHRvz2x44n9sVJUp65NYiYhHgTtBJrOVjTL8um9BBMXRzyANK5EbZFaBQ5PdfJ3SqM4+HfC0nOuU0sbgWzCCyQBspcFi+QHZdQ1qPmVJsu0WgJ2+3JWoiTZAFrnb+g3tr5OZfcSPSlaEKgK4FnZHYCh417XnF2pbbv/LzOUe61jsD91Ooi8Pmes7+iu; 25:V58TDHz44g7ejP2ZPlh/XCRJXJzgA7XrgG/vavi4eTdoFn5zQXzlvU3df1mtcyQyB8VysVIR0NwgNl0UoMLBiuk5amU4XX3rZO2i9DTGyHYcvK8j1uyrlTZYmcxWsGlyggv+BO6GwsYTbQUXzJg5BPVAMnAbQd0oBS4J7B8c5pfk1lbynad6pS7ze0d/9XdOvIjI6nHC7i6sZVbv2jyHlt8rtwPfAoQ9t1edrESjDvNygXwFxIZ8T2FQJGVtKN8Q0yxalm7fWToNa4FVJkng8BH46wIRfd6tMbEn3Tbw7x9AjFKzbaXcr1TZbIBsS4WPiILGxsDpbwBZ1aYP2lak/w==; 31:mWOFblfa9SD848XTD9e2bVsAVGwAKJbGw3J3VcN6WJrc8vw6vYJQpIEsnjHH2AlfeIY+aJYqmpDLRUza9jTAmb+sXc3FsmEBHQBqO+spif9/u7T0S9/G8sbnnxurnmckOzHRzZOUhw1ejiHMjv/PngJdxom31bEUoiKamUHWCf+KXAlbfNdToOVf1QChH1X8pcAi2H9FRiFWQYV4C2sbAu62yZ6znCENazXPCWcHnBM= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:FfNovrKEJ3NbpPNKoHaPh1wykGOCbl65i0lx3NAY30yMt943gnHxKHHghodL/6Q6OmmFSdsNp5jYy6TATQTTFh3CQJLaIvwHGjj0hYhXzhzjCKHAw7XYQZtJE7Rp0ZDCuogvSI00GuwxLdOG940PU4GOb9mD8iqpPCKxnJ7SxmysOtFHdcARXxsPLvlv8WES12ckJ2ybHOj9JJZ5rt16ZDYBXhHDLngSt5bV6hPC5Sm7RkptITEtB4cZFN/C9Z5oKSHFYewTdo79McObs0mycO2fMFia65ich6OLxU5+qn/03M351O/MzOeer0WnOFq0mAIUeVBgSROXSOTe3bpmW/h7LUSBi92ajNk+V0KYC27pPqBIjtvUc2QJQft8XfQRr3vo8J7IerV7qgQPp4YsaS3tNRs7aWzNqFYJqOAUYGYuRWhYy/DWETZLyyfuWs82prqkJpqFfT/e9C+gCtu05jdlQmHvBCnbvwvNrExqvgF66gwaLjnLQNgPFaglEO9W; 4:ZsDWQ7/4EQJVjlpbSW20BKamwUH0cyrqVHm8nu5DXNYQL/skSb1bGYnfF0zPXHmPMCrxOKPLdDa1kc6482O3aX6B08VWqEFLmT0oYhACiFPnlnhTP91fUcsTvpMoDRQ36FGsWZXN9KMw5Y35CQaPIOZxjplRtUuwFkj1fj7DyQKm0q25DNl5K3z9nE699Fipa4onzPBSTcwQYb4qFc7Xnh2GYe3m3HbwuLTfQS4KjO5ErTsPRI1lZOWbyiGx+JeH7ZGvC195SfdLiHZeNkedhueu8z9q6D5TueSqwWHNdK/1TymoTaKeljrv6aV8m48t/5+MRoXzwizaZ/bTv6sro65iUMb9I4auSHK+B7yEvAw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863)(150554046322364); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(59450400001)(6486002)(575784001)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(5890100001)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:1T7MGAwIMEx9pHXGFRwC4/uomgyyHqDCQ0jZE9V?= iUITbDO8DmGpT56DN8SMYWuVtS3vEn7kx2V8Hkslk85sIWFYaxmQ6xPjSRbJGglfg9MkOEpYg7xDl9Ohje+VcpS5iaBk2e+0UUeHRC/xa1QUwCaeT8WiDtEBZZ5QOgF+SMssYWE4fdHkguIn2MXQ3LBccDbVBOWtcaNS6rVSNrDnRQxxcw4/tKjCYWy8uEbDxKpmJmCF8jQZB1Al/HxiAcnFgvtXSJ3lrgsJr2Lsp119JjMtZL1/d2Vo3wq9RYxoO7MsLonbUl9Pc32LcpFJ2UB7xi7kuzIM+daF5C303IBPgtkPXZ9oY2lZ1i8QlUJQs4vdgP+7Q14jaOycqu5MylB8het8SapRBv79p3UeZ7hwzxCo8FwrynWdH1NiFnaCDGRdhfGEUsb1SyVcCsDVMxnJAk6E/b27JtPUCLXoJDmiGH5zJPgwy52LkM+XU1uE6lhb7NFF146H52Siyx2By3SE4IGgQxjaCh5wRuezeoMNi8Ksq2yHV9C+0iOR6bUS8NiJaVhhKkIiNj4FyGlYB3y8tqQzQoPgrtM+bv0DLkAL8fqKG2NGwgMr88fj1NpyhhnFKhnkdHnLzyTb0YqSHRvhqQq7JCLbuuhS85v8OaJ+FLff2h4RmlAQQ6NGXmjKF1cwFOciXgR3rgJpgWMW/Db/owHy+oDQP8+WoDSsFYnEEh4HNRBpoliWF2UaZAim4Ged3fJsQLpb2nTz3JC+Ui3+eax/ldl1ETBv9Gn9728c8lzxF+i/ptSETwRw4IkOLuY3WFyQquVtzg+VkHk8ePNbI9hMwSDejg/l2tmOr4DpcT4bKK6NKXQxsWJzphdLYAMnNohE2ux+bituZm0AsCniHdHUgkghKZApu8EVDxMQFY200AnOdG5HFmE3jRUg0wdFwAo9AtUE1xmuijacYMwplzqYIHHH1pdOOuS9Gs9XYvnqnLsUcJiit67EkQ5N7pVZyeuu1gVpAxVGa30im+bh+ezUhjSVYv7EsewmVQvPM3MKtJbFtM/GWpfrMHr2FB055bnQ+4TYt4Gmbxx/VW+yAIzLSFikxZzfyiGOoFc9FL907Gnl9yh7APDoFhdr1WUr98e/57M2zcCItpZisVg0Sn9SLs6o8AQUmJp8/o8H6x8rOQVzmsRL3SaDSmI7tMc/KPAu4g+o00eO2ng2ewpGAO8V3bjbzvwa1xgopvrzknLS4pHn9jOxlmsZRom7YA4phkmmfFvFuAd8896hCeBbeAHQftBdHckXRTIVDR0MMTQ== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:B/bDpLEWtzOvwRiNsWFvHqGQoTDTj5qLiwOEbxN/svPdys6hYSZ67L7yzDd8LO0NT0KnJrmf+hxoYeQvwXarcRSkBrLnv2uVDWLS3+b2Zf7t7gyB2eLl1p5Zd1NPNCqxNHdzafgT0R9guzemN8rVM3h/DkTv3/7qp1TGGwINSCqCROG78vHKsqV8af51j9hb14sSJLaX/MZuDhs/yUvO6Y1ABG6cXMDqN7ncKQt14nqh0An94IRb5e1+ggVADFdo+jbpdUVdIVLhJnMPcq5CFu5Ma85jGaDp3dFl0hwfcRnSgXRjtKdapX84uoU4JJ/TPWMYLHrtn2fUxxmyBk895pk4AJ2jvgj0BfKhYJrr5PY=; 5:4M42BlqrsnqqnmGVIkeLQDg0iyxaauAaj7RVmkfkSjxM6Pq/Fxn18LSUQnnBiL+M8+L+0M7oTlLN0vBAGEOEOGSP52twhK86EMtFDpgxZFNLUmkjxgA+XzozbxaTNoDv4I36uFNaCj7CN3wXWcn26QKWJ8xWsue0b8pMcPaa1Aw=; 24:IP3tfZ3lN+iz1hZ6pIMl5aSlOcFKpuxA/jdWKXQsxfBuULllLu1OJQBdfn1gS+n2Dxys6EyNF5q5xRvbSnz0MPfMtsX1Sw20FoHGZo2l2I0=; 7:SvJtGShqrCSzgiLSzuSeTi9IAjXlxRM0yNTHOY8GmmVii1bY2ID6EMHbNrwPocdLLy8XUynKlNnQZyKVQpyKPcPXLLIiERqWcRWcxh+XRei0uuNR/zTtV9EIEr5NQu/OKEj/kjGt5rOYOhQfC0dgAwy4rsksCfahbXKeBqAx6ao4SlelVQFLgdeWp6aYx3P018KrtlNFbnVZqYgSgFBH/XC2jN7NV6tmuMwcDid33Tc+WVoEbef2tJIWqInoe/nu SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:dkBAIEfzbRE3KqvGtDNZZGF3Oper2cYCbnJsNpY/e3jaegWYcqXNnTip3PbVFFuAcC8pB0aQv/jMhZ+6v4P3au30q06jmWMnsv7SjCWHLVYe910Z0b2AXjksUlvpzrdJzRu+qyZbRsCxQtbRUdQ5gxXURyArHqJIyauqQqa8iK4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:15.0138 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 78a99187-b336-4f0e-4913-08d5747b5276 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.94 Subject: [Qemu-devel] [PATCH 6/9] nbd: BLOCK_STATUS for standard get_block_status function: client part 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Minimal realization: only one extent in server answer is supported. Flag NBD_CMD_FLAG_REQ_ONE is used to force this behavior. Tests 140, 147 and 205 are fixed due to now server failed on searching export in context of NBD_OPT_SET_META_CONTEXT option negotiation. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd-client.h | 5 ++ include/block/nbd.h | 3 + block/nbd-client.c | 139 +++++++++++++++++++++++++++++++++++++++++++++ block/nbd.c | 3 + nbd/client.c | 114 +++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/140.out | 2 +- tests/qemu-iotests/143.out | 2 +- tests/qemu-iotests/205 | 3 +- 8 files changed, 268 insertions(+), 3 deletions(-) diff --git a/block/nbd-client.h b/block/nbd-client.h index 612c4c21a0..ca0cc141c0 100644 --- a/block/nbd-client.h +++ b/block/nbd-client.h @@ -61,4 +61,9 @@ void nbd_client_detach_aio_context(BlockDriverState *bs); void nbd_client_attach_aio_context(BlockDriverState *bs, AioContext *new_context); +int64_t coroutine_fn nbd_client_co_get_block_status(BlockDriverState *bs, + int64_t sector_num, + int nb_sectors, int *pnum, + BlockDriverState **file); + #endif /* NBD_CLIENT_H */ diff --git a/include/block/nbd.h b/include/block/nbd.h index b16215d17a..baf12e5428 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -262,6 +262,7 @@ struct NBDExportInfo { /* In-out fields, set by client before nbd_receive_negotiate() and * updated by server results during nbd_receive_negotiate() */ bool structured_reply; + bool base_allocation; /* base:allocation context for NBD_CMD_BLOCK_STATUS */ /* Set by server results during nbd_receive_negotiate() */ uint64_t size; @@ -269,6 +270,8 @@ struct NBDExportInfo { uint32_t min_block; uint32_t opt_block; uint32_t max_block; + + uint32_t meta_base_allocation_id; }; typedef struct NBDExportInfo NBDExportInfo; diff --git a/block/nbd-client.c b/block/nbd-client.c index b1cbe95b13..a80d69d3cd 100644 --- a/block/nbd-client.c +++ b/block/nbd-client.c @@ -228,6 +228,45 @@ static int nbd_parse_offset_hole_payload(NBDStructuredReplyChunk *chunk, return 0; } +/* nbd_parse_blockstatus_payload + * support only one extent in reply and only for + * base:allocation context + */ +static int nbd_parse_blockstatus_payload(NBDClientSession *client, + NBDStructuredReplyChunk *chunk, + uint8_t *payload, uint64_t orig_length, + NBDExtent *extent, Error **errp) +{ + uint32_t context_id; + + if (chunk->length != sizeof(context_id) + sizeof(extent)) { + error_setg(errp, "Protocol error: invalid payload for " + "NBD_REPLY_TYPE_BLOCK_STATUS"); + return -EINVAL; + } + + context_id = payload_advance32(&payload); + if (client->info.meta_base_allocation_id != context_id) { + error_setg(errp, "Protocol error: unexpected context id: %d for " + "NBD_REPLY_TYPE_BLOCK_STATUS, when negotiated context " + "id is %d", context_id, + client->info.meta_base_allocation_id); + return -EINVAL; + } + + memcpy(extent, payload, sizeof(*extent)); + be32_to_cpus(&extent->length); + be32_to_cpus(&extent->flags); + + if (extent->length > orig_length) { + error_setg(errp, "Protocol error: server sent chunk exceeding requested" + " region"); + return -EINVAL; + } + + return 0; +} + /* nbd_parse_error_payload * on success @errp contains message describing nbd error reply */ @@ -642,6 +681,61 @@ static int nbd_co_receive_cmdread_reply(NBDClientSession *s, uint64_t handle, return iter.ret; } +static int nbd_co_receive_blockstatus_reply(NBDClientSession *s, + uint64_t handle, uint64_t length, + NBDExtent *extent, Error **errp) +{ + NBDReplyChunkIter iter; + NBDReply reply; + void *payload = NULL; + Error *local_err = NULL; + bool received = false; + + NBD_FOREACH_REPLY_CHUNK(s, iter, handle, s->info.structured_reply, + NULL, &reply, &payload) + { + int ret; + NBDStructuredReplyChunk *chunk = &reply.structured; + + assert(nbd_reply_is_structured(&reply)); + + switch (chunk->type) { + case NBD_REPLY_TYPE_BLOCK_STATUS: + if (received) { + s->quit = true; + error_setg(&local_err, "Several BLOCK_STATUS chunks in reply"); + nbd_iter_error(&iter, true, -EINVAL, &local_err); + } + received = true; + + ret = nbd_parse_blockstatus_payload(s, &reply.structured, + payload, length, extent, + &local_err); + if (ret < 0) { + s->quit = true; + nbd_iter_error(&iter, true, ret, &local_err); + } + break; + default: + if (!nbd_reply_type_is_error(chunk->type)) { + /* not allowed reply type */ + s->quit = true; + error_setg(&local_err, + "Unexpected reply type: %d (%s) " + "for CMD_BLOCK_STATUS", + chunk->type, nbd_reply_type_lookup(chunk->type)); + nbd_iter_error(&iter, true, -EINVAL, &local_err); + } + } + + g_free(payload); + payload = NULL; + } + + error_propagate(errp, iter.err); + return iter.ret; +} + static int nbd_co_request(BlockDriverState *bs, NBDRequest *request, QEMUIOVector *write_qiov) { @@ -784,6 +878,50 @@ int nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset, int bytes) return nbd_co_request(bs, &request, NULL); } +int64_t coroutine_fn nbd_client_co_get_block_status(BlockDriverState *bs, + int64_t sector_num, + int nb_sectors, int *pnum, + BlockDriverState **file) +{ + int64_t ret; + NBDExtent extent; + NBDClientSession *client = nbd_get_client_session(bs); + Error *local_err = NULL; + + uint64_t offset = sector_num << BDRV_SECTOR_BITS; + uint32_t bytes = nb_sectors << BDRV_SECTOR_BITS; + + NBDRequest request = { + .type = NBD_CMD_BLOCK_STATUS, + .from = offset, + .len = bytes, + .flags = NBD_CMD_FLAG_REQ_ONE, + }; + + if (!client->info.base_allocation) { + *pnum = nb_sectors; + return BDRV_BLOCK_DATA; + } + + ret = nbd_co_send_request(bs, &request, NULL); + if (ret < 0) { + return ret; + } + + ret = nbd_co_receive_blockstatus_reply(client, request.handle, bytes, + &extent, &local_err); + if (local_err) { + error_report_err(local_err); + } + if (ret < 0) { + return ret; + } + + *pnum = extent.length >> BDRV_SECTOR_BITS; + return (extent.flags & NBD_STATE_HOLE ? 0 : BDRV_BLOCK_DATA) | + (extent.flags & NBD_STATE_ZERO ? BDRV_BLOCK_ZERO : 0); +} + void nbd_client_detach_aio_context(BlockDriverState *bs) { NBDClientSession *client = nbd_get_client_session(bs); @@ -828,6 +966,7 @@ int nbd_client_init(BlockDriverState *bs, client->info.request_sizes = true; client->info.structured_reply = true; + client->info.base_allocation = true; ret = nbd_receive_negotiate(QIO_CHANNEL(sioc), export, tlscreds, hostname, &client->ioc, &client->info, errp); diff --git a/block/nbd.c b/block/nbd.c index ef81a9f53b..72c90c3c27 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -583,6 +583,7 @@ static BlockDriver bdrv_nbd = { .bdrv_detach_aio_context = nbd_detach_aio_context, .bdrv_attach_aio_context = nbd_attach_aio_context, .bdrv_refresh_filename = nbd_refresh_filename, + .bdrv_co_get_block_status = nbd_client_co_get_block_status, }; static BlockDriver bdrv_nbd_tcp = { @@ -602,6 +603,7 @@ static BlockDriver bdrv_nbd_tcp = { .bdrv_detach_aio_context = nbd_detach_aio_context, .bdrv_attach_aio_context = nbd_attach_aio_context, .bdrv_refresh_filename = nbd_refresh_filename, + .bdrv_co_get_block_status = nbd_client_co_get_block_status, }; static BlockDriver bdrv_nbd_unix = { @@ -621,6 +623,7 @@ static BlockDriver bdrv_nbd_unix = { .bdrv_detach_aio_context = nbd_detach_aio_context, .bdrv_attach_aio_context = nbd_attach_aio_context, .bdrv_refresh_filename = nbd_refresh_filename, + .bdrv_co_get_block_status = nbd_client_co_get_block_status, }; static void bdrv_nbd_init(void) diff --git a/nbd/client.c b/nbd/client.c index 1f730341c0..61e012ecb0 100644 --- a/nbd/client.c +++ b/nbd/client.c @@ -594,6 +594,108 @@ static QIOChannel *nbd_receive_starttls(QIOChannel *ioc, return QIO_CHANNEL(tioc); } +/* nbd_negotiate_simple_meta_context: + * Set one meta context. Simple means that reply must contain zero (not + * negotiated) or one (negotiated) contexts. More contexts would be considered + * as a protocol error. + * return 1 for successful negotiation, context_id is set + * 0 if operation is unsupported, + * -errno with errp set for any other error + */ +static int nbd_negotiate_simple_meta_context(QIOChannel *ioc, + const char *export, + const char *context, + uint32_t *context_id, + Error **errp) +{ + int ret; + NBDOptionReply reply; + uint32_t received_id; + bool received; + size_t export_len = strlen(export); + size_t context_len = strlen(context); + size_t data_len = 4 + export_len + 4 + 4 + context_len; + + char *data = g_malloc(data_len); + char *p = data; + + stl_be_p(p, export_len); + memcpy(p += 4, export, export_len); + stl_be_p(p += export_len, 1); + stl_be_p(p += 4, context_len); + memcpy(p += 4, context, context_len); + + ret = nbd_send_option_request(ioc, NBD_OPT_SET_META_CONTEXT, data_len, data, + errp); + g_free(data); + if (ret < 0) { + return ret; + } + + if (nbd_receive_option_reply(ioc, NBD_OPT_SET_META_CONTEXT, &reply, + errp) < 0) + { + return -1; + } + + ret = nbd_handle_reply_err(ioc, &reply, errp); + if (ret <= 0) { + return ret; + } + + if (reply.type == NBD_REP_META_CONTEXT) { + char *name; + size_t len; + + if (nbd_read(ioc, &received_id, sizeof(received_id), errp) < 0) { + return -EIO; + } + be32_to_cpus(&received_id); + + len = reply.length - sizeof(received_id); + name = g_malloc(len + 1); + if (nbd_read(ioc, name, len, errp) < 0) { + g_free(name); + return -EIO; + } + name[len] = '\0'; + if (strcmp(context, name)) { + error_setg(errp, "Failed to negotiate meta context '%s', server " + "answered with different context '%s'", context, + name); + g_free(name); + return -1; + } + g_free(name); + + received = true; + + /* receive NBD_REP_ACK */ + if (nbd_receive_option_reply(ioc, NBD_OPT_SET_META_CONTEXT, &reply, + errp) < 0) + { + return -1; + } + + ret = nbd_handle_reply_err(ioc, &reply, errp); + if (ret <= 0) { + return ret; + } + } + + if (reply.type != NBD_REP_ACK) { + error_setg(errp, "Unexpected reply type %" PRIx32 " expected %x", + reply.type, NBD_REP_ACK); + return -1; + } + + if (received) { + *context_id = received_id; + return 1; + } + + return 0; +} int nbd_receive_negotiate(QIOChannel *ioc, const char *name, QCryptoTLSCreds *tlscreds, const char *hostname, @@ -605,10 +707,12 @@ int nbd_receive_negotiate(QIOChannel *ioc, const char *name, int rc; bool zeroes = true; bool structured_reply = info->structured_reply; + bool base_allocation = info->base_allocation; trace_nbd_receive_negotiate(tlscreds, hostname ? hostname : ""); info->structured_reply = false; + info->base_allocation = false; rc = -EINVAL; if (outioc) { @@ -699,6 +803,16 @@ int nbd_receive_negotiate(QIOChannel *ioc, const char *name, info->structured_reply = result == 1; } + if (info->structured_reply && base_allocation) { + result = nbd_negotiate_simple_meta_context( + ioc, name, "base:allocation", + &info->meta_base_allocation_id, errp); + if (result < 0) { + goto fail; + } + info->base_allocation = result == 1; + } + /* Try NBD_OPT_GO first - if it works, we are done (it * also gives us a good message if the server requires * TLS). If it is not available, fall back to diff --git a/tests/qemu-iotests/140.out b/tests/qemu-iotests/140.out index 7295b3d975..b083e2effd 100644 --- a/tests/qemu-iotests/140.out +++ b/tests/qemu-iotests/140.out @@ -8,7 +8,7 @@ wrote 65536/65536 bytes at offset 0 read 65536/65536 bytes at offset 0 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) {"return": {}} -can't open device nbd+unix:///drv?socket=TEST_DIR/nbd: Requested export not available +can't open device nbd+unix:///drv?socket=TEST_DIR/nbd: Invalid parameters for option 10 (set meta context) server reported: export 'drv' not present {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}} diff --git a/tests/qemu-iotests/143.out b/tests/qemu-iotests/143.out index 1c7fb45543..ab6b29b8fb 100644 --- a/tests/qemu-iotests/143.out +++ b/tests/qemu-iotests/143.out @@ -1,7 +1,7 @@ QA output created by 143 {"return": {}} {"return": {}} -can't open device nbd+unix:///no_such_export?socket=TEST_DIR/nbd: Requested export not available +can't open device nbd+unix:///no_such_export?socket=TEST_DIR/nbd: Invalid parameters for option 10 (set meta context) server reported: export 'no_such_export' not present {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}} diff --git a/tests/qemu-iotests/205 b/tests/qemu-iotests/205 index e7b2eae51d..8a8e0df40f 100644 --- a/tests/qemu-iotests/205 +++ b/tests/qemu-iotests/205 @@ -79,7 +79,8 @@ class TestNbdServerRemove(iotests.QMPTestCase): def assertConnectFailed(self, qemu_io_output): self.assertEqual(filter_qemu_io(qemu_io_output).strip(), "can't open device " + nbd_uri + - ": Requested export not available\n" + ": Invalid parameters for option 10 " + "(set meta context)\n" "server reported: export 'exp' not present") def do_test_connect_after_remove(self, mode=None): From patchwork Thu Feb 15 13:51:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873834 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="I+gj2rd+"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyX518fkz9t2l for ; Fri, 16 Feb 2018 00:57:41 +1100 (AEDT) Received: from localhost ([::1]:51236 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emK2d-0007dn-8q for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 08:57:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51185) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxX-0001rz-5P for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxS-00010s-PZ for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:23 -0500 Received: from mail-db5eur01on0094.outbound.protection.outlook.com ([104.47.2.94]:28352 helo=EUR01-DB5-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 1emJxS-0000zX-Ih; Thu, 15 Feb 2018 08:52:18 -0500 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=X54c1oocdteDdI0DEoQJbTMIpjtioAXY0WWdJrzv4yw=; b=I+gj2rd+EGmXOQRG4Q8Bs+nW06X1kcljWW+O/w0WBm3rkRZua9zyRoSLj2+OlDOTpN90SSMjQgiqnudLf0kGBBgGlSyygFTog2bVMCF1xBgT33I36Q3GVit24xKyJv6NTLPG0U+OCZJFgnBHQpSoxY8xfnWwhWFnuMoZlHJKZ30= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:15 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:45 +0300 Message-Id: <1518702707-7077-8-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d415233b-0aea-4145-2f9d-08d5747b52fe X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:/FQhLpqxkiZjqqwzp5b/w+4R3zXbZ2QMrd9dzF2LZqVY8ufJI+vAf06NopDl87XrVwgfSQ/pQX0PxFHgVJYu2nhQvil4z0ajjS4lD8Mb1YJuXMDiYoHiW3KwlY4O83EiX6MPpdyqoYaGmiwM3L/SWr4byvixOkuSqKNW4pjOde3m5scwi3EIblP1LZsjldZJW1q783eIeQzgiineaTnUt4Ob6a3kx4AcDca8GyNGKUgmHO7RTn1cEp7ZDIZyB5SD; 25:UDsqsN3HVmzYqo/httn/YquAUfY0FQDaJBMkaiyqP67iqSj1Wo6vS234mXDhLSOtF573HLxHkVGeacHEYgQFfQ9xplWGD+fd85j4zh69KjfrJTsc+BORUQmVKQXa8lHfHBwlptmqKVIJ4mraN8SWcNaCC06X+JAgi/RvevY63HAT1fSm2dhWJBpoCiyUkO7AVFutP2XmDJajwQSYczPNI5cFXlXKLvNuyof7DZ3BB4guy2PjczrR5JV2y7L6SjL16LFPvKJNcM+6Pwr2p477i/vC33tZtrOP2k4IYRTsXgOHzD3NQAUxSOA7txNKqjXYLSDwCGr8+C+x0xi57i9AXw==; 31:YL93GqOKfT1/c4U1FXS17jgLISsP9U2euJyKJGTCAzQ66YZDnNbesKW4qlmTQcm+AG6rJnmYvqRDaLPQAoee5wJyGBGs31D2AsfSiWJi/kLTfgVWAdH5L8qe8eqECa2rkiiMiD+0qu30DxEdsRJRJQxh19jlFjq3anCckOykb9hZ4pnWvfZ+hgOLrrvJVA8GZ0oRlRVbYHaspAKpGQwjm0b9EV6eRTJgTYk3Qico7/s= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:R89vQILDcwAOR4ZQwxsURChLLBodsR6an0CRxpqYu+2DFH11/SUlNKzaXp9iHpmixTd5koJGfFtIz/1OC9tJRVbAe8bevosWHkZnJnU8wfFMVVjRsJaC8vph66maNjmPOA5oYwXA01/RVZjUQPpGYz9Gszib4cAEnXdj/R59JwFnmnveYMNtYKYEI/erJdWCu5PWkWol1GNX5y1+n+mr2Pf4QYxZq6OXTSqKvTQYzNW0wBkRDUlW8ydGe7KoifoaClTtPw7YSv4i5gXWlgwnd8AE83I66svak/jsS/ntIxulip5D0IpFCU6rUF2GNuO49Ux36nvMLPP1mlDp98ySwBGX0gQ2StxpQbxMXKaMMg1uDQrZTNwZO1DKEb59jH20/CWMc6vD8iqHXHcHE6xqo102so9IKnljO+bzoc69NB+Z0JxRu7rNuVpFfsq3sDoqxWcizu9SJ6R9/RVvw4LC5+m1gOv1nenPXOQlLHGIZPtLexr2dNnPEcWqMYmbv3J+; 4:NEbeKU1y+DSYYYz9A8tCXROCJHKrSmX4GeqJArJ32moKGQj19JCojZh5VmwrPtTnswkDFsujGyrE1hWa2BWeQgjI508k1m2CJ/yqO82B+XFDd2c1wPboVth4Ie0H7GwXA76LtDzbhPi7OYEjsaoyMkLvm/UP71ooTk4IyfeIgw1THV83xVdJtFTXDS+vRCZR3dP5P9+ms1L9fQA8+h3lSSjI/JiSLoUdvpzjLjxMfaeHmdqmsSdmU4AdT3Ov4bVD5w9QRvITls4dJJUl0kyXCQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:4P3cr+tp9rl4MGzVXPnzjIhaOq6l9WmFlLfo3O/?= grDR86v43zCh/g66Fh5HaagaRX2d6+EFnvcP5dTPkO5lyOMgtSSMY3CFbGzEJE1a5uEjsQ3DxBwNc8NR4kBlLhbW8e4iNabxhjuCKjcyK2c774wEI2ukKV4pTFdRH1+DAZcMvgjJkP2wd4FAS6T/wG4H/9DUBjQLLitm7hHDPhx6E04y4dPzNsvFQ5GKyNm1rgvhX1wD8Gqb0Qh8BJAxCUyJzx+EOl6lc6jVwMXANm4AapXgeykKlv3xhgfpGnZLmp0Fqe5paUfjhcRnY8xRRcRSxHJM79dPHLPMC4fbY9U29gyZEgwhKZPZXH/dIWbVMEeBTd1hv0QmzNWHo/eo0tJXucc3tl5NAiqUwG4Kvpp0YSb9RXzSWRY5KkBkLkosj0GS42Z8xla6HFRbnvPdbg0ABKO20HwA6wDQ7XMLzdE5jLXwmYfSMhtUdIepaEo7aNO1TaEYy6NOF3Grv2jFEG/6ung6CV4h5mGSVzqjMKP3ahuiQpstnmxeSBeqnlju7MH8irjcKoWr8/SsFjOYtRTT4Ye56d1GRsh+ANjejcGiGRk7PQpHTahRBkPXqVZBGknmvths17p8b38KGvr27k49ETvKI73e+Hxats1B7kQtTaIOkfd0oq2uxpFI6ufSHNt9cLiS8RDaWfXREl8nIGmgwK/qrdqMlqhm/v2mtMLdkoSX2l2fskoJxNVBi2IpQQpcifASY8nVf1DDc/rHnnCIQ/YBhkALAB4hfOYju0t6Im2AgeKFu1veLn+xn0sEXFNOgLpNEDvr56r3S/a2cM5nP+ijnNQnsgOMHlytxtwfUDRqir0jMZ6h2/X59EwOmOPR4kTTrjAKxNZ7V0oOcJB+ru+0bHKoy/9TcRMXk/KcyJFC4m/OsRdI3mgfAdoCuaWPCj5bAmVo1Sz/jGgY+v3AdVHOA066CmqMml3lLWWHsSMAAtyWapiYHSksQvMGqRY5CPwUT3ph2Ht7Rsd+S/npZZP2kR4Z8nkiqz3xR7Yd10IeZXHLKa9OkGYX9y1ZB1t67db49+yKnpbjONuQQ1bhzbuMgYxUog6VuFA0b1G+eJ9lGkBbOnKSIfyxo+cw/6TzgQKHY/afHghYh2qYLLIsJkw/jtg0yh4o6d3uKbRMf1mVVgc1LMWIdIw6ejUC95HA= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:0j153aqHnruoREyJQwAqhPXfsk3PjFCmeOJmYmqXkxE/CB0hjRAGQLxpwnNiISyuLnssZNeUFH0kxOs06WqbFS09VtDD+O1hDeGwkW3nlkQW8W+eNcNNnuAJMRWr9bx9GHhcYmOt/RgMN7tuRHIAEU37o2a+QHtTs29wJx087bMPsBVmVgDHlJZnAzr1IvSi6j9fNOOfmwRfyNrsW6SQUPvEyyF/mRbVvS3q8WsQEwkL5mnI/CC2btvaueU96O8IIJ9Tj1zV/4PzdstZrvK8ZhneZQ9aJnhZJ3stNy4gfOZPTaH5Fcc8NY6DK0XL37H/Q97SLowsUowyWC8/fpdWdG+niujA9EpTs3QGGJ1iJ0E=; 5:EfnCmKNFljs83udH009HFxSdmjjb7U8nVbCgFZ3vZZnjR7puJNUI6HmMbr347Rou4JRIP5fw4bwoQsEBKcuemdKg2PJnJvrvK6sJY3YUUfK6+fvUQzc5yM9QXx4XHAvvDl4Q3z7gHPXbnAtpZqWhCgWiKBswpaBTRFzooNbFtdc=; 24:IQQwpLk2SnVta1olbMzo6H3lW5Or4a1ykwClkN3VsQM4DPGHODiBjp5I4/Iq2LGfbETT0yg4ble/CFci5tHXGcbnuzGv0q4Q47/+k5yYOmc=; 7:rlfgpljz01hEf1YzP9b4WCF69k64Cf8mvrTizIl03/2Fddg+yVbNKiQC1gcDpDYKjBhD95lZnXGj4Q0tnZtL5PmnmbCJLpB8xYZi4Js9X0pLan3TPPUES32laq140PdVYQJ3CozjW49+Wu3dv1L6o/PvfbKlep9wEW/jZJS9pJ9yUqt1vm0ZvHS+q+qygAUgQCkfF+wO+w5cGw1spS9sz5qJT3dCG9gDUF/aItJsKgYwef/Hny96OAmDo+Tln17w SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:SwIl/GarTrGcvAWcFW4fNchGfwNgR1k7+bLAqgmZ4fvdYGphKsToE6kWoxqjmx2gtg03D5Dun/2Gb3SqbWvlV+hFJhApPUQKuZ6J0+WllfEC4UNj9huRqMbx1D7jpC2bZGbW/di9GCs8LzX4JNULIX/r63ufp8DF6LJ5T4e996A= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:15.9201 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d415233b-0aea-4145-2f9d-08d5747b52fe X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.94 Subject: [Qemu-devel] [PATCH 7/9] iotests.py: tiny refactor: move system imports up 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- tests/qemu-iotests/iotests.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 1bcc9ca57d..c1302a2f9b 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -23,13 +23,14 @@ import subprocess import string import unittest import sys -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts')) -import qtest import struct import json import signal import logging +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts')) +import qtest + # This will not work if arguments contain spaces but is necessary if we # want to support the override options that ./check supports. From patchwork Thu Feb 15 13:51:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873855 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="GWFjkkYX"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhyjn5GG4z9sRm for ; Fri, 16 Feb 2018 01:06:05 +1100 (AEDT) Received: from localhost ([::1]:51547 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emKAl-0007Kc-O9 for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 09:06:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxX-0001sG-9N for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxT-00011V-66 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:23 -0500 Received: from mail-db5eur01on0094.outbound.protection.outlook.com ([104.47.2.94]:28352 helo=EUR01-DB5-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 1emJxS-0000zX-VL; Thu, 15 Feb 2018 08:52:19 -0500 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=6CeLpMBFZ1zJCSWbS8EAlGV2NosvclIp4O1aoZHPw5M=; b=GWFjkkYX9t4/lLO2WURYN1iDVgqTi68AsgFNiEzIh/ww9DfnbOBjQbYER7DWTnAmnbO3Yo3MXyETxwT3KiB5DCAy9/WdvqfQM24bGYaS6vnuG2bX45cgbje+x7r2DEApgmUMSC2pS0VtS95vBy/U9xZvTTWXcmYG1G4l5kmmgAc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:16 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:46 +0300 Message-Id: <1518702707-7077-9-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6900800b-235f-46ab-b3cc-08d5747b5383 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:jq+NesHuTv7d0gl0G3ifWT5UVDeslIw8NPer4E9WKtk36H9szWsZRarErhR+9oH1BSJ8AISMPReCYuokJ9L+bggR2K6YCA4Mh2Psh2k3w5WebEF6SSfW/+9W/kqzitHljZVVPKskagjkWXeEI7sRJnOEwhf7TGRacaG0UMk+Pt0ZqNxupq0Eh1rJa/CbZbNR9KjbvUM7WrEQ1VJTMZJ7sMVFNzUjje/z1+5f1PsXh0kNiccntWwKMe3ytL5kugpv; 25:76RktuvWPg3sAcehcefwXn1YJLE2WwSzgMAkwnYttPSWxVEOkGQIWIYm5jxeCcovWqtOr2jMCDrBNvNhnrJYcUjfgowmBaa5qgD8T/Fp0bPNSNY2Uw9gRKhSRYhuMsWFHO6BVFVxKCvJyzb21RkbW6V6bheFB8yF/R7hrPNKutQJbz3vIkQCAy64zj5LytWvEGeCfxtXT/ylG1l22tkpFHVbchY4CiCnduTO5Piwzc8ozEa6BvJciTSITgrJtQyT02TT67qWjIcCfOL5JhXpPpCc8a4SeLNtpdmd6cZw2fGMHvvjzzFDC32L9XhRrDylqsPHVfs7cUg/gPoQWzuEEg==; 31:TNYydNlv6m/uf5gbrAva4R/WcwOQ7BuvceIvZ7226yXkhb9GG3m5mce0ybFUjnvcJAkHP+HnLTdpVaag8HX1M5x0RvjwT7kuLhemDZK0jS2I/7qg4+7XK2ipnTfB+RkEE4Od9WZWSag21IyrJHlGl+MH3r/VluY9juI+vAGpRJ5KOSOk9QsDf5NZp7WweP11OWidlv9cWs/q+QrGr5S9UytUCxCNNB5uUXLbC45BcjM= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:Xgd8oaeMS+URLS8in6YRDVxsW84PPLtIfUL8JtVPAyWlgmUuBK/kvR16jZOn9LO4lmUO+1OpStrv7oaRR4m6qmHfBtjIZmsMgo56CTHhu1gGhpRXBCKrimTzniAUjmaFAMtWgUq+h89MYtEt89BWSsxcPt97htPEOxINW7dq0vhn1ofr043KTqrN+2J9eNi1FWqMYsmB9H3LYLvy0YdalwUsh3EbRAktt8+ExdTM24IHiOklD/0rM0n7TqS8rEHcc/bMBWZfnHPqoqEcg5d8XOUoqzkGmmjaB+a09f2gcQ/+wglelwTFloC6U5+wj/SULXGCf4cy1mJCOiNqRl7mIg80u33AYu2FPRMwK3MLtLuX3w9P07MajmyBp6U7ip8+5+3Q69DUQhQJ2NU2oV54Nm5Y5seBfb0AVn+wczAQL5VBMJDUnwAYk1gUGIWDt5rocvegt0WijQWPOWCynGMkgSQmdtuYvp86xjH643fxkMdnQuYAt0NqCf4mNhCuQYsr; 4:Hmukpx2+MRsJ9ArzAUJYAqihxAoF2SdY7G5FXWOJ6XJ7zvKktWIoZDgJrU2QBgPgJxh0lD4N5MswYb9YD4SRSWQC1Y11RI55nQC65Hh1jQuktEL0Xo6JlSihknY5D5zbPNaCBDE1NIOgsroxGljebsWX4XTXV830f8k4lmkpVHqqPspRV+e1or7bP+Lv8mdJTxmvdWknn8kh+zq5oROi3OYzkB2X5QcBg71u45Y/kk8uOU0BxWmuaadQu+iq+np7ZQTEfsF3eVd8ynbi4sFvhQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:m4C6wVrSSiRWiaJwAaMhikstwSampERGOkxYiWm?= SWqxpADeLhLUg42o0V+70ps7/jzOwKhyzAgtktISTkTdhK+lZpXwoBdQWP6p23dKz2JBZ4RyHxewXCznf6b3l+a3qEcatwBG2dayz7U0rpT3037Morr1XFntDu0+WGVhPxyUWGBUK7NjeekmOYYBegtDj+EolZOqAZN/kutSV/kG1oYBQSG6FoiBXnJtdRmcPum+fSgocHmf0X9OlKLVhY2FOX6quM7793B7Ii4qJ3rfMD01henfa/1dWsvmLcXBHc7KFxe2KfUeArZPXMl2UAgZnlJYWs9UxNPHuEkAHc1GR7MRh696D9XJt7IFjJ4UuL3xRgUNgPqWDTBwR1nuaIJG/ZEk7jtDxb2Vc+0tPwqQsGs7JhpV5mAROv3D7g/khjj2TlVS2J/oo86XvNk/S6BgAl32z48obIJk0dMP6PYGSV8urIIZND7UgnQj2Hi+g3QZZShC0fur+v5UxrUSXy5oW65UtnP5Ko0VHM5b7YNBpGHkdHEMR2yY6FNwrNeVvteVkCHLQBzVVrlJ/NlvXmyFmbf5RNi9o7x/IotwT5jkbiD5R3LNwAeDpj7KRC0bc+JRk6Ubc+B6FwrjxtRupKSirIA7hD6tbswfhM/sfbAK6QjoOc7TiefA7V+wokfKDOHeOb5r1c23nO3eXQjEwGHeF0bpomaJtf+MabxbEQ4a+gbRDtHoMTTlLoQ+50u/197HhPPlH/ZKogYylSPu3XBSzehAYR1tjBTZGkTR7VEkyeGaVc/x/Qi3vpZvrezb/TRfV47EFX1EAlj1hzSO+tWvP3P7iuqsNPWPLkvf754kOnDmNBl2Ajngxm2bwxb6Ii2ejjFD8U4z+pgYLFqXQCnC9IWZhE3LxyZKXaD//yP46vVrGvsc2BIEriFjwxKwkXLW1L2M1Jt0xjyKILXyUnvHCboeYSRVrGcxqFDU/vZmFDNSE84d34tVi+TkTsLmdrDUV4h/tYUHsYfU/z/uXo9orJOIBpNW/5SEiONqqR28HQtNOYDts2DPVn+OV8EFog2Lf1E80q6DXHn5KsXQ3ZqRbqM9WEXZJoBX8FBlz7D6LkMbG/uPKnboMi/sb3nwCLlENVobpqeY/JOSs20i3RIXgtULtHHgr/1PLNjHA7Rx6xqKP51+QooAstWA4Y/mJqhg= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:GpDFbUZBGnOJCW39YaEol2iP9JhzYUCa/8PJHycvOXBnWcodHaHmcFTsvIpMLnS5jsQ0vGrLo9QScrwDcqah/lPAqR6d6qWrc64gyN1BQ7+SV9MVlTtJJ/ggHNLy1Ax/g57NpizAUBqhlrkTuVTeU4rzm1GzcSVLHhDLhtItkrIgjiNjtN5JcBJk1pTmXKX76XcrUDv9doOgHmdhJ30/kQRHeGCXEdIsu1sTKwAyZ+ek9o5ZNpKzSXY1UOCo8w/sCa7zeQ+dA01QPyK2swpGQ6gkQXRskwNTSmWZY2IloUBlMFbe/dkGwSJHRukQKNd2UzqJ8UkZINYy/Yr7zer60TGRquk7AMaNX8o5W+5sFeA=; 5:0ZfPsdqYoS4HUbXrt4bduNPEnTvJIceJL2FRE+a03cIj9ngE+jfUBM+4rm68pET87qLaWHVH1rG3cwyl8TeZer1KvWg8T27nTK+XMSx0ksMRfIHTcSYWDEskLUDxmeR2giLvx1H2ery+sEktEVxzkHybxnrzXIXbAHOZXMYJIUo=; 24:rr4wiw8zOHkpGbqcdaHE2H63ZmrbLb04ZnVLpqofGTEW4uudDHn76hBUeQH4VmPPDM/NnxR7io84Adt6iljDAAfNe3G6DBX8dBZOIa6RQHQ=; 7:ZU8J+lTxTXBKOQMw/5UYd7LeUyHZ4TmqARVqZoeCuGKmRKmn2NyYZNMmBZTtidP6rP+3klSzYQFelRu1JmqIAvMS+mgDXVpDR9i2yZKCpqYmDwnh7TJxobTM/Oyzeur8bPU6AomjCd8aNHlo9CiAhayeiRmI+czFBNST2B9yS/l6r1xnW/pt+u52TzDkvU9kpiswbR6AQDaVb8jjak25iO4BgDrUbJeAf5gm/KxO/XFgESg0GE9yfwQDNFH60oi5 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:0V5NzQZDgn/FpPNLJCD8fAwIeGeenUFOsBmiWHt7/7s+/BkamiE0aVupOM6fAQJPya85R5KkqFZXeg85ZQcD6qtvLzxVkuG/vEYVNwNA25AVip8eNS9UD3NdUIQE5WDMjMYH+Vs8PXCZibZjh6FePNnFHTvi4MyTaki2zsHIxQc= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:16.7951 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6900800b-235f-46ab-b3cc-08d5747b5383 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.94 Subject: [Qemu-devel] [PATCH 8/9] iotests: add file_path helper 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Simple way to have auto generated filenames with auto clenup. Like FilePath but without using 'with' statement and without additional indentation of the whole test. Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/iotests.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index c1302a2f9b..f2d05ca3fd 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -27,6 +27,7 @@ import struct import json import signal import logging +import atexit sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts')) import qtest @@ -250,6 +251,37 @@ class FilePath(object): return False +def file_path_remover(): + for path in reversed(file_path_remover.paths): + try: + os.remove(path) + except OSError: + pass + + +def file_path(*names): + ''' Another way to get auto-generated filename that cleans itself up. + + Use it as simple as: + + img_a, img_b = file_path('a.img', 'b.img') + sock = file_path('socket') + ''' + + if not hasattr(file_path_remover, 'paths'): + file_path_remover.paths = [] + atexit.register(file_path_remover) + + paths = [] + for name in names: + filename = '{0}-{1}'.format(os.getpid(), name) + path = os.path.join(test_dir, filename) + file_path_remover.paths.append(path) + paths.append(path) + + return paths[0] if len(paths) == 1 else paths + + class VM(qtest.QEMUQtestMachine): '''A QEMU VM''' From patchwork Thu Feb 15 13:51:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 873841 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Chl6mlZT"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zhybS0xDRz9s7f for ; Fri, 16 Feb 2018 01:00:36 +1100 (AEDT) Received: from localhost ([::1]:51305 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emK5S-00021Y-6y for incoming@patchwork.ozlabs.org; Thu, 15 Feb 2018 09:00:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51220) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emJxZ-0001tq-0x for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emJxU-00012u-Pk for qemu-devel@nongnu.org; Thu, 15 Feb 2018 08:52:25 -0500 Received: from mail-db5eur01on0105.outbound.protection.outlook.com ([104.47.2.105]:37568 helo=EUR01-DB5-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 1emJxU-00011v-Gi; Thu, 15 Feb 2018 08:52:20 -0500 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=lyc980PeKnTt5AbyclO5m4G5iT9dsdlNAzCmMyouHZQ=; b=Chl6mlZT7vEaGr2d5RWHn7tRK4b47he52Xh2WYPd/V838GE8Alq22evPKEKnBHh4nFV1pijeYU+Ba/TFsnSzxZS7xIWIxuBOE6EdVQ7zqop1Gy4s6gO+rFia/nnSev1ALISL+ogsUYOtIDyRVEBdq9Uvc2KYXWxjN+Iig8M27Lw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-pc.sw.ru (195.214.232.6) by AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 15 Feb 2018 13:52:17 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Thu, 15 Feb 2018 16:51:47 +0300 Message-Id: <1518702707-7077-10-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> References: <1518702707-7077-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR07CA0005.eurprd07.prod.outlook.com (2603:10a6:7:67::15) To AM5PR0801MB2052.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1ba08c0-e059-44ea-84dd-08d5747b5436 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB2052; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 3:legtZ5wLOUQu/ARpKN64qvPpcmWcpWEH3rlq5H49+eOeMNPqVXCYVwej8OPt+hpG4FsDxVztyah1KodXPPZDUnL0ghb1XMSclca2n6kORDv06956bP3MxKGXobfT9bkHvEqhgLjPLXI+uaXEyJ3PxvsgQyOhlgFLn2numlOm51HZB7bon/eUijo+Y31Rm0/zsqO2Z6c+k34fzJ6o/F091jwLv4xkrLEy08YbzlchvQw1MjRT2fcxjFDx9Dm7Bw5s; 25:BdMLZh7Ab6wXPt1JbJsDyG/rBvdegKGphWwA/7RfYcfy1xMJTozKxCcbppEa2NQr9KF1vE5kS2IFufaxxRR0TdP5j2eEqUz4HXwSMz1kC2Ilnou8oqWi9cdM/NKRJZPSHnJpYe8rxvuaiUPUvl7z88ot9yw9B24efFLBbUelv46/Wl2HJO3+u+h4VkXVNu0ks0mTj+Uk5ZmU94coKLVevFkFWyuJub3teOOOS7DAJBWdDaMW+Z1Mr6zQQ4OzAa9qyh12Vy07YaEBJ5/mYTiXWec2gQUAjg/aVfOYSciSitShKIw+KCr6nfDFlWllRk065sT5vmWmYci/9lmbj9OhKg==; 31:jNsqNL2cmSvt490Z0dJTJowhuJrj+WU9uMxRjVpXZci7ePbm8MNTtGE+yffZS6zw7PD/9AX891z97bG4E0VWYnCgDAihSH/3He5WcvyQsiwsArl91hUJc+RWoRaJ/9XphXJkBC1ncyqCNpwbOYNbm+qgB5Pblg4qhFXFvaJ1s8B52Ce4OP+3mVqyNiNSA2g3//3rH/eU7n9Zc5q4/5uLAcRpBsUhXtkqePqdAHBpt2I= X-MS-TrafficTypeDiagnostic: AM5PR0801MB2052: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:5bi/b8pHJLrKkPbFamj54qchJ+H6w+6kXolVTtVj/W2s+OMmlLBjcykDWCVwUBWbQ7T1u9J5Dx4W4uYN1kzmAsNlF8X4aDS8axnt2Ko4hoaUs1kWs5l0TioTazhKGLPdsZajNzR/u1rHykAIUt3PCp5t5gUKvyh+ikwSoBefd+Th+PoJrkDUKPhDfjS641s2tsRvGy1JT6HCU6XyHvQ9Tthg6AvRWFYEgivpeNQxMGd/PKFKQ7Sus0h0eYX6ATGXfz8AZFFwEsTCBaRkuTeSqeSkVa3WXC1ZhpWALHJWHL2jzKaAquc14USx1Mlrol8pKB3wojeYKIyfFjJmi8zjpYD4q4mjn0h8V+6mPniKufzAdtzXQEzoMEFThq/4nMCYL6n6jOEAz0ANY6hovAYCkPYHRCvyJkD62GhpAO1ZqbrIuSjVtwQbRr8eahhdnfDPDwBVB8phbOxafvNYJW/5mpHHWrSoT1HgD9waO+kVi0P8fnGFG7eok/4d8/Br0jof; 4:x544GpwcWG/yaJSNEg8UiiupWRJANl2z8h60ReakJzTcYQHRr0Oga94ScHCqiQUAMEfAcbU0qwuSWieCUFFGwqFEts+Mo88ZezL2lsVXstuqrXeIabIa3/CSUb3pQwnAckonn8qvBkKEicZKjGJTyOTBUd+cRnPwzPhww/3+NzaXU6RgpD7x7yb+uqJrXwhrDNDcFEIIopt4fpCrDOooRCwkyQx8CPE9yLuhpD7XUF33oFjFWT+/04E9/5poxhqRQcT78Ixs63WfWz5D3iTjk7i1TjemQga4qGpz/JAy9+sUiczCfWPrKASEnaSZi665uI7daFNHM2w4pCS5KxAhchw1BdkcAKRpyPxmqs3nHbY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB2052; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB2052; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(376002)(346002)(39840400004)(366004)(189003)(199004)(105586002)(52116002)(305945005)(8676002)(81166006)(6306002)(26005)(6512007)(51416003)(76176011)(5660300001)(81156014)(53936002)(25786009)(7736002)(97736004)(55236004)(16586007)(69596002)(6506007)(36756003)(47776003)(86362001)(66066001)(316002)(386003)(59450400001)(6486002)(106356001)(68736007)(50226002)(4326008)(53416004)(3846002)(2906002)(8936002)(478600001)(6116002)(16526019)(186003)(107886003)(48376002)(2950100002)(6666003)(50466002)(2004002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0801MB2052; H:vova-pc.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; AM5PR0801MB2052; 23:ajvLe4qQP7S0WEZaz9/xc4he7oNdpPjXO0aA1XR?= d2LMb7tvyoLIXbzG63xHF0FfDsVVLtzdKux7Ocg0iBGvJL0kQ+s5IC4NQ3kov5tBRzRbk7zNIUPWCB/GZDXKqNYq/AmQrZfF6Yel5qH5vk60yKdCeooc12EydVZm8r74xnR37Uw/D22zbIbKLD16UzhT145ov8pqQnY44WaIaGYt6nCsFrnRknpvmgoUY7kZSrCIvzukVNH6ptW/GOMi9sJy6HQ83qfoI5vYf6+Mdg00jOESNoaZdhdtBhOIAy4zgtPF6s+E/qv+4gzM71KQow3+VImuH40l7mc3QV4wO/dWL0Lj8m80xQsTVK5aQR+crFY9G6DIJeJnafBd8bRw+ML3FxFlXAS8XrMysGv67GTzhrbRTC6rLTr3tnzMo4X0y7h4tb5xYGq9OZkkTmybCaWa2JLqWsHZi5ekYB46pl0IH6aw2GRUmEixQnRefDYBarJOZwQLkROXgbaexthqY/uvt586PjmihIU83F+IeGfd0zYGUoD/JKfztetyspI48o3+qUz01OpYuNQJwoxIxRxm0i8lcBiWQVkosDmG19pcR1vfGpfYL7K1qoZ+MD06PdZtmSUcoTry0NbCOTuhT4Z6ShVK7PwvchRXh83MwY9Jms/CqfVkDLv5Hywwq6awJj+EBg2hlvrPLa4m+AMsW2Ctg2R6pIBQBaKXMTA3xW0hywV/QaNOU67r+XWkw/9uTInI5U4YZHPgiNO1kUsBlXopw72rK5c7E5qDX4E0Mbgs2kAgsy6s+0krg1iD75MlJr7p3aQNXjAYLsFoMSYNY9E5XAIgieU/2M6wYJOkIO4BBmglj70daTs8lzUKRMA1ETQH4Sb0Q4BUuoVpcI0y/lL9IksdhCSf1BJ/WmDYfbmlpt4OtjtgUC+GGgcMOTj2369Z8E9tStD9oKimRsqDeIdHXmCkO6e+MQ/q+DW0iPCSJa0/E38KsUpDqK6+RQZy5mY5wS4iSDvzZzHZf6YtOw21dWocI826psoTyT+ktENX1IU6retc6xHcU6PnCLkUuQ5YMTF32Er08abtzIu8iXs2oR8JVPJO6ICPXK3fswX6pK15xyc+74keMN1jtlbv7iIJ6dBWcKx15MbjgVBPewlt5BslE3vWCa42MoHKw5pxFK7v6mgfpp/2EJHoyTJMRBqQg3blZDXK493jwpSgfBv2d7e4ignVYTyLAXYyOIIIDOnLniPoIYSVwvuoNNsCeZPI= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 6:T6wkmOQ55Z9oUC3oRrhlMS2+OOLxDqQI4oEiVX/9a7cv/o6h2xkWtR7Y1joqP6aQDnt68YkQubpPhp8LPdpdE6+XEiARrARFzsnK7uUzctaueWdy+qc4AHMxjJuXBDLX3t9Luvhg+yOmi7uQj0dcFB8bCbv6Do10KwHf82mi3rOTSSDJzPqqbLL9E8/tYULPZflWh5rgPTij+655/pRjIErFEiEVJTnb3nZv80TuPIgKXeRktz6xYRr9DTS02C8v9ngH/5s+y/iGYJ4w7OCTXCTVjQJhFruJXF65vrUDN+1GvDP3qQM+bgcZ0UluDj5WOrULVgmCFzmhyy6nX7M7F8q9sluX0YqK+v14ZitvCsc=; 5:1vZKfodrKdf3EZ2hPXbckdeFC+wBHhIZgnc6y1xqdCg1YFqL99iuHIFUhcZHOOyjh+DWl4cx+ZFk9QQ24Y7rjrqBp+tt5Puz/NJ6r9dA8yiQgtvEgm/zBkN+BWXHCqSWl8pImJFKm6x0mPYDEeoM6UzCDJLhfWGv3xpNdy8FiUM=; 24:hys0tj4jQJnyy6FftPi0ZgfkOQz/rvMgZ2p8mE/w3UCb/FIiuIpj1SsD0maEQtP5zNQBR/ayLqVrn8id2VgCIuRmwk0rZMeT8139xfChVYk=; 7:MsQRu82MsnM//9hN7TRU3M6hguqqgOdmhnZOafrl+GNPmPjPCBtY3evDZBTnCPYL8uqBXvVWVtNWAYaJEHCRFeQL971KKVA068xoHEP+BsOrleXMza8XIPVvtR8wS87Uzxw8HLHABBG6A7x8XCeO4KzyHPYyxWUQUYXur+z+1/a3mVMFyNI0GYukyRUb3lSzdH6N2UonBgzKyZV/iAPcdcsfDBtaC2a2YUz4LKQ1pTSFCrA5wrxWU7/PlihjWLlZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB2052; 20:0B9UNziPHtuC128w6IUW+FARYQP26QrXCk6OoThDAykJ1gMO7sgTiC3yk4+LGwCjBgI0QgvX9D2AD9KEVHgXTsA5N8+pESVLyxyMJNVSDeX4bRujnj2oH1D+V8dD9NIvJ50CtxcIIO6KymPmEiUqL9OaGDK5YWcZW04JJurkKOQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 13:52:17.9670 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d1ba08c0-e059-44ea-84dd-08d5747b5436 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2052 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.105 Subject: [Qemu-devel] [PATCH 9/9] iotests: new test 206 for NBD BLOCK_STATUS 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, vsementsov@virtuozzo.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/206 | 34 ++++++++++++++++++++++++++++++++++ tests/qemu-iotests/206.out | 2 ++ tests/qemu-iotests/group | 1 + 3 files changed, 37 insertions(+) create mode 100644 tests/qemu-iotests/206 create mode 100644 tests/qemu-iotests/206.out diff --git a/tests/qemu-iotests/206 b/tests/qemu-iotests/206 new file mode 100644 index 0000000000..259e991ec6 --- /dev/null +++ b/tests/qemu-iotests/206 @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# +# Tests for NBD BLOCK_STATUS extension +# +# Copyright (c) 2018 Virtuozzo International GmbH +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import iotests +from iotests import qemu_img_create, qemu_io, qemu_img_verbose, qemu_nbd, \ + file_path + +iotests.verify_image_format(supported_fmts=['qcow2']) + +disk, nbd_sock = file_path('disk', 'nbd-sock') +nbd_uri = 'nbd+unix:///exp?socket=' + nbd_sock + +qemu_img_create('-f', iotests.imgfmt, disk, '1M') +qemu_io('-f', iotests.imgfmt, '-c', 'write 0 512K', disk) + +qemu_nbd('-k', nbd_sock, '-x', 'exp', '-f', iotests.imgfmt, disk) +qemu_img_verbose('map', '-f', 'raw', '--output=json', nbd_uri) diff --git a/tests/qemu-iotests/206.out b/tests/qemu-iotests/206.out new file mode 100644 index 0000000000..0d29724e84 --- /dev/null +++ b/tests/qemu-iotests/206.out @@ -0,0 +1,2 @@ +[{ "start": 0, "length": 524288, "depth": 0, "zero": false, "data": true}, +{ "start": 524288, "length": 524288, "depth": 0, "zero": true, "data": false}] diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group index a2dfe79d86..2c3925566a 100644 --- a/tests/qemu-iotests/group +++ b/tests/qemu-iotests/group @@ -202,3 +202,4 @@ 203 rw auto 204 rw auto quick 205 rw auto quick +206 rw auto quick