From patchwork Mon Nov 30 13:40:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408279 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=DWSOpugE; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl5zc1SW2z9sSf for ; Tue, 1 Dec 2020 00:43:39 +1100 (AEDT) Received: from localhost ([::1]:57228 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjSr-0000kR-KO for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:43:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQH-0006w0-1D; Mon, 30 Nov 2020 08:40:57 -0500 Received: from mail-eopbgr80115.outbound.protection.outlook.com ([40.107.8.115]:22148 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQ9-0000SL-Vz; Mon, 30 Nov 2020 08:40:56 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CjX0YBx0AlCvwlwTQ0e3VZ/ElZfBGuUR1vNb3W59yDPlIIKVDH9Mlws3fE/HddiatCI3q+b7yL7mPD2uGdaCFgJuVnQEPgfHOWt+ylv/3y4g5bg0iux/e4WekF4uK6sYqsGk/rOQYOao25AP0bvGEBvHIfRQG34PdlWOlur3rCJb70ztPqmrFV1/umNh2d/jryCKIXgBsqC14wVP+Swegb6oEWJ+iwHv1hivq+M7EzWZd6sCcRhdbXh7t6fsJUwwt5VJj7FW0Wo8iQRM9y61nu86vDlY3bh6y040RaSHizD93xX7M0qlfI/u+oAaWwU1AOoZdS3DZGxSThnelZ9XfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hMd41hCS7VBMAxKiQjMW7Qi2+STqAzQ/lcI8OTOiO80=; b=aFDo6dv9z0KGEjg80Z2pLDc9nMfMhi6/tFEprYsrRs1z/YB+LNoTzqL1y10GfEktowoC+COSmyHxNhu7sfUJLezK2wtT9m471qF7q4/KpOM2RwK6tuSoqhjh1TahvyC5GpPxh3JO2PWJPHBBgnkhB2OsyRzBnk9lPz6aa8vzA6AUr1PSPqiIFDaHl1ZdlR0vSlQIAktANo4KqH+Sxux3VOIj/qHp+E5kb5CEORN2l3ViGFsVdUpeiEYulqIorFjdPi76/6Gq8aaGJD1UQzhhHx8SlI3n7+8uBRz0Z2OQ9fSV05bLay1igZ9FHJqx/alL1PQy/RNOx1mcPre+v1refw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hMd41hCS7VBMAxKiQjMW7Qi2+STqAzQ/lcI8OTOiO80=; b=DWSOpugEILpttNvupn2HjvXLJpVOI8Ub91KsTyXcmszyidU7OOWGuaDJrWobeO7lFoesemjTk7ZOeKi2bSNahbedtbnw/eUCAFohaeBhRmCxAgLCe51diKkABzVX8vzhxsMBi4Q4JGqQxtE/3rW2+UKfsDBIcYfSc83N6/TWQ30= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3448.eurprd08.prod.outlook.com (2603:10a6:20b:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:39 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:39 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 1/8] block/nbd: move initial connect to coroutine Date: Mon, 30 Nov 2020 16:40:17 +0300 Message-Id: <20201130134024.19212-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:38 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3b459dc7-071c-477d-13e1-08d89535866f X-MS-TrafficTypeDiagnostic: AM6PR08MB3448: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1332; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ocTrgDr8LOeCiAdesrZ/8e+2sOrhvD8NivO+fd4J9jgeDAwFQYvfoiyCkzUBtLY+2A8NsONQwlfNXu3CPCYMJgul89LWHxCzF7VkoJygl1A3rpJr8mWbsiHtybfN6xJoj7QN2GklTVyYBbXHL3oAC5wzStZ7nrBa51cWmJ7LP8ze8g2gzSfI1Trm53XyLmLr1fUv23+TrliwVLHU9eKkS+Lg3ysul7/Xz0/3qq6ZLqpTeo4iXtKG2uaBFAJfjgl92f4p91TyJLGVqRoHgIzTLiR96Y19k6NY5uq4yFZSU4Ayn2GI5OpzNxdVk+HEt1m7iSjZMTV5EbYbq1cwLMObWQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(346002)(396003)(376002)(39840400004)(2906002)(478600001)(52116002)(6666004)(1076003)(4326008)(6512007)(8676002)(8936002)(86362001)(107886003)(2616005)(6916009)(316002)(956004)(6486002)(5660300002)(6506007)(186003)(66946007)(66476007)(66556008)(16526019)(26005)(36756003)(83380400001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: mRzlmbpT5Y0Z8De1BMZztDsvxr5kA/bB2eNHzwOjrO0wq/T/4IOnosHIHLOg8KU3UX3rkytvFHCdYDocM2h9HrJC+XiWwZikpsJ8hlZYxGdsu33iZf621dwazKAxF5qeiA2jHeFTzAANIgJNPt0jo0x+DsbTrVSaGbNDParv4nUmBCZfq5x26gXfP4jdyTNDROH/QfjvbiSgCJo0moA8cHUZxJ6ulbYYgC3tflTOMTtQcwOxihyBnjCrwGwfLBswdTSj7+hqodt9SpSmC4gbsaw/t+cJwyzPZGN+3HI3RJJj2lXHzhsOsnzi9mPZMqirzLEBbeIF7gkDgCGXx/Jvq3Fw2QmiKcJn2J1irWpJZ65sa4PVBi9AiZhQknlJo+n2ehiQqdcaTptGsn4UbVPA+4b7XnItlNGlhnJw4dqmUc4vL7aagthlkkr5T1TN+LBUHAbxUjQ63PQQZvHiq2geTsrFtEVnxcP4xfnKY8FJrnWEjbF95BwKu3abJk3Hyy/BPRz5kH1EZlYJSqQ84W1jCQjaJuJd7ZfWiLfI5sXnoNAiGkvRI5/aVwLAkAgJrVcwQHl6/ShAPnObwz7z3ChrhQOs/ludVSWtMCExcpm9ECS45X2X8mJIQaoX+WcnC91fJfP9VQFJpc9a22l0n2bwmzd6dazEiZ1cjt575bsZ23Le8TJkAdLOR7QS0t5JpAULiinKK21Sb/XLlLF38L4S+O3onsddmWXMrkcmuEAJm31JvPbD9N5qzr9BCpKNPe4FxkTVCvcbnB6K11KDHU+XcurGTGOyQk1eUU1vz+Gk+qUoHoOfCbNb4h5nFM+T5PxEAttzgn0kCupwKq+y4Atz0FJhda5jM418B54yFai/NViXTgdYLHg6GPAe7zDCKgqGLRAKnIsZeBdgAjTWFEDnlFycTHuBYzTSz721g2QmUC09tvjvJ0qTY0U7ABFgFEPBBNBxUCmDkVXfuucemG0YSBQz/VBz7Q2v3Yr2QZAPnfEUM1OJudvgwrYbJNh/yabG X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b459dc7-071c-477d-13e1-08d89535866f X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:39.5451 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zRJYWsPj9xrju/x6eF8wXvGbGkl+LYNBYroXHtbSwhNmvnnJE1f7MVENJPC84ICn6iYAeen+YxH0JpMJRxrb6zkAhge8wzQu8NIjivDuqrs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3448 Received-SPF: pass client-ip=40.107.8.115; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We are going to implement reconnect-on-open. Let's reuse existing reconnect loop. For this, do initial connect in connection coroutine. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/nbd.c | 94 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 41 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 42536702b6..3e1d6c2b17 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -57,6 +57,7 @@ typedef struct { } NBDClientRequest; typedef enum NBDClientState { + NBD_CLIENT_OPENING, NBD_CLIENT_CONNECTING_WAIT, NBD_CLIENT_CONNECTING_NOWAIT, NBD_CLIENT_CONNECTED, @@ -113,6 +114,7 @@ typedef struct BDRVNBDState { CoQueue free_sema; Coroutine *connection_co; Coroutine *teardown_co; + Coroutine *open_co; QemuCoSleepState *connection_co_sleep_ns_state; bool drained; bool wait_drained_end; @@ -141,8 +143,6 @@ typedef struct BDRVNBDState { NBDConnectThread *connect_thread; } BDRVNBDState; -static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr, - Error **errp); static QIOChannelSocket *nbd_co_establish_connection(BlockDriverState *bs, Error **errp); static void nbd_co_establish_connection_cancel(BlockDriverState *bs, @@ -339,7 +339,8 @@ static void nbd_teardown_connection(BlockDriverState *bs) static bool nbd_client_connecting(BDRVNBDState *s) { return s->state == NBD_CLIENT_CONNECTING_WAIT || - s->state == NBD_CLIENT_CONNECTING_NOWAIT; + s->state == NBD_CLIENT_CONNECTING_NOWAIT || + s->state == NBD_CLIENT_OPENING; } static bool nbd_client_connecting_wait(BDRVNBDState *s) @@ -639,6 +640,7 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) { uint64_t timeout = 1 * NANOSECONDS_PER_SECOND; uint64_t max_timeout = 16 * NANOSECONDS_PER_SECOND; + bool initial_connect = s->state == NBD_CLIENT_OPENING; if (s->state == NBD_CLIENT_CONNECTING_WAIT) { reconnect_delay_timer_init(s, qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + @@ -647,6 +649,25 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) nbd_reconnect_attempt(s); + if (initial_connect) { + if (s->state == NBD_CLIENT_CONNECTED) { + /* All good. Just kick nbd_open() to successfully return */ + if (s->open_co) { + aio_co_wake(s->open_co); + s->open_co = NULL; + } + aio_wait_kick(); + return; + } else { + /* + * Failed. Currently, reconnect on open is not allowed, so quit. + * nbd_open() will be kicked in the end of nbd_connection_entry() + */ + s->state = NBD_CLIENT_QUIT; + return; + } + } + while (nbd_client_connecting(s)) { if (s->drained) { bdrv_dec_in_flight(s->bs); @@ -759,6 +780,11 @@ static coroutine_fn void nbd_connection_entry(void *opaque) s->ioc = NULL; } + if (s->open_co) { + aio_co_wake(s->open_co); + s->open_co = NULL; + } + if (s->teardown_co) { aio_co_wake(s->teardown_co); } @@ -1757,26 +1783,6 @@ static void nbd_client_close(BlockDriverState *bs) nbd_teardown_connection(bs); } -static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr, - Error **errp) -{ - ERRP_GUARD(); - QIOChannelSocket *sioc; - - sioc = qio_channel_socket_new(); - qio_channel_set_name(QIO_CHANNEL(sioc), "nbd-client"); - - qio_channel_socket_connect_sync(sioc, saddr, errp); - if (*errp) { - object_unref(OBJECT(sioc)); - return NULL; - } - - qio_channel_set_delay(QIO_CHANNEL(sioc), false); - - return sioc; -} - /* nbd_client_handshake takes ownership on sioc. On failure it is unref'ed. */ static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *sioc, Error **errp) @@ -2245,7 +2251,6 @@ static int nbd_open(BlockDriverState *bs, QDict *options, int flags, { int ret; BDRVNBDState *s = (BDRVNBDState *)bs->opaque; - QIOChannelSocket *sioc; ret = nbd_process_options(bs, options, errp); if (ret < 0) { @@ -2255,23 +2260,7 @@ static int nbd_open(BlockDriverState *bs, QDict *options, int flags, s->bs = bs; qemu_co_mutex_init(&s->send_mutex); qemu_co_queue_init(&s->free_sema); - - /* - * establish TCP connection, return error if it fails - * TODO: Configurable retry-until-timeout behaviour. - */ - sioc = nbd_establish_connection(s->saddr, errp); - if (!sioc) { - return -ECONNREFUSED; - } - - ret = nbd_client_handshake(bs, sioc, errp); - if (ret < 0) { - nbd_clear_bdrvstate(s); - return ret; - } - /* successfully connected */ - s->state = NBD_CLIENT_CONNECTED; + s->state = NBD_CLIENT_OPENING; nbd_init_connect_thread(s); @@ -2279,6 +2268,29 @@ static int nbd_open(BlockDriverState *bs, QDict *options, int flags, bdrv_inc_in_flight(bs); aio_co_schedule(bdrv_get_aio_context(bs), s->connection_co); + if (qemu_in_coroutine()) { + s->open_co = qemu_coroutine_self(); + qemu_coroutine_yield(); + } else { + BDRV_POLL_WHILE(bs, s->state == NBD_CLIENT_OPENING); + } + + if (s->state != NBD_CLIENT_CONNECTED && s->connect_status < 0) { + /* + * It's possible that state != NBD_CLIENT_CONNECTED, but connect_status + * is 0. This means that initial connecting succeed, but failed later + * (during BDRV_POLL_WHILE). It's a rare case, but it happen in iotest + * 83. Let's don't care and just report success in this case: it not + * much differs from the case when connection failed immediately after + * succeeded open. + */ + assert(s->connect_err); + error_propagate(errp, s->connect_err); + s->connect_err = NULL; + nbd_clear_bdrvstate(s); + return s->connect_status; + } + return 0; } From patchwork Mon Nov 30 13:40:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408281 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=oEXZ3xiF; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl64v3Pvmz9sSs for ; Tue, 1 Dec 2020 00:48:15 +1100 (AEDT) Received: from localhost ([::1]:38334 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjXJ-0004p2-FW for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:48:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQI-0006yT-38; Mon, 30 Nov 2020 08:40:58 -0500 Received: from mail-vi1eur05on2135.outbound.protection.outlook.com ([40.107.21.135]:61792 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQC-0000P5-2k; Mon, 30 Nov 2020 08:40:57 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KFwh6ORyaAQzSJnMKeDEg3Y6VMB2pJRM0ih3AJmVy8N+AYREW8hdrrkaaBSh4iDlwNjotpOM4NwbiizmQ3CjV9Aej7K/EE5xBkPSrbnkADtBUtE9NR0P5YtoM6wSXr+t4DOmc0BlZk8z5YkW+nabBbIJBRRTR3pHn5hFl9vWNUgAF44riz9AABu8yfBgpxpSiQCqg2pbULH58yGzislpVw4c2kyW2G/vfXqcBZyGcCqEgtUDrXvk1KvZjugYzsWWkwvrxMRb9HY+dvaUYMYD1e1ogQQ50wIn6ZGdAJyNT1DjOXt2QYOGBAyAFjlg1/r2gcRc5uExD8huAzen5bi2zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=72r0EuroHhhEzA7T5gR3oWtSPXYldejprkeoNpbp49Y=; b=AtZ8luZnGgOeSaDCedwB/noqEkv6gBCyH4wwcQGvgPU4eLpdLNg3h4b5hoEya+Z+LbnIDIN/Q1wMTvD4WQTMBI4/1SmXo2HDg9Lag76yn/3dC2HrWgOg/dEqoB4UujqyloggKGQbhAJmrstJ2ZAmr97l3MBUCtjvTBVJUna1ffsRZoLglI6TqpcEn7h4Y0rXqLbVasjicPqPAG6AkOUFqo9ucl61dFLse0FiwqTAEJG5VH5YH+cgFEcs+PKaCux4xhxVKORKpj7vhMZJ83x3cvCskAJkPqGr36STVln/WxJeo2LqH8hhY2RjxydNMcSq3wyNlIapEhfw+OfVeMdB5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=72r0EuroHhhEzA7T5gR3oWtSPXYldejprkeoNpbp49Y=; b=oEXZ3xiFfxszPMXt+iLZXqJR2qBaMJMfYKBWq1ec7eifEBXlOmnFjj6UVOUmGG1cMFHLiR9NtTRbLfyQb85FWdHMCBfsALJwEU/7v/t2Rv1HqGXS1lDWKYOQu/69GZv5hXeIeOMRh60qqpC0ZkgVgf1n02m8DMjjTjpGcwDvnVw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3448.eurprd08.prod.outlook.com (2603:10a6:20b:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:40 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:40 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 2/8] nbd: allow reconnect on open, with corresponding new options Date: Mon, 30 Nov 2020 16:40:18 +0300 Message-Id: <20201130134024.19212-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0a1f1a42-3691-47ff-6c92-08d8953586e5 X-MS-TrafficTypeDiagnostic: AM6PR08MB3448: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:353; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ml9gDHve55r6E8YM3Ttf5ncZDiu+iCD95q6ZIpSSh07ApCQSXU9ekyRi4x+92eEC9ankosoD5NE7Qz8I1MpM+npAFFdk55hUFBn45rRyQY/AeeeM/DWKfdKrV1G1ormnlLSr9/hK6JtwlhiaH5kvciUWs+z1jQ6a5+rqcNOkCuRyAtpOg1GPOiTkItDgekoulLeMNkhxjyrL46tBzJMkKxvviRWXJuWgRmmOC/h2J8JWVYOk0/Fb/p9Bk1W0jyTwZIynstLj2luC8b4yUOSSrQgwvSjWve+R0zTdJ1v7Yb1tf9CAuxfbemwzxdu2Ltbb X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(346002)(396003)(376002)(39840400004)(2906002)(478600001)(52116002)(6666004)(1076003)(4326008)(6512007)(8676002)(8936002)(86362001)(107886003)(2616005)(6916009)(316002)(956004)(6486002)(5660300002)(6506007)(186003)(66946007)(66476007)(66556008)(16526019)(26005)(36756003)(83380400001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 8INu+MmYSOCrLcTbEhf1qs6ZpVkeLX0z/8rkEA+PCWoTSTBF1Kwb1SpLBVnE1LfLfww0FFftCt+UL1uswwxHwVk5X1gyTN7VMn3KfZAXKiKyVHxJCIeMW2nKTyjDaeCdqgFfDWAas78UtCUnHAybfy3IvKL2EwwiGGeDY++VTB/h5Px1xIhUuNXcCXzpECgR1dsV4jFdqv6D85FXL1K3cK505aKk4O5sEyF+ubM29wGVQleL4Vz4suZQd/oS0I3ozde8nkaAPWbsyCgqXK7jhRlc72q1YzgYzcOYyHsJ4hgFyKvQD+MUD/Zi3sHkLzmcSXNXyCMl4W9DYGJQNpCm8iG9RcyggSqpdZ2cCykunTjDQZenNsDGMzIp0dkUZa2ZsI5EHouhJZjevd2i+ZKN4DCi/QV0r6+aWCYowfYbNWwlkxsRC/G+KVgDWDttRhDYsA21dhO8IQNF7P9SO785hoW2gOBzkcrKV4y2b+PUAkDxrPBkYzZvTNFCw7qCDZouO34a6YmbCm5sea469ZqXcgY6Zbv0fG1a5nlRWvSvFkzIxnM2tngTwoLGTkFm3X46Y3lr/bE1IxXoDEM+m/cW+OPWaAFunBZRnC21dGar75L06gx7RasZZ3M7VPIoHRwMN+RLNZa5VR4QckdK+MwZer8Ukbm5GxHyqgeJLH38UI0Np5I6CLs9uT8EIJ3p1xKx83rt+rLuABswJ630U+e1whM1m9hH1Qsk9SIpU7GPWUIJibvnsnnEFtFBHaxLj93Sx9HrUWRVNS3bhHi9xQliE4mnRMGYB9WxL9KaVHjb5X27Y7hng815sz+50Zqcx0noMAs+v/9fIPSiRH/OCcCzKhcdVKj67V4i1kvYxkAc1zuNSiPcZZ37qm0dgOanfkcCS91B693Jty6zTuPfn60Iuonm6wdImZfYdKBVx7K/UUw4NVRmju2xpYwY3JzTAzpmSux41Di6VXsNmnK37SQLerpU5dU8otIGcZ7ASBv/hgfKebNxX+prdzMgrF3BMfW5 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a1f1a42-3691-47ff-6c92-08d8953586e5 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:40.3356 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oarXH9VaXJuZ9o2NAT9hUEGFu1GnoHHDEcRXlO4Ff8fNzhEglteMJVoJ3swk16AQJYyIsrJR0w/Ivw3r9VJp675MZhMx7bNAwv+MYsZ3yAc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3448 Received-SPF: pass client-ip=40.107.21.135; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Note: currently, using new option with long timeout in qmp command blockdev-add is not good idea, as qmp interface is blocking, so, don't add it now, let's add it later after "monitor: Optionally run handlers in coroutines" series merged. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd.c | 115 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 92 insertions(+), 23 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 3e1d6c2b17..d25acafaad 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -125,12 +125,14 @@ typedef struct BDRVNBDState { bool wait_in_flight; QEMUTimer *reconnect_delay_timer; + QEMUTimer *open_timer; NBDClientRequest requests[MAX_NBD_REQUESTS]; NBDReply reply; BlockDriverState *bs; /* Connection parameters */ + uint64_t open_timeout; uint32_t reconnect_delay; SocketAddress *saddr; char *export, *tlscredsid; @@ -305,7 +307,7 @@ static void coroutine_fn nbd_client_co_drain_end(BlockDriverState *bs) } -static void nbd_teardown_connection(BlockDriverState *bs) +static void nbd_teardown_connection_async(BlockDriverState *bs) { BDRVNBDState *s = (BDRVNBDState *)bs->opaque; @@ -325,6 +327,14 @@ static void nbd_teardown_connection(BlockDriverState *bs) } nbd_co_establish_connection_cancel(bs, true); } +} + +static void nbd_teardown_connection(BlockDriverState *bs) +{ + BDRVNBDState *s = (BDRVNBDState *)bs->opaque; + + nbd_teardown_connection_async(bs); + if (qemu_in_coroutine()) { s->teardown_co = qemu_coroutine_self(); /* connection_co resumes us when it terminates */ @@ -474,6 +484,11 @@ nbd_co_establish_connection(BlockDriverState *bs, Error **errp) s->wait_connect = true; qemu_coroutine_yield(); + if (!s->connect_thread) { + error_setg(errp, "Connection attempt cancelled by other operation"); + return NULL; + } + qemu_mutex_lock(&thr->mutex); switch (thr->state) { @@ -529,6 +544,12 @@ static void nbd_co_establish_connection_cancel(BlockDriverState *bs, bool wake = false; bool do_free = false; + if (!thr) { + /* already detached or finished */ + assert(!s->wait_connect); + return; + } + qemu_mutex_lock(&thr->mutex); if (thr->state == CONNECT_THREAD_RUNNING) { @@ -624,10 +645,15 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) bdrv_inc_in_flight(s->bs); out: - s->connect_status = ret; - error_free(s->connect_err); - s->connect_err = NULL; - error_propagate(&s->connect_err, local_err); + if (s->connect_status == -ETIMEDOUT) { + /* Don't rewrite timeout error by following cancel-provoked error */ + error_free(local_err); + } else { + s->connect_status = ret; + error_free(s->connect_err); + s->connect_err = NULL; + error_propagate(&s->connect_err, local_err); + } if (ret >= 0) { /* successfully connected */ @@ -636,11 +662,44 @@ out: } } +static void open_timer_del(BDRVNBDState *s) +{ + if (s->open_timer) { + timer_del(s->open_timer); + timer_free(s->open_timer); + s->open_timer = NULL; + } +} + +static void open_timer_cb(void *opaque) +{ + BDRVNBDState *s = opaque; + + if (!s->connect_status) { + /* First attempt was not finished. We should set an error */ + s->connect_status = -ETIMEDOUT; + error_setg(&s->connect_err, "First connection attempt is cancelled by " + "timeout"); + } + + nbd_teardown_connection_async(s->bs); + open_timer_del(s); +} + +static void open_timer_init(BDRVNBDState *s, uint64_t expire_time_ns) +{ + assert(!s->open_timer && s->state == NBD_CLIENT_OPENING); + s->open_timer = aio_timer_new(bdrv_get_aio_context(s->bs), + QEMU_CLOCK_REALTIME, + SCALE_NS, + open_timer_cb, s); + timer_mod(s->open_timer, expire_time_ns); +} + static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) { uint64_t timeout = 1 * NANOSECONDS_PER_SECOND; uint64_t max_timeout = 16 * NANOSECONDS_PER_SECOND; - bool initial_connect = s->state == NBD_CLIENT_OPENING; if (s->state == NBD_CLIENT_CONNECTING_WAIT) { reconnect_delay_timer_init(s, qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + @@ -649,23 +708,9 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) nbd_reconnect_attempt(s); - if (initial_connect) { - if (s->state == NBD_CLIENT_CONNECTED) { - /* All good. Just kick nbd_open() to successfully return */ - if (s->open_co) { - aio_co_wake(s->open_co); - s->open_co = NULL; - } - aio_wait_kick(); - return; - } else { - /* - * Failed. Currently, reconnect on open is not allowed, so quit. - * nbd_open() will be kicked in the end of nbd_connection_entry() - */ - s->state = NBD_CLIENT_QUIT; - return; - } + if (s->state == NBD_CLIENT_OPENING && !s->open_timeout) { + s->state = NBD_CLIENT_QUIT; + return; } while (nbd_client_connecting(s)) { @@ -695,6 +740,16 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState *s) } reconnect_delay_timer_del(s); + open_timer_del(s); + + if (s->state == NBD_CLIENT_CONNECTED) { + /* All good. Just kick nbd_open() to successfully return */ + if (s->open_co) { + aio_co_wake(s->open_co); + s->open_co = NULL; + } + aio_wait_kick(); + } } static coroutine_fn void nbd_connection_entry(void *opaque) @@ -2180,6 +2235,14 @@ static QemuOptsList nbd_runtime_opts = { "future requests before a successful reconnect will " "immediately fail. Default 0", }, + { + .name = "open-timeout", + .type = QEMU_OPT_NUMBER, + .help = "In seconds. If zero, nbd driver tries to establish " + "connection only once, on fail open fails. If non-zero, " + "nbd driver may do several attempts until success or " + "@open-timeout seconds passed. Default 0", + }, { /* end of list */ } }, }; @@ -2235,6 +2298,7 @@ static int nbd_process_options(BlockDriverState *bs, QDict *options, } s->reconnect_delay = qemu_opt_get_number(opts, "reconnect-delay", 0); + s->open_timeout = qemu_opt_get_number(opts, "open-timeout", 0); ret = 0; @@ -2268,6 +2332,11 @@ static int nbd_open(BlockDriverState *bs, QDict *options, int flags, bdrv_inc_in_flight(bs); aio_co_schedule(bdrv_get_aio_context(bs), s->connection_co); + if (s->open_timeout) { + open_timer_init(s, qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + + s->open_timeout * NANOSECONDS_PER_SECOND); + } + if (qemu_in_coroutine()) { s->open_co = qemu_coroutine_self(); qemu_coroutine_yield(); From patchwork Mon Nov 30 13:40:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408287 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=n9MBekO9; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl6F90FmSz9sSf for ; Tue, 1 Dec 2020 00:55:25 +1100 (AEDT) Received: from localhost ([::1]:55402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjeF-0003pg-23 for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:55:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38492) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQK-00073l-LU; Mon, 30 Nov 2020 08:41:00 -0500 Received: from mail-eopbgr80115.outbound.protection.outlook.com ([40.107.8.115]:22148 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQI-0000SL-6M; Mon, 30 Nov 2020 08:40:59 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oI1bWKmmIQuVgy6eXJL+CW7TCc56NSU6besa9pR/hDyxSypKGCePDn6Jn/FdMpF+l64GU4sIRCXRgNq7aY7Hv2JxzlgxlGHCZ1s4s29aO2Ik8FEGdGwujJhxygI8EH4H2XL9i1E1vLfq6Qup+Yl5KeJF62TUA6xIAXNG49eKnlVbvhRBRSPZCe7Do+Pfuwipt7Js4UEPeTPC7KgkZ2kVpfDRIXJ0mX8gfi//uGKFUQjzGIwBr2e4qGPSxXqdYoySMRPu9YQOJQha/174WyXQdFzu423KvY5Jkd3BhsMkzkWM3PufCF5mdN0YukcwMhBDc0WdZfileZ0jfrxYbqPy0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8ZuFLQIa9CZxiMx4cHqXBLH9EFd6BBNu79wjleXVldw=; b=DWz+WRwBQstO4WlteY2atYNapPN54+x9NDLrNfxw93JFYR8GQpA3LSOdBGBtnqmKUCmQ6ov3EmFnd6NvZl7m+9NptUMM0xgIqBwdzuySluo+igymdXXY1qMSRYd4+Wh9aFX38zM/GUcediFWlastFI6ixTWaK75IAQYkv2h0t4bxFhkG3YOhay2nvQAMelHw7hKL1VBhxyWInxQWjT6gr2IFBaggyeGfJLHAMfx4Xl++7HsjLVRyvD3bEh7kSIJzs6P4SYLX6xtcLTf/GFQcQ6uiWqMvQBvQWbPdF8FdmEala75kEApStEM3P63SNfNbs5t7yU9D6RsVbMR3oxihsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8ZuFLQIa9CZxiMx4cHqXBLH9EFd6BBNu79wjleXVldw=; b=n9MBekO9sZv3kCPmyTsFHSoNiG6HWxNxA/xqFtLWB5lrntLUMB47zhWMwSHU5PmeFtTsHESEANVeNt2uDnB8L0O/Z7mZXB6NvKkoV0z38shu4xqfNU3rUFELqWeAr7+Nu8HyJJ0uCPzA/ps5vp56KvOxBgo0pF5uxDCFuBq3M4w= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3448.eurprd08.prod.outlook.com (2603:10a6:20b:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:41 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:41 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 3/8] iotests.py: fix qemu_tool_pipe_and_status() Date: Mon, 30 Nov 2020 16:40:19 +0300 Message-Id: <20201130134024.19212-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:40 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eaa3999d-b914-4a8e-4436-08d89535876b X-MS-TrafficTypeDiagnostic: AM6PR08MB3448: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:63; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: p6OoeqfIDiFypVXKuSta2uLAtYGEZqe+HSWiS6ciLdSLRVeIXjEub7n1rQyC3rfa2Ab5jFqnDSRnFZ6yU4hix+anZmO8n7yob0xeOH10DTm3u7lqbQOkk4YrmVDpdlrKplk90SSmEXVfYXGk76M/Z+q1mAwMlrliyE2IVNxWx5nT6oCl1ElDQzkXhxatG7aIUdfAS4x88y9mT1DcGYP8RkMFtzKlPVVlY95/UNlsExeKxLbvuAIV6TM0bBKf6SxFdjxgcVMC5Rj7ZDZTWM3gBm1jcMiAb0ow6udDm8+PvE5P4MSvap8HDCXi5gxT68u3qERYItus4ip1IpPbuCIjVg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(346002)(396003)(376002)(39840400004)(2906002)(478600001)(52116002)(4744005)(6666004)(1076003)(4326008)(6512007)(8676002)(8936002)(86362001)(107886003)(2616005)(6916009)(316002)(956004)(6486002)(5660300002)(6506007)(186003)(66946007)(66476007)(66556008)(16526019)(26005)(36756003)(83380400001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: KcdWzPtWf7gi8Cni3df7ZjP8wgcloS3UjatFUQiuFsU/SAbw6VnfNFTmYLIymA+7Vf97wi2enU5ZxMjSjX0UH8Axugskcaqa+o+Ilaw2pPfqhHjFlSyuZ2539RW8+LDzQeHJkctynpqAcmCgulAj4tdbc84f6pjwLVH0VSpoRG5APer54UN+uQ2syodwuCtyBAKvr+cl+YInAdKBCxDrYCr8U8kOIgc+HxW6MEevQjyn9wZ5XOtC/Zx0X1O1AMafCZfHCsibPmMs5fkyzZnehy6Iwz+IK51R74Z7OEs7A28na/KfaKZOYWusnYx8ug8kHUm3cxOH8P9TnZ2Kvq8bdrmgeeXxmRNWsp+jFD/9Bl4TlJuBgdG5Cmpl1VhQLzbRfXjOcBIRL7pZWupA4ujAtYd2rMIgieUyvVGmyxZcyIex3XT4mHAR0HoLvYMn4nluykN15ZKT4/1KPDmrAtUe5TReo43JJ93bYYbE/D84Ym7Zf+72XRoP3CQaEk1r2RlXABmOG0jD08PNwGYr7q58QpZbXIj81vVlCQbaEV/T3ATpiAiyXfDp3o4jAKpyJqiqlA2tI8TyVE8PO8m923FRkntKNErMwUvSH3+zJn+Db1cfiRpjKXqKtchNmUGj4UWWjJvO2989VBlYOHC/d9Ca4QXbAXfMX+uZ4xu/HpSYeRT10Xjsh9xD5J+x1qWsVs8h9nQJDcz1ouumqXhhjwvLOZTkrnZILVgTKoaKM/wW23aOU2yCknB7pNjju83S8SqPn7z9cBCGUhteekANJFsvDlOvdQruYrGdmVcM+7mqLkqA2z4ZM4RIbAsWXOj1FOrS2omrlJ63mGTqrEm1TBtgs8jgwa4AKPtgCdTjABnohmDwGedESaTnaoF8zk3kW8HWex+O/XXmQdVlhd9EwyAGegjyjxfTPNSyve06zza/xX4WN4f/vcEdBW/b48vHlDJzohSsmlcMlykmbnLEbEVkd+Bj4+rS82ErAhU7BzJNtsu7mYg0Y/04rxa5QeKhoMly X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: eaa3999d-b914-4a8e-4436-08d89535876b X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:41.4696 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DstQDlYxwaXDevisGgwXxlGHjZN2F+gn4econVXWx8qFuHzdcWnvHoG1vGt1byeHwVhbMU7cltE1PwKoioxmyczmanLCCdOXMGp5n9ALguk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3448 Received-SPF: pass client-ip=40.107.8.115; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" qemu_img_args variable is unrelated here. We should print just args. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- tests/qemu-iotests/iotests.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index bcd4fe5b6f..5ebe25e063 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -101,9 +101,8 @@ def qemu_tool_pipe_and_status(tool: str, args: Sequence[str], universal_newlines=True) output = subp.communicate()[0] if subp.returncode < 0: - sys.stderr.write('%s received signal %i: %s\n' - % (tool, -subp.returncode, - ' '.join(qemu_img_args + list(args)))) + cmd = ' '.join(args) + sys.stderr.write(f'{tool} received signal {-subp.returncode}: {cmd}\n') return (output, subp.returncode) def qemu_img_pipe_and_status(*args: str) -> Tuple[str, int]: From patchwork Mon Nov 30 13:40:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408278 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=gmcNxlQN; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl5zc2VlXz9sSs for ; Tue, 1 Dec 2020 00:43:36 +1100 (AEDT) Received: from localhost ([::1]:56856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjSn-0000bH-JO for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:43:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38404) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQ8-0006sM-N4; Mon, 30 Nov 2020 08:40:49 -0500 Received: from mail-eopbgr60102.outbound.protection.outlook.com ([40.107.6.102]:37262 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQ5-0000RG-Ua; Mon, 30 Nov 2020 08:40:47 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XRrFXANd1hlWjgdBmQUiSGXZbmA+G8NiBeVqdHhm0qiwDg7WPdraR0F2xVrdCkK12ttYLlFdnYETkXREY/O41qv2FBVV30oCPcUxiqK9m5lDuz/ozq6YeVvuquZ2dM61QQDHVN3skaMB+KBWPBOF3wzggO2p+o+1VvnGZUgeUXUqUXlWoRYnfzVXTB6Al603XS46ON28O23Yka3c2oZyw6iH9/BLg+L/prLld3bUWrMvFyyCdaEnrGXAA6qPNPZvAUH4X0Buf+JjR0TuMo29Kiyk3+R8prevaB92QIwqAEt8LsHd/H6nOO/Ogo5IzouEHt/PrhrsdEyt7+CXxbeiJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ukJYvo2dvyrX4xAEDQwpaCL4ydwy+Mw3E6JJjE1GQvw=; b=Co4vt/nHUrbs+/VaeQs6Ofxa+lWWJS8j3IZMe+RzPJ/OJvCfItM6HHDB3MIPsd/ZuR6uccYXxRhreexu0B7uR7bcR0Aj1+We/wtfayIxBt1ej0ZFCib2V0UeEbK3XFc/yqdEDORNttEcwwvYqAvhcz0VMc0JGjddpvHybfmBMVn100P5q6mQKuerL8iTHe0DW9GFMZS5u2g0kUKY7/FqVCYrtmmJD3MvmsbaZJQb8nv6iY6VMi8rCn5XuYO6oarP/URuKoTgCc1yYFM9Ve6VWLzlhunw2W/Lper2gbYA6OsjG0NIJ1E65c8yYmp66kqdDcsxeS178S2j6uljXxNqYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ukJYvo2dvyrX4xAEDQwpaCL4ydwy+Mw3E6JJjE1GQvw=; b=gmcNxlQNX+nNFR8zZlCZI6yLkkK7WQcduWpvkmEZoSAHuoUWFCIEMXlVjBvSgimOhdCHxg7RlrwJ3B8bJQnTsevaS7D8vYmMM8MCmWzfb64EX00n3zQzE0SvYPb82Vclet6BtYjcJLoa9NdsWoDTdhi0rHdoJhPG+okRMdwB+cY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3447.eurprd08.prod.outlook.com (2603:10a6:20b:44::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:42 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:42 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 4/8] iotests.py: qemu_io(): reuse qemu_tool_pipe_and_status() Date: Mon, 30 Nov 2020 16:40:20 +0300 Message-Id: <20201130134024.19212-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:41 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 798735bc-e13c-42e1-7dc8-08d895358803 X-MS-TrafficTypeDiagnostic: AM6PR08MB3447: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:597; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: faLUvUEqinJAlIi3/9BYFc1G8EzhspBY1e+o2VZwF7hI/rFbee+aD3BnpSG0D3Lcf9gf+dkhNzJsXGYJggV5kKUAAz+Cg/4hdoFR8BX6PGuAq4IzNJvbxfbpZyZJ7SwOIGlNiqN6C6UpltOWeu6XBSN4eDulcJJSw7U+04RfhCUSc5peaUvpJoHkk1ejE1vdAm+sijBi098oFHKQGS5gCt/coHd+/1OPOZtx2ttDfNk7nKW+l9WGy6WGo50jv/rsDm/c0menzsLrEe2wKBVeaiC2MIdriy/9TENm/eh6B7aWVHleeweWzKDgpLXRjKiWOhgCT4eZCWvvDhk4iPcKdg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(366004)(376002)(396003)(136003)(39840400004)(52116002)(4326008)(2906002)(1076003)(86362001)(4744005)(6486002)(26005)(107886003)(8936002)(316002)(66946007)(6916009)(66476007)(478600001)(2616005)(16526019)(66556008)(186003)(6506007)(5660300002)(956004)(36756003)(8676002)(6512007)(6666004)(83380400001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: xrJv6hkdyZ8tgaxU9yBvwIQ/3y7nJY6qVKAGinXptFv1JLQUCIcYVCpTbUU7vaXSEAMWVOBiPe8DKOCMU6OMJga5FVRV7YJLgpHHY/uPjMUL3gI5pX+pc3ed0wslh2rSYZAsxa0U6CQOo9gmIQZn+exGMHfWcoC4AoG90cqXNsfOBEVGLt0+82DDqZMnyAO2PKv+Srip2J5jGzo27MbecDY+joaVSZ/NRUu5UxmFEH6eTb/j+G0go7zGszXearjJLKEJJTsF7U/QYrAIiZIfjXGW7WiFVMIB4KPwmrGEbGRfHsYeSQEescCn3LeSPhzZSbQxtVg4arVnYKcp/Y98u+cC3ZA4SxhZwKu9KRA2xbB3lI4M6f94qK3Edi3Wd6P8H7dswvtsa54jkzUVBXOn+pxgvxK+RELhV7GvWorhJ/Y1nfZYQYVfyO7zVbNgivCrrRCRdtcjyIr0Ffnwys7j0/FNKYch1yxjOG5hq5WQm2nxuKMa/8f1cjcesz9GUKrb9CYZVb3uZR8SW/QVivdf3sNPYikD06UsPpjccnejhd0RcD/3lJpPdAtv2IUoOnZlxVk/pxbMxQNgDq8Yj+VoFkb+/Toks4cph01o+OQSY5/erjj6Lcrl3O+SlhqJq/XUeWpl1ItoHBA1zdP4IfsqwPl1sZfkF/o0WJL7FT0Bj6MAWGjF6qItZyRdDsXtBnhMsp5IKgYdxqoSByuBijA5N/sj2iprEivpyIcTegwRs4v66HpZnblEy+v9k7lDeWKCgmI9koZKlzieVnMP4Yig64+78mXyw/xqVJe3J9aw6mpCdZSvjYD/Zx2Sedl2NP3+4rfB2mpr5MVnkAp3aWyrWX7qUBLWErKXjG4/BLGQbd+KnBN+H/mHjb3h60NkD0MkLkO7oRv+/jIeR8aUTrUlHYyIj7MzxJqmXz4DwH7mQycDJU7Q56vpY+T/muZaGI+aHlv6NEaeJSELnwi4ERb25lATWmUprjfXB+l1U0jhhTMBcXHlJtZV1JHcu0Q6IMwo X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 798735bc-e13c-42e1-7dc8-08d895358803 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:42.3418 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hSPU7KgoIvFXzE5TkrR4DXWOdt6/uvPCl9RdReKdS0GU4Hry5B7j+YLykWPtRu8byPIZ9FOFA4aECAvQh1nEX7d8ohAEVVmDlMXHEw/Vx60= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3447 Received-SPF: pass client-ip=40.107.6.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Just drop code duplication. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- tests/qemu-iotests/iotests.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 5ebe25e063..6c9bcf9042 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -188,14 +188,7 @@ def img_info_log(filename, filter_path=None, imgopts=False, extra_args=()): def qemu_io(*args): '''Run qemu-io and return the stdout data''' args = qemu_io_args + list(args) - subp = subprocess.Popen(args, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - universal_newlines=True) - output = subp.communicate()[0] - if subp.returncode < 0: - sys.stderr.write('qemu-io received signal %i: %s\n' - % (-subp.returncode, ' '.join(args))) - return output + return qemu_tool_pipe_and_status('qemu-io', args)[0] def qemu_io_log(*args): result = qemu_io(*args) From patchwork Mon Nov 30 13:40:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408283 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=wGbz/LBh; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl66h2k4Nz9sSf for ; Tue, 1 Dec 2020 00:49:48 +1100 (AEDT) Received: from localhost ([::1]:42108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjYo-0006P7-D4 for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:49:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38438) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQC-0006ta-Fj; Mon, 30 Nov 2020 08:40:52 -0500 Received: from mail-eopbgr60102.outbound.protection.outlook.com ([40.107.6.102]:37262 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQ9-0000RG-Mb; Mon, 30 Nov 2020 08:40:52 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZED9kdwXsna9H0okpLv5Bj9vzKiW+9z5c+f2X+ME3o3+68SNsuOsWCTz+I7PafTHoUxD5Z+SCQldykWmuEZbkkiYVmOoBMyu1WFAQz8esIAyA0KKbseMfOFs4pzltZ+2dtWSj3CUyTRaYcyjd+uGO1tWjpPq0iGIECUqHT39iVGVJkMnYviyZd0uU4BOCmn47oFiiM5nFhfOIg2K/BMaU1ftKFeri4tZD0KvHTYuI70LDXpxB8iTnF79rBRUUGWp6fqtu6rQV/7d2RocCL1vEK4YQQxxTG6ZOPJ+iBZTxg74+/Osdz5oe6CxhD5XXXcI++Oq3TnA1XfS5kHcl01NYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hSwVXLL1Aj3iX2zTtv56qUts2sp4oxAmo9M3d7X7ofc=; b=AVpcGgGkYHmBynR6LtDBm6FrtJs8mnfK7BE/3AylrFbkZv79aXeXiDIFJ57o9MG1WUzhIQBjpnFxtMBJRunL2NAXFgdfNCY64tIPPvhVchmUxjE1d5DPGmT4LI2RguwL9AO09uXyEdywXG/7564Gp8DHsutOf44DZZWaen1Xdni2L2XusYPMj/pHkhraeBnm7jJW8WtDMZ4aMMqMyif51iPtNxctPn12DQiuuSN/cX747vlCts+E+VlpigkUkbtI851QEn5t5T9n6baMlpfR+IS3UgidJWoOZHR3j2gykE20zzZ8Ka4RF5w57id3PClH+q2Cf5PiT8DXhsXjw+sVAA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hSwVXLL1Aj3iX2zTtv56qUts2sp4oxAmo9M3d7X7ofc=; b=wGbz/LBhAe+fz6M0L04hlql9bP0Z6knAsPtuDmOgoOAgVKfwdwnx+SSuFjQCMeKjLF4FIzsHiYPDusEefNIzn81SAD4MibfnZACOUjYOIddVRrbEue9gFJP17wPEJvzat7XuSoAdvtRqkg6ZceP/WcOF6IYwDNybd/p1e1CkFdM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3447.eurprd08.prod.outlook.com (2603:10a6:20b:44::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:43 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:43 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 5/8] iotests.py: add qemu_tool_popen() Date: Mon, 30 Nov 2020 16:40:21 +0300 Message-Id: <20201130134024.19212-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:42 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 11ac443c-a8d4-4524-41be-08d895358883 X-MS-TrafficTypeDiagnostic: AM6PR08MB3447: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:605; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zza2hNzKW5aOGUyH8/OnDcuD6PFdSteigIOOyTc0szI2heFORQo2QzRV6cXg/7tZfPDmjoNbVlQnBh4Kmbe+TdRoxt+7MSpXkukev4RyN/CusEjKQ+IlaI18TDDted9rZcx9ob/csdajWUlAJHMxCoCN6O2kbum0vBF3+r2AhpN252LlZURsy321RFVYat7Ey5AByE2QJ+LNfOFk3B/Bq/0zTazP7hMHKy3SWpndBKTE1SJpvQPiHGEUzSIJITe/up9a0SF6GTfo/2x4pGGqjFIWgGYIvzY/EORdMERyxon0Z3t/tkv14nWOrzcciMrtfgKfK/0wHKQtJ4fyWh7WQw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(366004)(376002)(396003)(136003)(39840400004)(52116002)(4326008)(2906002)(1076003)(86362001)(6486002)(26005)(107886003)(8936002)(316002)(66946007)(6916009)(66476007)(478600001)(2616005)(16526019)(66556008)(186003)(6506007)(5660300002)(956004)(36756003)(8676002)(6512007)(6666004)(83380400001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: S7bdhvJ/w0dBtl7VGDjuVBcDDdFM6L24dZZZqu0cMSDF8j+zuNvyk7LakZQO9jmPeM46I7yLriDa3myPagVqJ7AIFZVBEpxjcIHpI1vK/7xguZOW1dlRJHEjjHyzSf9/Hnx0JDMQ4iPcqLWb6T41p898H6eN1C+9TI5cOVYUdD4IkfMxeMLLvPUAAe3sZ4Ka8jXW4UWarsu922hLFhPdj9wOVIw81Y+lTEhORgC264pg+nqBHgJ2DgEf7iPO6gP9oORogipnMJEeKlGjDiZ7oYrHV/tVjjiMUmZaXunwDlshpEOXLh7+ZWzObfUXO3nu+TOrjb197HSSy8erDIbJRSOhrPnHN5Ww/FzEDp9VQakpcz+CvEvw9YFm+kR7OvEDU240X/XUevsPM5CNtxvkOnRsHJ6Y6rvkk4FtePcsJzpb+iiZLHcuQ41aU4kPXi7/aLHpDuTPYciyN6+cFXOCnys5jelyzBSLp+ANJdeKQCJRdiPGC1PU/P/AbGwQmsVkyJOKB0tqsUHovqWvkGigPjWyFmeP5oSlmCg4zmBxlzuXuaLK0dM5TZOTW2mfbsLzqXxDpuu4N3dEWPNCh00HQ1zO3Lmht0h5PGIfdTPnKNIJEe4KsS//Sa0Ioe0UdfLg3GUr97I2LooOokEVh8E9/hJ3v7y7dhlZWDuQXhae5fj4tdBBPbx0gCR48PU2PpPrwLf7wwMUoOwBaGXeOQc5q41xFoOruHzUIqEh2LbklTKReLoTmgkiD2wUdMvpWyUbxY1bZXkeBMUcExD74n2PzxIaR6i1WA70yfRIJ+etwO+5uGLWrGznhgavcBuV1y1BaEtce/8C4VMk0GX3A81CwP7xaJsGIW9aUfqmONgFBu4dx4MCx6yPMYz/yrEvPCg60UNlWu+4vNAT2wNldM8V6Dwb5ELi7ZN6G8LNReXwO6fUNiRgt0f6+g+l66jD1doK54iLUIZYad6CE36zsebrIz6qAqiZe0HtD0sNPEIymeFA9r5C/ptW1MqEMKbfvhdL X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11ac443c-a8d4-4524-41be-08d895358883 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:43.2070 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: x7CzrhRCrMfRzr/ftNt/AAZ0swXlIZftRfDIEKy7LsKJ+kmn7n9oNwFP3GpeQfSy3nWVpMYnQX/awc0xiMKXF+stAXoELRJ7FOq+e+0/5BU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3447 Received-SPF: pass client-ip=40.107.6.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Split qemu_tool_popen() from qemu_tool_pipe_and_status() to be used separately. Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/iotests.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 6c9bcf9042..df9834e43a 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -89,16 +89,21 @@ luks_default_secret_object = 'secret,id=keysec0,data=' + \ luks_default_key_secret_opt = 'key-secret=keysec0' +def qemu_tool_popen(tool: str, args: Sequence[str], + connect_stderr: bool = True) -> subprocess.Popen: + stderr = subprocess.STDOUT if connect_stderr else None + return subprocess.Popen(args, + stdout=subprocess.PIPE, + stderr=stderr, + universal_newlines=True) + + def qemu_tool_pipe_and_status(tool: str, args: Sequence[str], connect_stderr: bool = True) -> Tuple[str, int]: """ Run a tool and return both its output and its exit code """ - stderr = subprocess.STDOUT if connect_stderr else None - subp = subprocess.Popen(args, - stdout=subprocess.PIPE, - stderr=stderr, - universal_newlines=True) + subp = qemu_tool_popen(tool, args, connect_stderr) output = subp.communicate()[0] if subp.returncode < 0: cmd = ' '.join(args) From patchwork Mon Nov 30 13:40:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408282 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=oxt08xEC; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl64y16Drz9sSs for ; Tue, 1 Dec 2020 00:48:18 +1100 (AEDT) Received: from localhost ([::1]:38594 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjXM-0004vg-3g for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:48:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38496) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQL-00075h-0B; Mon, 30 Nov 2020 08:41:01 -0500 Received: from mail-vi1eur05on2135.outbound.protection.outlook.com ([40.107.21.135]:61792 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQI-0000P5-Rg; Mon, 30 Nov 2020 08:41:00 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PGdgcwI7oxeH91HohaJzR4S6zsJ4T8iERdO1KIaVTaWzVLKQBENvv8RvJnT6W3g5HLfouiyl538Z15FPyCTW7tHZpDv15hRoLTIvEdPYz4HcA3TuvwXZD+nBE0MeyzK+6t6M7bgBtWpdBSjruiK6WWejDnpDUEFqprSpCLeZfxsI2xT1nGslzAnSamIB8SJTTA1HO1iX9TuUAQ++HQ4ApFlYCs1nMenH512qD2x47MYRd4K9FgHJ6+jh62VxfFbH9u89ycBhm1GPB85MfOCQefh+PAwAbx8KPMVqmhOVWj/GVCcGzW5llya2a8eYHEpnK3ATBgr5tyTvGdz8Hw4e0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0BeuCo61nSlA0JwQpzJzEHrRceSW1ZLFVIZw+mYEaJU=; b=kQQIEk3WPM3rcslbVogL8QG0chZaB+qbVAUdukN7GQd1Y7QUbNjrIO2v4nFdtkaqJUsXk2kN9gT2CJj1RBvdrVIWFgPeqSDlMN6PIjEQYJlqGme9AXBSUMPiVRl9QUes9usDAvPg49oEOKUj3dHbSY8MZOPvIBu62BE3r0jv4Dnkh84y5zkG5tLzWj95AgYSqki7quaF70qTZbnqSTmrTb+t6t/f2IhWnjtgL62NhJP6tNUOqeXLBMzcNVM8El5y9MkgqJBsPmGTuCZWxdPI+NXRAlg/3lvnrfrr7Nde2Eaj554Rn9iPtsgdDUq2PQhrxGcBDOluzu7eA0mWUDbbWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0BeuCo61nSlA0JwQpzJzEHrRceSW1ZLFVIZw+mYEaJU=; b=oxt08xECSa0LYbAYFLcgMVO/i/q0teMV/SYgxc6yQIbAdvwWMjRWjTN0G83PFvp9MMXoSraKpU4uPRZzt2B2H7gKFbOVnyWIXxerpncLawa22HixxgL1JOMHT7uWIzrVeQYTe0V6RQD0UELvCCTbfhQ0u3g830EK/UuBHVozNTw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3448.eurprd08.prod.outlook.com (2603:10a6:20b:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:44 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:44 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 6/8] iotests.py: add and use qemu_io_wrap_args() Date: Mon, 30 Nov 2020 16:40:22 +0300 Message-Id: <20201130134024.19212-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:43 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 932912d5-0f78-4dc9-404a-08d895358909 X-MS-TrafficTypeDiagnostic: AM6PR08MB3448: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tWL3CVZrySL10fmj57IyrKnz463yhXwWXqE/BuEBTvdzybGepUfXIQLbtWVqtqrvq7nqHc3ADa6Zjl7Z3H6IDUaBMVoYWSinfdy0OzebZHW270n7sPxVVHipqjGv+It5xfxG+ShhlPWK69Qvdfrkg6hEyVKk7hQd7CfyvPkuiAVfVEoxJQDMX90cNbqk6eMZGFuZ3fCTtn6nwRrmLHVNZkd7F9FcoSFhKQtF3NfrJ70PdyvheBILSFGX8Mi6vsjn9ieJS7dQICOUNCPnAdk5u5OTaxgTwi6eyNJLNsJ+HNKQBqGOeBFhyVwVKVKHZaC4Qm60GEJajMCSRdOkuQnlEw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(346002)(396003)(376002)(39840400004)(2906002)(478600001)(52116002)(6666004)(1076003)(4326008)(6512007)(8676002)(8936002)(86362001)(107886003)(2616005)(6916009)(316002)(956004)(6486002)(5660300002)(6506007)(186003)(66946007)(66476007)(66556008)(16526019)(26005)(36756003)(83380400001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: Q2k8MUYPBYbioUyIMkAZ4D5RyP09fQ8o2h+QP9OmJhuuFREwfwpfgo27rz63jkS9ssdddGPnz4FeUd24+a1x6gX438N0vUruruYHyXp/JPfNm7BTsMvTk83IbyTnhk/k3dM1Z+GAREpIEiG6XGpXTgexRvhUDPxiwzxjXV0ruKSZfhfv5NqoU09j2XhAcg1k6Uvphlx/0OmuoDenkIgSdLcaaM1+rzXh88accn8cyuuC4tuVbDhOgYtrT5IwwEWUJ0/hVFd9qjJFrJz6BjpEG7A/YxzIzh1qbdSeE5+GgMNFsRJeCsPGpmcOHmiOcnU3udHA3lKOVynvUzPf50NZxSZO9XNa/7SU9FvPD3IwcAGmIrg9i8HPtbDmp+FhdhteH1eQjQ2kjFtXQVMrJwhDWyN7bLSBjRakq5oL3DIH2+6EEqTNZzGjIYt6viIRDg+0o/vd7nSizN6sAL7SZ2uR9JE9l0eYKiyk8QNKq+6J3tnGancmGQTHJsDD4dehcerhdjqT1nClIYBeBJC8M2MccYoKJNYq3eCX5WZnhXhzp2EN5pUEpsMDOwNqYp2cxQ8qd6a+9OMlcF/4zhsQ5BQAB1ECJfx/lY4iWTaxqpMbYHZr72s+GEbpQCYKi37epm5UptRzUyrbh6N0MxGi/OXxc9UOkaXunkOKRDP5QfrYUuPNe5iemlWGLojy2wm2Auyv5K06vcY3MZ6CAErHytqVYdevXnu6lqCiGXmpzT0JhGIuJhkEoALQAgxAhVbigkZ3HZADMsLr4dMi+7M22/OXc1vbUonMv76eY82FCx+5fVvRaJbm6lLyo2QlStiVFifMja03T0n5nIWhs6Bd3wo30SsciXMW7rqIrJpl+flMP16Oi1SMoLlczwI2wD0zHNwoKbaR2/+zaRql/TuLA4ivDYAhyM8yKkiJVATjNhv8/9FQJXeaT0C8b3cDEIPhg/LP+djL7y/D63vqo3TUam3fwQoA79k0wUGoQVNOUFys2uRR+yhoxyMt/XgphDvwDHO/ X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 932912d5-0f78-4dc9-404a-08d895358909 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:43.9806 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dqUEs8WWoZPUQDvOGsaf31ao8d7g/DTNEunaQWpWfOOfKXYia8lBqQzdFxYjVhYBfKogH7FXKVIqQqbT2sXvxfLMNyKLIeog9C1Ayl5ju5U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3448 Received-SPF: pass client-ip=40.107.21.135; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" For qemu_io* functions support --image-opts argument, which conflicts with -f argument from qemu_io_args. For QemuIoInteractive use new wrapper as well, which allows relying on default format. Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/iotests.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index df9834e43a..393028eb9a 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -190,10 +190,15 @@ def img_info_log(filename, filter_path=None, imgopts=False, extra_args=()): filter_path = filename log(filter_img_info(output, filter_path)) +def qemu_io_wrap_args(args: Sequence[str]): + if '-f' in args or '--image-opts' in args: + return qemu_io_args_no_fmt + list(args) + else: + return qemu_io_args + list(args) + def qemu_io(*args): '''Run qemu-io and return the stdout data''' - args = qemu_io_args + list(args) - return qemu_tool_pipe_and_status('qemu-io', args)[0] + return qemu_tool_pipe_and_status('qemu-io', qemu_io_wrap_args(args))[0] def qemu_io_log(*args): result = qemu_io(*args) @@ -202,7 +207,7 @@ def qemu_io_log(*args): def qemu_io_silent(*args): '''Run qemu-io and return the exit code, suppressing stdout''' - args = qemu_io_args + list(args) + args = qemu_io_wrap_args(args) exitcode = subprocess.call(args, stdout=open('/dev/null', 'w')) if exitcode < 0: sys.stderr.write('qemu-io received signal %i: %s\n' % @@ -211,7 +216,7 @@ def qemu_io_silent(*args): def qemu_io_silent_check(*args): '''Run qemu-io and return the true if subprocess returned 0''' - args = qemu_io_args + list(args) + args = qemu_io_wrap_args(args) exitcode = subprocess.call(args, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT) return exitcode == 0 @@ -223,7 +228,7 @@ def get_virtio_scsi_device(): class QemuIoInteractive: def __init__(self, *args): - self.args = qemu_io_args_no_fmt + list(args) + self.args = qemu_io_wrap_args(args) self._p = subprocess.Popen(self.args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, From patchwork Mon Nov 30 13:40:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408286 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=qaxTDjo/; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl6Bb4btHz9sSf for ; Tue, 1 Dec 2020 00:53:11 +1100 (AEDT) Received: from localhost ([::1]:49406 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjc5-0001BP-JG for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:53:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38514) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQN-0007BQ-3v; Mon, 30 Nov 2020 08:41:03 -0500 Received: from mail-eopbgr80115.outbound.protection.outlook.com ([40.107.8.115]:22148 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQL-0000SL-2e; Mon, 30 Nov 2020 08:41:02 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nc9VdZ/ZH3yumPebzE7H8ZEn3yZMAZe0Ti9UVfueiz/y90rxrKDVxCB6zgesLgmVwPEwCfYgrMmcyrLX0sQcoDr9cx2oLpXtINbpZwER5YLCv2budf3B4JJdDAaA7E7EvRuGKIuqeYSrrZG/dcpdtziKnUteIDXYSII9S55aiFZHGigj9Fz6B1vC3F+TaolGUoEovW5IhU40V+a3f6fDKLKNsxsdZBkmUkLi5HikJcZzgRhaje69gCJOjHvcEV7LwfoaQFLW0jQJDRzig3SUdnFwlZI1Nym1mwcPpR27Zss+F3g3kQz6I3FUwOTCMn6BrCBvjx9+s6ygNYalVi8+HQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y1xS9ZdqIIkUExBFpJgDyGIF+HBdRiuTqOqgsWR6qEY=; b=Kg1RTX4Evgk+r3E+9AFcMKOcxNUwfTuz+KdKu2++8xVLrMsZeSro+rZfh0RHGROW1z15z9p4yhtZldB0uKG4fiQP9gLLXjVr5fFZ1RWlNHYxYFxsQf2s2wCW7cYtDpm5ZhgOEszkH9Kx2gkwKgves0xNCs58Y2TlNlTa8JNSIzzEVjvCy9QFf27PWYjlyHoC1KyapEs+G+sdGhWO2BTw7CFTIcbCc0OTT/tsLCSEat2DvFBj28oxxZt5uPjLQHYiWaa21gXShEW0MA1rYXf3QLNOvABRR/alHgHKBpW34aggx5OgnTY91DLUH9BzsdW95iE6erxENH24wGJGo2Xq+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y1xS9ZdqIIkUExBFpJgDyGIF+HBdRiuTqOqgsWR6qEY=; b=qaxTDjo/yY8AgtO8j0PW600qtt4LBuRr6NomE9Wigj4+xO8FhLETEvvBvn9VrMDbNuRkQc3Z04tN26zhsVgcv9AK1ZhFV0ZzF5FJ1KNSpEMoxdeMO+nUMPfjx8GzTg4NsF1QWH2iKdmq6hmblmmg64qXoSgL//iYjvBlI50uUkU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3448.eurprd08.prod.outlook.com (2603:10a6:20b:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:44 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:44 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 7/8] iotests.py: add qemu_io_popen() Date: Mon, 30 Nov 2020 16:40:23 +0300 Message-Id: <20201130134024.19212-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:44 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c925cc5a-192d-4558-c0c4-08d895358997 X-MS-TrafficTypeDiagnostic: AM6PR08MB3448: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:317; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Cz13Jbp+LRkIdhXmyY06egGW1TUWIEcLwdDmz/P+McJTo9CWGQMqEInbaZqDvA8GK+JzMB+3hyk27J7tlKE/xvhTLn45bp0Xbk4W+AfWREt5tDVo3H8bbhCiiv+pgzF3hnQ7KjEgJsFDJCp7dPNMr5WvzMIn6RL4OcH0x96JjBtlKo4qmoSy49P9PDQAlAg9GJ02oNVjUYSnHP0/MER7KgPXycN0ff/NGilAHc5cNqN0WqANDY91lGrhTv2ktPVUWwBbS+pty9ofDHnskB9G9D3HIUsb8V9eqzV0GUVbTexz1ALs9WyiOr/isZZzjgtQ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(346002)(396003)(376002)(39840400004)(2906002)(478600001)(52116002)(4744005)(6666004)(1076003)(4326008)(6512007)(8676002)(8936002)(86362001)(107886003)(2616005)(6916009)(316002)(956004)(6486002)(5660300002)(6506007)(186003)(66946007)(66476007)(66556008)(16526019)(26005)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: oaINkNalktytxke6x4PL/4htAvg0qZW5E2g/HyNqQXySKkHXwbgBHDEar856ABHijj0FrJk9j2tvZ9VZr1xdqhPoRFSrKMoaxywEg6MrF5SMDVMoNGGZKIzVI/SmDItsb+YknP1cIQpALa58I+viOGm9+fVUx6SYtK967vl5mEjKgZGFtcr0Cp7xPoZNgPVqvE4FWPLLHArPmB4aEHnwmBW8vLEv+7OZVRiDq1umZJvT4PPg8bMBxahjn0UrgII58JjNEJnIxJmbPiOFKADnDJdchZSsNyq9SFYT54eBI7UajWEOwqXQdUyZ7zpUjVhsx5rTh1qgF4sqPln3zoZyddKbNhTZVip3nnFCRbsGix2c8PrWZ/LOPHyIl6vUOs8RISmUtge1BES2VyGGmJIxfYrPRJ9uNpdeYAgW3ezy28XGau4sMKsJVruRBZni6psuOsBQyj+ovkWoJnCHKCbZMC7IcrRtOidA2ZCl3TSHvnvCYRLMbQDd+CUDX0/4Zs4COKujlUUo1RtW1S4SUNoFmR/DAix5EwtCvjNTm5kYLPS01n3quv6CERdt+JGni/Eq0dMuhzbcRICJap7p5mq8poDxveEEsAV3uX0K3JsDBVgGyCYWJ+6ugmGw1Svnl69Ph3zIzdMLHTuHQg7PE6vjTrEQGmhbC7Aw5XiPH6fc4OSNbWHTsEME0GFSE3GAP6yZ/8ewD6XZTyPa1Qybc2yGIQiUCJZmtKZfB1vaxrNevN4H659mTHcq/x0Bi4CJ+RxQHyQw0008rkHf32jusWz2pJsa+duTy89ny9+iWGM8q549Gu7r+O7wNH0oxXnLhZv9H42d3ycVbKeADSG7bVw1XVAoS8EYjT4RQKFusbT6Pi76UQFqbEmNkDPoEKmaf+kebB731JQZUXRwtXGIcrDMx4m8MAcQuuCoMja1JwrenmW562Ao5rlyeUmMo3Lxp48qRNjq6Lt5hKGrHkWPUPri+gW/4VFZKuNIUyES4dp9yh09guIMPV6C2RimELTuVqUG X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c925cc5a-192d-4558-c0c4-08d895358997 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:44.8408 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nGOkycQjqWFRxdFcNMs7QNI4ys/FuMc29fQ3t7/cu46ULZZbhtbSui3vBE90QDUF4fGMv+frFygyxAGscxvXq2aBieD25TZ5xE5K+fmA85s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3448 Received-SPF: pass client-ip=40.107.8.115; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add qemu-io Popen constructor wrapper. To be used in the following new test commit. Signed-off-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/iotests.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 393028eb9a..d7b488f7ee 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -196,6 +196,9 @@ def qemu_io_wrap_args(args: Sequence[str]): else: return qemu_io_args + list(args) +def qemu_io_popen(*args): + return qemu_tool_popen('qemu-io', qemu_io_wrap_args(args)) + def qemu_io(*args): '''Run qemu-io and return the stdout data''' return qemu_tool_pipe_and_status('qemu-io', qemu_io_wrap_args(args))[0] From patchwork Mon Nov 30 13:40:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1408285 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=HAv7Rhul; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cl6BX0ljHz9sSs for ; Tue, 1 Dec 2020 00:53:08 +1100 (AEDT) Received: from localhost ([::1]:49084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjjc2-00013b-4L for incoming@patchwork.ozlabs.org; Mon, 30 Nov 2020 08:53:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38480) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQJ-00071J-3A; Mon, 30 Nov 2020 08:40:59 -0500 Received: from mail-eopbgr60102.outbound.protection.outlook.com ([40.107.6.102]:37262 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjjQD-0000RG-5T; Mon, 30 Nov 2020 08:40:58 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZmngxaXTHTKzSqCNpW9k+FLjrbbgapl2qgnPfmbntVEX2mG7UEEoWr9G14Wn3LtLoBmJYCHoF5NW+qHX+8xCopdLl7aANutpQGyiX7OnXRUUZgGTJKHDia66GtnARWGkbC13g8bRyhz2dKIqJXlw+W35O+zTomrtEcuEQXeYZ0L5dzZRtQBEgKhv6mO+Awm/KZLqUWIYjiUAmu2MUZgUxRF08R+z7KwT+Os+II36HH+UubIUAD4WRHjQIX+Nw5QQE+m8ZdSn1jDl6oJjGvioUr4d+fqsHTC1SwLd8kr8r/N40D4mvgDmyI8OEPOD8rKr4s2pKxSN5JdMSkJyQCUV6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IKYCtRBCRKH+QoKt7KmBTfV113rSvbTK9IirGwZ5Ptw=; b=Ys6tR0QbSerFJl9PFKhBbscuUUE2FruvFJOZ+NBxhY7iBAP7QT+X2sNP6Ef0UWR/MhaNaicX07nf85E/RfODo0cbcgCXnFl+e04QBlKIdTAL4k3SaFCkFGqHMFX2LRTMFGU3vFtxhcoowusYfrxc+F66qCF5sa5u30fPjpzdEAsQZy/rpOpj2YLdvH0pKHLg0brqbeNjmWB3kIOx6JHHu5G0gAwCXKyxYEy0R5KiVUswERO6FbHTi384Bc3zRdz8+FiM+szmpgsU6Chh2F5y3fLz1J2BoIPmLucEwXV2BLBqe3JTdfMR2JPjl/llgI/sY7lGTd83Kc++kFlWVVyY9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IKYCtRBCRKH+QoKt7KmBTfV113rSvbTK9IirGwZ5Ptw=; b=HAv7RhulzSbySuogxWCDeg/zzYLMzCTE2bWKBgelVcWZML2i4hgC7evMvnGjr2KYsK53m3PNp752eHxdwobpXwSGwipmdBd0LKwcJhd+l+TTCPxv8GKJ6ajYv1tNBejNQ0n4RYuIWjJtgITxnlpQE2yKwiIgopJ97Syvju2yMU0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB3447.eurprd08.prod.outlook.com (2603:10a6:20b:44::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.31; Mon, 30 Nov 2020 13:40:45 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::d585:99a4:d7a4:d478%4]) with mapi id 15.20.3611.025; Mon, 30 Nov 2020 13:40:45 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, eblake@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 8/8] iotests: add 306 to test reconnect on nbd open Date: Mon, 30 Nov 2020 16:40:24 +0300 Message-Id: <20201130134024.19212-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20201130134024.19212-1-vsementsov@virtuozzo.com> References: <20201130134024.19212-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.91] X-ClientProxiedBy: AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kvm.sw.ru (185.215.60.91) by AM0PR04CA0007.eurprd04.prod.outlook.com (2603:10a6:208:122::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.23 via Frontend Transport; Mon, 30 Nov 2020 13:40:45 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f4ed9ed-80f8-49f4-ef96-08d895358a14 X-MS-TrafficTypeDiagnostic: AM6PR08MB3447: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KnotW7GwvJYRTpDg6kG3nYLEtRm6H5OFMPqSgeaIDGF36HdAjfdJFV3bA/0AP5IUEdMT5BcBu9pWAclqyyg0C7pW7va7gYOxLg3xOTES398hZyJVHLG98CuYTjHidPr1PhjuZgIeQOYlAOcTHrscYQPzm+4ViPQ0b3JPfEgll2p7kBTBuIZjqFh7HDIUJTkoj0YhZMRivLhmNzFcb+XvinzlI7YoE/+kYnFcs6BrUiyMZuuxVuqrECV8tukAnwfNfqAZE/AygbI8PhbTSWzrtfo2i5M3bLf1uKqT+jEUPjmk3jz5511FHLJEhxqnrgfhOzT7qLMm2aZ9tXvbvFPCCuaV+fDtsK6o/RWJPurWb8PiTTpCpIVs5CtEyyApOSoyitPtcmVihpjK2zADYFSLOqEdEUMzB6A8oBbF7YDCKVuKHbPQksR+byqB0+lDvoobvKzEGpRPQwqfskO7zkIRzAw5cgZF5lVJDjaB4KajvRY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(366004)(376002)(396003)(136003)(39840400004)(52116002)(4326008)(2906002)(1076003)(86362001)(6486002)(26005)(107886003)(8936002)(316002)(66946007)(6916009)(66476007)(478600001)(2616005)(16526019)(66556008)(186003)(6506007)(5660300002)(956004)(36756003)(8676002)(6512007)(6666004)(83380400001)(21314003)(2004002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: pJKbmuy77P6LIjZ+pfeuvuTZdoV7uW0Xb1djASkv90SwGcyzHWRm2WbWA38G1SPrvGLnSr1DcoanE6zxiKLrePFP7jOy64s69NzCm6+CeC9nZbfFN4MaSpvYGr9aI3+3lq2xCheYTc2Qm5XtRoLNIvWTUZ3YpxhN/P4sPLs9PUD92+fMbmX+TpNmUHYHXlwsC9Ep1Kd/ehr1NqDOkyG8yh1ZlLmKKOfy6cKgCt07zIr+3s8P+1RuSYLm1ANkMm9VPFPJr6KHEpXwtRpkjcn24/TK10T2zwAbU5bvWScJEWW0eU/PP3vSNHrJwRccNnhNgdtWETRPNme5v/2F9du+JBkjRzHdShNUFM3s5l8kc3Epg7vZosnzRgwqZF3x9+AZF0l5nlplhQ9sisefBRoANh7N9eS4YAblNSrfxj3U/p/OklW8HX1qAlWtoQWandOFt+ii3J4gPYGmVXPuwxRRsqNme/RMwzsg6Ca5Si9OO9H2CpyXV/rwxTSj8QuX+Oynbg2JPOfyVgdsJfXUsUA/iNrynd12AqF1vB5n4rMtb8VQk00VTAWpkzi4lRnjxQt5QL5UVCVV9preqqIjzDhJmazIPz1jGPThEK+ErpOg7P2J3g10BScXjzkje4zzB3SdGgXqD0NL+IgiNwrNzVLZUxdE2h1qlfY4SOx9gqNYGGO1UPX0gDmDztDMeFDVzqTwHHOXU4Y8w+YfTJh78or40h3aBMAZBTpgXS+iYhfIi01S2jb3wGyb/isb5k6OW5NLtpYpT8Jw1z8bUQMLrTdP55Jo9GmnY38gDXAx0vGe7EMIb8p7So04UAFXbmLSiBqCFVv2wTxJzEeiMCLjMddAQAKzKWDReIW97doDZk/fQke+mRSZlIiXtq+bI0yqiKoYtbZm6syFdIPWHYPVkIncDutG4yiEiAuXTkVORnHxbHgLQZ8crf6eo4wIaxAP4AByKwDn+9Y3AHAk1z5PdBMukibc265B7b3+2UVid2Jrhm8Uj8+odpBeVqL3Tjjg8W3K X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f4ed9ed-80f8-49f4-ef96-08d895358a14 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2020 13:40:45.7469 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gdvHPqEV3w2WX5TatKsp1a67KN0Jl+IGFH3nQCFGel9te/onlDV/x+I/KW64B5EdEQodxoddtOhXxKGS+4TXA4nUuCkyrIzkxONfCVaggn4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3447 Received-SPF: pass client-ip=40.107.6.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Vladimir Sementsov-Ogievskiy Signed-off-by: Denis V. Lunev --- tests/qemu-iotests/306 | 71 +++++++++++++++++++++++++++++++++++ tests/qemu-iotests/306.out | 11 ++++++ tests/qemu-iotests/group | 1 + tests/qemu-iotests/iotests.py | 11 ++++++ 4 files changed, 94 insertions(+) create mode 100755 tests/qemu-iotests/306 create mode 100644 tests/qemu-iotests/306.out diff --git a/tests/qemu-iotests/306 b/tests/qemu-iotests/306 new file mode 100755 index 0000000000..85216cf088 --- /dev/null +++ b/tests/qemu-iotests/306 @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# +# Test nbd reconnect on open +# +# Copyright (c) 2020 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 time + +import iotests +from iotests import qemu_img_create, file_path, qemu_io_popen, qemu_nbd, \ + qemu_io_log, log + +iotests.script_initialize(supported_fmts=['qcow2']) + +disk, nbd_sock = file_path('disk', 'nbd-sock') + + +def create_args(open_timeout): + return ['--image-opts', '-c', 'read 0 1M', + f'driver=nbd,open-timeout={open_timeout},' + f'server.type=unix,server.path={nbd_sock}'] + + +def check_fail_to_connect(open_timeout): + log(f'Check fail to connect with {open_timeout} seconds of timeout') + + start_t = time.time() + qemu_io_log(*create_args(open_timeout)) + delta_t = time.time() - start_t + + max_delta = open_timeout + 0.2 + if delta_t >= open_timeout and delta_t < max_delta: + log(f'qemu_io finished in {open_timeout}..{max_delta} seconds, OK') + else: + note = 'too early' if delta_t < open_timeout else 'too long' + log(f'qemu_io finished in {delta_t:.1f} seconds, {note}') + + +qemu_img_create('-f', iotests.imgfmt, disk, '1M') + +# Start NBD client when NBD server is not yet running. It should not fail, but +# wait for 5 seconds for the server to be available. +client = qemu_io_popen(*create_args(5)) + +time.sleep(1) +qemu_nbd('-k', nbd_sock, '-f', iotests.imgfmt, disk) + +# client should succeed +log(client.communicate()[0], filters=[iotests.filter_qemu_io]) + +# Server was started without --persistent flag, so it should be off now. Let's +# check it and it the same time check that with open-timeout=0 client fails +# immediately. +check_fail_to_connect(0) + +# Check that we will fail after non-zero timeout if server is still unavailable +check_fail_to_connect(1) diff --git a/tests/qemu-iotests/306.out b/tests/qemu-iotests/306.out new file mode 100644 index 0000000000..a35ae30ea4 --- /dev/null +++ b/tests/qemu-iotests/306.out @@ -0,0 +1,11 @@ +read 1048576/1048576 bytes at offset 0 +1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +Check fail to connect with 0 seconds of timeout +qemu-io: can't open: Failed to connect to 'TEST_DIR/PID-nbd-sock': No such file or directory + +qemu_io finished in 0..0.2 seconds, OK +Check fail to connect with 1 seconds of timeout +qemu-io: can't open: Failed to connect to 'TEST_DIR/PID-nbd-sock': No such file or directory + +qemu_io finished in 1..1.2 seconds, OK diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group index 2960dff728..6ea7b83c1e 100644 --- a/tests/qemu-iotests/group +++ b/tests/qemu-iotests/group @@ -314,5 +314,6 @@ 303 rw quick 304 rw quick 305 rw quick +306 rw auto quick 307 rw quick export 309 rw auto quick diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index d7b488f7ee..2530185220 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -208,6 +208,17 @@ def qemu_io_log(*args): log(result, filters=[filter_testfiles, filter_qemu_io]) return result +def qemu_io_popen(*args): + '''Run qemu-nbd in daemon mode and return the parent's exit code''' + default_args = qemu_io_args[:] + + if ('-f' in args or '--image-opts' in args) and '-f' in default_args: + ind = default_args.index('-f') + del default_args[ind:ind+2] + + return subprocess.Popen(default_args + list(args), stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, universal_newlines=True) + def qemu_io_silent(*args): '''Run qemu-io and return the exit code, suppressing stdout''' args = qemu_io_wrap_args(args)