From nobody Fri May 17 11:05:37 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1627404589; cv=pass; d=zohomail.com; s=zohoarc; b=Sry6Ro14YxmMdAtfk9WOlKiSEkrw+zdQwfXzW0nzqo2DgTvZSuDo7uC3CJt9W1zjm116eXKeTgrMtVW8zADXk9DGG8HKOG4rpFmplgQPgyKkQ7/Q2Te/sZ7tVGkeb2T9rKyf3XYAHd7HrgAko6P5LCsItGPHwzi0cXkWug29jjQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1627404589; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VBsIITZEAEciHS3vlJ9vEjEbGyXitWQnkEDm7FKtURQ=; b=V+hi4/2uIuJYjYYUjO9S3eyrJH42b6QfXF2abI1B7HJHZz1TY/9fsEG6xfcux2aW2Y64edwNx2i+AJ2qVdyFHu0Hvdh0JOl3l0H1zrc4cih3DhbxXG0X7kVVsoJgg2uL2iR76iNXliGfTTIybWoJshdqC5R/oGR4mcc84KMVe/w= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1627404589685396.2589531846469; Tue, 27 Jul 2021 09:49:49 -0700 (PDT) Received: from localhost ([::1]:49628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m8QH6-0002Kq-Dp for importer@patchew.org; Tue, 27 Jul 2021 12:49:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53458) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m8QFg-0008GR-TQ; Tue, 27 Jul 2021 12:48:21 -0400 Received: from mail-eopbgr80111.outbound.protection.outlook.com ([40.107.8.111]:53292 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 1m8QFf-0004HS-14; Tue, 27 Jul 2021 12:48:20 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB1841.eurprd08.prod.outlook.com (2603:10a6:203:2e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25; Tue, 27 Jul 2021 16:48:11 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::44b9:68ac:bdc7:e23c]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::44b9:68ac:bdc7:e23c%7]) with mapi id 15.20.4352.031; Tue, 27 Jul 2021 16:48:11 +0000 Received: from localhost.localdomain (185.215.60.211) by HE1PR0501CA0024.eurprd05.prod.outlook.com (2603:10a6:3:1a::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.17 via Frontend Transport; Tue, 27 Jul 2021 16:48:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ay9J7Zv4m82xc3o8pjTveVj4ILcofepZL6opr52kt8dUFas2p6Ajlw1KyvYbjydDLFlCZaJHutZbrHAGiSwRolRVrCq9TqrWocy7az34eM/64RAXbpTl5JMLgqroSAVPBD4SnmuzRQywXkMKx2PHpzqfsVgVyw+NGT95t55gFU+8yGh9ogRTBPAkJ2RpB5SYSh+gQuq8kYW3xmwk2KTxz6w3MBYErKLim6NKiq3zillP59Nh+QboKRlmIMUfJsf8NSp8WH5a13C3Rb7b/eX0LHFiITxNDuzlw1vhQG9MUMoXezWEvC9OEBmOmnNhI4Y7vnWmNK/q727WV81SWDJNog== 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=VBsIITZEAEciHS3vlJ9vEjEbGyXitWQnkEDm7FKtURQ=; b=VuKkywObfmfdWFaPcAx6KzkefFIfuHEbwytAuGZu2A+j/6AQCleVQvpljgq2B2D0wwe0aj1BwBkPob3V5dPBWoGNnl39xlRqvdnUG0Y8RStCTEDDDbsM0srbg/bhlOL/cc4+lRCI2ThJOxrK3KIeHiDSbh8E28ulLU74dNYTAcVwvktEEmH9JP2vFllqpsfrVrvHJohe59Ka3gg8EnonDPgfDwinUfPSkJBLO2TKbX/OPxj5Apcs6RNLSjgV1giPf2+UDCBjmjq11eO+/Rtoeq2j4uxVhgrsvAml5QyDqWvhw0ywEiWJcV+sNEd/JfNvNA6Ox2h4zRBhVBewggk/Pg== 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=VBsIITZEAEciHS3vlJ9vEjEbGyXitWQnkEDm7FKtURQ=; b=sDuf9piJE8qiqFGuMosUkiK/ABYGebCY4468wCsNGFNlqmJKtBpTutBxS4QBXe+fLPzUulhfksO9yvlIADGRWf83yDq8q9bVlbrTLWYaoTlENp9DOUnTonpSWD3GvAh8RedXrT3LhWiLmJGK3n+Im6eriruzbJpHAGxfYjEQ19o= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, armbru@redhat.com, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com Subject: [PATCH 1/3] job: add job_complete_ex with do_graph_change argument Date: Tue, 27 Jul 2021 19:47:52 +0300 Message-Id: <20210727164754.62895-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210727164754.62895-1-vsementsov@virtuozzo.com> References: <20210727164754.62895-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HE1PR0501CA0024.eurprd05.prod.outlook.com (2603:10a6:3:1a::34) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7c33fe93-710f-4493-cdeb-08d9511e5195 X-MS-TrafficTypeDiagnostic: AM5PR0801MB1841: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:291; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y7u31Y3LCEuzOrKlhH0mfiZrDP8hf82C66FAXvLGwbtlImYa1luVRbgYjs67epZ2RP7eg998Td1qXN6skMdHtYMDRnH06pFvM4nb5SKrxcNC61Pcd8+VNCHy84HlnfIZZNtDh5W0dqqAlMFURZpBMs7GAQCmouIADhoNS0TSJ7jLsReR9Q07o+Wr1OhMIoIWcyeGj8IfeSQa10pZpsA0ucvEfb4CE2TdUOchr4XHqSxswn+8qvYgjFSQgEpX0c0LU7INOKd1ho+Kq2mMRyUIhtN1UlzhJB09MHA5vEdXMdWgB9f2/j7lvOq4NrRd5wONqzS5LDvgTgU8Hmj9P/+y12lnyGUqiHsMpBrzxBSYWvAJX8KExI/IRI6738ZxCNm5vyalEl68apOZH7qD8e/fuO/P4A/yPNZ+TGqyxDNunD+F7V3sADu9nAL082LNedQWtNMSOmGwPnN0ZKg6g+uHnyagv+WPU2MOKmDzirgiy2K3cNjG75xoEFTdrgEPNEZwpwUSNsICAUDr3HIPNg9kGNYE9aRgw+jPDkHCNfdSyIEHBF50S9W+TotJ9weha1ukW9yTgDyBs8LBXW4F5sru7ceIT9UE+IoaJIzvEqk7wdb83+VEtGC5VNVuzcdM90mqTHWU8DYDqXJSgpM6Cy+Ez/ffApO0mgkWYRLQQwpkXGYyFyjnVHvKNOq1AcFwL8gGxLk+MjRwtmf/dbqrVZX/bw== 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)(346002)(366004)(396003)(39830400003)(376002)(2616005)(186003)(8936002)(6512007)(5660300002)(36756003)(4326008)(38100700002)(478600001)(52116002)(6506007)(2906002)(83380400001)(6916009)(86362001)(6666004)(316002)(6486002)(66946007)(8676002)(26005)(38350700002)(956004)(1076003)(66476007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QvZrbfjiubLjeP7BhRHEvaPlTz9EtS17asTiwjkiJkuc/+Y2FgnyZsBb+ox6?= =?us-ascii?Q?GIj9g+KKkBvwfdPC/sAZWD58FuruM97jMdoGRM7rLTl8oQBHw4SEzQYf3F7Q?= =?us-ascii?Q?BM5wwQ4V6vTm7hcyb3DT/5sFR2iWbCBe7aZLOWX23HISg1Qv6hUKoERr+gA5?= =?us-ascii?Q?lEQr2RSg3Pb8JR0G4JeD9/KamxGzvKOvwpSQna/TWgVhvEX9hMLFiDm0/Foh?= =?us-ascii?Q?CEEkMrsY2093zDaSYLNN3I+MNjjZPCgEe9FuNIwXSR/YG4kbuEKgZZSqQarp?= =?us-ascii?Q?leQTDXXA+zJZRflgGpo+05qYInDPtgvp2ioI1YLpgGbTlNp6jOFY6jw2tQ3/?= =?us-ascii?Q?ElsFs9VfoUvGQCKzlZAy3Mc+AMfLrqTNqaE4mTG9etsIVTwmXd5EdZ7Kf1cV?= =?us-ascii?Q?s3+fLwLI3+VG+R0z0BXUySFC0ImXSkvD2pIBcOhKVOoQjmLxF8f+DBb3nJA6?= =?us-ascii?Q?BQ6QdMJwNl2Rm1v3dvGITacDwP47uYjGN0aC0KUqKuBYtckGHyienM7/VA6x?= =?us-ascii?Q?u330RlFwRmQSITpp5JAJZ4H22M4Eq+sdAB095KUuQfLInKeaoriOMXM4gGhZ?= =?us-ascii?Q?98G7RT243uI8pr7JRc6aHSMTxMPaISeiOVoko9DOWrDKxnzYDsgyPbOOBCgc?= =?us-ascii?Q?zOQeddThLmR244Z7fPK1oR5gQB2BsrXN5Zq5Hrpy7T8t22QHguQNGQAsOASV?= =?us-ascii?Q?SU3qleUG6JgAGSxydIMNErjR0aOPl3cLeYUoF+nxvgBTWEGBS9HkMS5/Lzah?= =?us-ascii?Q?euESBZYQHdcCHiS61rSc6JPLtqRXlEXUs9q1JJBXwzu7V0kRRBzSgEAaFs/p?= =?us-ascii?Q?8KVrrpaycJ1jBLCteOh+n/jf2wCALOzTiSTJzomNrOo3JsoHfQQEglYifFer?= =?us-ascii?Q?faL3te6+hgJpLbOSUS5FVSqD0nysg1Znhucz52jqklsN5GgQdEhzBo/YH2qT?= =?us-ascii?Q?F5zT7EPlBbi3ZHQbCJKWvSyMAoLab00xTG7eHzwdvtTws0A3RgAksW85ctxO?= =?us-ascii?Q?/heP5Sw4eJDAeyTDl8a0guh4MulxGwPDoQ0MANPSOPin5KKA3m0GRGNPy7Xx?= =?us-ascii?Q?8jWn1WqMQ23RDCzx76ZRmVIn5EZiQv5LwB32Ki6bz6XolqjDtuygUd6L9vxw?= =?us-ascii?Q?VFDboVye9nY8Np7RaN49B3fdRDvhdsf+l0MycndWyNOH0YbMNZc8AXsB/ThT?= =?us-ascii?Q?yb22SvdIY3W03++gD93Wsb7fzrYCXGSvmdo2uc9fIg1hwbVD7BdO4743FWPw?= =?us-ascii?Q?oMggojokatT9h0Qr2XZryStqP111nZFzvyIKV1mYPCtt5jyfyBFref3TiEtz?= =?us-ascii?Q?5Spuxbyy0JAYTDILqKixbwcb?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c33fe93-710f-4493-cdeb-08d9511e5195 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2021 16:48:11.1078 (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: HayzAGhy58UH5oIpkjozyjf+Yd3rm08Qp71DcOtklAjnEvs+DzUN6RRA1lKkUCM94jLbzkzWb3Wvov69SiIQi1ko102z1sN8sOQxTXKEyrU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1841 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1627405492979100001 Content-Type: text/plain; charset="utf-8" It's an alternative for soft-cancelling mirror job after READY: mirror should finish all in-flight requests, but don't change block graph in any way. To be used in the next commit. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/qemu/job.h | 5 ++++- block/mirror.c | 20 ++++++++++++++------ job.c | 9 +++++++-- tests/unit/test-bdrv-drain.c | 2 +- tests/unit/test-block-iothread.c | 2 +- tests/unit/test-blockjob.c | 4 ++-- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/include/qemu/job.h b/include/qemu/job.h index 41162ed494..3dfb79cee6 100644 --- a/include/qemu/job.h +++ b/include/qemu/job.h @@ -211,7 +211,7 @@ struct JobDriver { * Optional callback for job types whose completion must be triggered * manually. */ - void (*complete)(Job *job, Error **errp); + void (*complete)(Job *job, bool do_graph_change, Error **errp); =20 /** * If the callback is not NULL, prepare will be invoked when all the j= obs @@ -492,6 +492,9 @@ void job_transition_to_ready(Job *job); /** Asynchronously complete the specified @job. */ void job_complete(Job *job, Error **errp); =20 +/** Asynchronously complete the specified @job. */ +void job_complete_ex(Job *job, bool do_graph_change, Error **errp); + /** * Asynchronously cancel the specified @job. If @force is true, the job sh= ould * be cancelled immediately without waiting for a consistent state. diff --git a/block/mirror.c b/block/mirror.c index 98fc66eabf..ad9736eb5e 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -44,6 +44,11 @@ typedef struct MirrorBlockJob { BlockDriverState *base; BlockDriverState *base_overlay; =20 + /* + * Do final graph changes. True at start, may be changed by + * mirror_complete(). + */ + bool do_graph_change; /* The name of the graph node to replace */ char *replaces; /* The BDS to replace */ @@ -648,7 +653,7 @@ static int mirror_exit_common(Job *job) BlockDriverState *target_bs; BlockDriverState *mirror_top_bs; Error *local_err =3D NULL; - bool abort =3D job->ret < 0; + bool do_graph_change =3D s->do_graph_change && job->ret >=3D 0; int ret =3D 0; =20 if (s->prepared) { @@ -689,7 +694,7 @@ static int mirror_exit_common(Job *job) bs_opaque->stop =3D true; bdrv_child_refresh_perms(mirror_top_bs, mirror_top_bs->backing, &error_abort); - if (!abort && s->backing_mode =3D=3D MIRROR_SOURCE_BACKING_CHAIN) { + if (do_graph_change && s->backing_mode =3D=3D MIRROR_SOURCE_BACKING_CH= AIN) { BlockDriverState *backing =3D s->is_none_mode ? src : s->base; BlockDriverState *unfiltered_target =3D bdrv_skip_filters(target_b= s); =20 @@ -701,7 +706,7 @@ static int mirror_exit_common(Job *job) ret =3D -EPERM; } } - } else if (!abort && s->backing_mode =3D=3D MIRROR_OPEN_BACKING_CHAIN)= { + } else if (do_graph_change && s->backing_mode =3D=3D MIRROR_OPEN_BACKI= NG_CHAIN) { assert(!bdrv_backing_chain_next(target_bs)); ret =3D bdrv_open_backing_file(bdrv_skip_filters(target_bs), NULL, "backing", &local_err); @@ -716,7 +721,7 @@ static int mirror_exit_common(Job *job) aio_context_acquire(replace_aio_context); } =20 - if (s->should_complete && !abort) { + if (s->should_complete && do_graph_change) { BlockDriverState *to_replace =3D s->to_replace ?: src; bool ro =3D bdrv_is_read_only(to_replace); =20 @@ -1124,7 +1129,7 @@ immediate_exit: return ret; } =20 -static void mirror_complete(Job *job, Error **errp) +static void mirror_complete(Job *job, bool do_graph_change, Error **errp) { MirrorBlockJob *s =3D container_of(job, MirrorBlockJob, common.job); =20 @@ -1134,8 +1139,10 @@ static void mirror_complete(Job *job, Error **errp) return; } =20 + s->do_graph_change =3D do_graph_change; + /* block all operations on to_replace bs */ - if (s->replaces) { + if (s->do_graph_change && s->replaces) { AioContext *replace_aio_context; =20 s->to_replace =3D bdrv_find_node(s->replaces); @@ -1737,6 +1744,7 @@ static BlockJob *mirror_start_job( blk_set_allow_aio_context_change(s->target, true); blk_set_disable_request_queuing(s->target, true); =20 + s->do_graph_change =3D true; s->replaces =3D g_strdup(replaces); s->on_source_error =3D on_source_error; s->on_target_error =3D on_target_error; diff --git a/job.c b/job.c index e7a5d28854..52127dd6bd 100644 --- a/job.c +++ b/job.c @@ -987,7 +987,7 @@ int job_complete_sync(Job *job, Error **errp) return job_finish_sync(job, job_complete, errp); } =20 -void job_complete(Job *job, Error **errp) +void job_complete_ex(Job *job, bool do_graph_change, Error **errp) { /* Should not be reachable via external interface for internal jobs */ assert(job->id); @@ -1000,7 +1000,12 @@ void job_complete(Job *job, Error **errp) return; } =20 - job->driver->complete(job, errp); + job->driver->complete(job, true, errp); +} + +void job_complete(Job *job, Error **errp) +{ + job_complete_ex(job, false, errp); } =20 int job_finish_sync(Job *job, void (*finish)(Job *, Error **errp), Error *= *errp) diff --git a/tests/unit/test-bdrv-drain.c b/tests/unit/test-bdrv-drain.c index ce071b5fc5..b754eca27b 100644 --- a/tests/unit/test-bdrv-drain.c +++ b/tests/unit/test-bdrv-drain.c @@ -823,7 +823,7 @@ static int coroutine_fn test_job_run(Job *job, Error **= errp) return s->run_ret; } =20 -static void test_job_complete(Job *job, Error **errp) +static void test_job_complete(Job *job, bool do_graph_change, Error **errp) { TestBlockJob *s =3D container_of(job, TestBlockJob, common.job); s->should_complete =3D true; diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothr= ead.c index c39e70b2f5..d07ba69aee 100644 --- a/tests/unit/test-block-iothread.c +++ b/tests/unit/test-block-iothread.c @@ -385,7 +385,7 @@ static int coroutine_fn test_job_run(Job *job, Error **= errp) return 0; } =20 -static void test_job_complete(Job *job, Error **errp) +static void test_job_complete(Job *job, bool do_graph_change, Error **errp) { TestBlockJob *s =3D container_of(job, TestBlockJob, common.job); s->should_complete =3D true; diff --git a/tests/unit/test-blockjob.c b/tests/unit/test-blockjob.c index dcacfa6c7c..b2653a3733 100644 --- a/tests/unit/test-blockjob.c +++ b/tests/unit/test-blockjob.c @@ -165,7 +165,7 @@ typedef struct CancelJob { bool should_complete; } CancelJob; =20 -static void cancel_job_complete(Job *job, Error **errp) +static void cancel_job_complete(Job *job, bool do_graph_change, Error **er= rp) { CancelJob *s =3D container_of(job, CancelJob, common.job); s->should_complete =3D true; @@ -382,7 +382,7 @@ typedef struct YieldingJob { bool should_complete; } YieldingJob; =20 -static void yielding_job_complete(Job *job, Error **errp) +static void yielding_job_complete(Job *job, bool do_graph_change, Error **= errp) { YieldingJob *s =3D container_of(job, YieldingJob, common.job); s->should_complete =3D true; --=20 2.29.2 From nobody Fri May 17 11:05:37 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1627404587; cv=pass; d=zohomail.com; s=zohoarc; b=F6+NLm7XRNzZU5eO/B3fDhOK2WAhoX7AYeCcLMpyJ4AfglBhJhVuXJ9C/k1LH9A7XzxVru7z0fzkohudv7n9qAynCS9jav04UbKFzXBKD1m+KoOft3UsFYiUE2L0+HET0epCCdcBS9oVDms9ukrdxYUceI/RDAod2MF+FWP1mCY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1627404587; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=S3jnACxQqPteKs311+DUhC5xzHo/8dkcagky69xFHmk=; b=bjzRa8e4jJh93w9/w9GfW7hvmaBzo8AWGRF/bQFRKVBZpB9PXwwTreEcQwyO/9NdOkycrHkQzCMqN9kEBOcIrMClWC2uX7trZfS0M5QggJnKWJFa0+Gj4DA2enoYMyuMpE+9BYfmX9/6V2o2FjwD+o1D+ygDxOcEzkOUDlGA3eU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162740458798174.8896750580501; Tue, 27 Jul 2021 09:49:47 -0700 (PDT) Received: from localhost ([::1]:49504 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m8QH4-0002Fa-V6 for importer@patchew.org; Tue, 27 Jul 2021 12:49:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53470) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m8QFj-0008IB-1P; Tue, 27 Jul 2021 12:48:23 -0400 Received: from mail-eopbgr80111.outbound.protection.outlook.com ([40.107.8.111]:53292 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 1m8QFh-0004HS-Im; Tue, 27 Jul 2021 12:48:22 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB1841.eurprd08.prod.outlook.com (2603:10a6:203:2e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25; Tue, 27 Jul 2021 16:48:12 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::44b9:68ac:bdc7:e23c]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::44b9:68ac:bdc7:e23c%7]) with mapi id 15.20.4352.031; Tue, 27 Jul 2021 16:48:12 +0000 Received: from localhost.localdomain (185.215.60.211) by HE1PR0501CA0024.eurprd05.prod.outlook.com (2603:10a6:3:1a::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.17 via Frontend Transport; Tue, 27 Jul 2021 16:48:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SQScY0uA/bTnV7f6rwYMuRi3rtbtm4JeZtDtpdxa5mHNoDibxOoHlLchZ/xMr0b7THOcJa3IM+qykGOGHTbOrFXEdkpBUS01BYWkvP4Jas0u0U0SPoqr1VPzupDo66qhf9Olo3IJFnltmFwWaSdPfhhfIeDzRyuCS180Z0ryzhXX3ItOnROsG7rHpqHFkdcvd1We6dQgJgWMM4LE4tk/hc+zde4lZdvAY7E9H4bLwBfOokmyXPWIWU6hgfPD/rnHgtPKViVMIOXCnK6tQnJeiKbQqjZUZ7sWJCEAAsvtSyZjouf05jQXggm7vUsg9IwhlKRo2xPHN/Lyjbyp+tCFiA== 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=S3jnACxQqPteKs311+DUhC5xzHo/8dkcagky69xFHmk=; b=CUqNqTOpXp2/JXRMn0wvDYgqbT8b1JT8M5rQcVupic0wrwaK6DKxtWd/N59JLBHpCQULCgIEoiGZFq5pOnRb3UexiOmMXaSi+5D8A97EPK3gTPQ36ckCbGXgGxgJzDhCL73T161EiviAJIao2dVaQGxzQwI0XBOC3d65FY4crrKYN3yr+It7P7C08LALz+FNrmj+CEj+9fBcyYjGxuFoaVcY0uoWoZ+icTDRHj24WK/uiu/OV9q16fEwPJDlhBplJELBF8/ua3phUgCiN0yyoBUfhwdw1Zf3fVT/eMDtenwEVymRDwcJN1kPz+PS98YrHT3of7oz8d2JXAHXd6ZHww== 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=S3jnACxQqPteKs311+DUhC5xzHo/8dkcagky69xFHmk=; b=I4FSH2k7z4ukbrjSjFbW2+QOHC8nkChIqI5pYC4NNKrn0uSbK+a/TrXtCGl8zPmv1zZ+EjgCIjISYB8PE6UUNiZqNQ6p5EX8kOrpfJCCqou2ucIgA48UlEQnmX0Lev5K7ETtBOJ2Xjybpsxc3u5J9pIj7w9ln8u8eNJYCX3u94E= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, armbru@redhat.com, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com Subject: [PATCH 2/3] job: use complete(do_graph_change=false) to handle soft cancel Date: Tue, 27 Jul 2021 19:47:53 +0300 Message-Id: <20210727164754.62895-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210727164754.62895-1-vsementsov@virtuozzo.com> References: <20210727164754.62895-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HE1PR0501CA0024.eurprd05.prod.outlook.com (2603:10a6:3:1a::34) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cd4bce02-92b9-49cf-048a-08d9511e5235 X-MS-TrafficTypeDiagnostic: AM5PR0801MB1841: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1013; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XnffmX0sLj9o3aF2bHSIFQ3YvXl58IiAa4ysY70PPDzPr8lXYqMj6gZJnOeY6eUHAiGFQUeMlMaB8SFzSrD5dVm8QFUsvWx1N71s1geM3BWch1Q/AFjv7dyshkwnzLjEVrU0qKDMYK1ftsmb/QA4eeibnHskPnH7oDyQVpCFE7M6bpXprI/oDUpp7P5mpDySX+IcbszZeKUJihdNSot6dBMI703AxIs1xHtSTEhoVFrUttxp413/StZ89byxw3NC4i5sj1aXqAB0I4ks5LoUtcXIOuKaggLPyDh9LyQWFj1e0tM8enHxczpIpJS1SytPOGFrgdYkP+rbgV1IU2tIsn4RWJQay/z7JM555Jd5amcEhC5woV/mCoKAfq4IxHRAHoiLNDC3HMTi1WxJuYV8gtG8X6a39vEU5xnCfp9ifjCnCGaWL6DiRpXyxDx62mBhaE1ctFi8Lia/fXcxpH6XFBuKzkpz/HZz6Y4WMHAkbW5hL+JmWvXZQZYa7i8AOTukRu8saaq7UCejahAoJHtn+bGQrTaCibKmwzJe7oiY3L7sVfZvc+gFe45E+Zrxy0WQcSPTT83OcjFn8xfBEGayi76OSdSO+u/wVpd+Bg77hJSz4qe9DCuW2nsmb7NP2aPTDhiHJnH/lKpF5T96o7XRY25SayLimNM3laK60OZrAXDvFqzbhXTR48kbKVNwEQKGJKUr8tFM+EeLupw+Io6OWQ== 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)(346002)(366004)(396003)(39830400003)(376002)(2616005)(186003)(8936002)(6512007)(5660300002)(36756003)(4326008)(38100700002)(478600001)(52116002)(6506007)(2906002)(83380400001)(6916009)(86362001)(6666004)(316002)(6486002)(66946007)(8676002)(26005)(38350700002)(956004)(1076003)(66476007)(66556008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4xsXNXx0+DmiWfNXdxHHlfFumeSz1/fdf/knKUJK/C6K6FKte0i4QJgPWH40?= =?us-ascii?Q?s50/zlQvHeuL5GlPXZaN2DaogW2nTqvASLmwrshSKVSIpQfkMoQARLLWS/2E?= =?us-ascii?Q?Dk/XMvWfCbSJ29r/wuU51OJM5QwEFOCtTE3JSc4AtYGBFYAic6V/L9YMhJf+?= =?us-ascii?Q?TDc5g0nE6IMmWkLbTGUULaD0fjonW8uYBd9aNy0FkwVeuyDZyaWjmrZVGxvu?= =?us-ascii?Q?sKxhvVYMtTy+xvOSeUSd+KXigMVahyoxAAzHoFHWOC7S9sxtSPEjXZGwwIkP?= =?us-ascii?Q?2nev8j0Gil5y9D25eHl7G5+EUaIqW9pr3QAkqunTNRgYjBa2hceg+SvZXjmS?= =?us-ascii?Q?KszGjNmtveHCCSe/qclhrqG1p20UYrd4/lp0EFV6UWmy1giXxM47H0QvmCK1?= =?us-ascii?Q?0jMyjn9VRCOQRynoVbybtclkk6z8sKr8hyfEx50+5mycvIaV7PH4K3yy0/be?= =?us-ascii?Q?LfeOY5o9Ifzi+IyXuyxM3gAMCGAS1wJH52CnnQI2XJrhRuLXjKDTjZzYPgu1?= =?us-ascii?Q?swLSZy6vt2MLqczgwfiVlXGUWGFkraAA2msPuPqSSVceY2CELnYzwkBJpYFR?= =?us-ascii?Q?aio5dVCNpTUFOLiA/osiVF2kE6fEOQGiRCCgdp+0k9m7XHkSMezXBRR85Iuc?= =?us-ascii?Q?bkBGK04vwvB7rI1OxlbH/p0mZa1oP4dXGzfay46yy46tQPWjQ3H8DA0VCepD?= =?us-ascii?Q?xpCwnRFEuYQ3Uf6JWKHAmDt5/GHjDEn2sRG53EqzP+VqOok9ILIsO3ZIq/eG?= =?us-ascii?Q?WmuaIFZFlCGoEatMs3KimwZLAHsHKhPlcbh3xo4JIawLiEjCfoOtMYlbo1IR?= =?us-ascii?Q?4cT8/NXNfMd7yg5rIylmJ1Jsy+vi6WrtXHKxFvZ/yoQCRGE+cAKSt0yntOnJ?= =?us-ascii?Q?5C9vTwCueeZNbyWwEXr7CbJOPvugxHC+6b//TmLMiZUV0pmZ28SOFKu0/+4+?= =?us-ascii?Q?6RSpZZZSXVjpQJyGAUnd4M9dUZbjZ0scYFG1pry6MBqRji/+Bm80lpUUntZw?= =?us-ascii?Q?9BJTod2Bd9WkBhCDI1Pv1yMm6TaqUMEpTYpaGRJY7l5577Iq2Nti/7I5vkzZ?= =?us-ascii?Q?6FT+WWBnmUYBWlTryph3HQOF27n8hG7Jhxd37tFJSBR0u3jcO8MoKP7XSFfi?= =?us-ascii?Q?TXQ4p/wz84cOy0/QGEbxC83fcUAn+WYDctxNIXPzRxpd/NiDUq90ACwgnrQf?= =?us-ascii?Q?4mspcotIHXEAB6yphTXTKqTZJPMZ8vwOemkF0c/n78l0H5YfnEcs8Ni0HREX?= =?us-ascii?Q?O0OsYV/Vk8W6qhLBTdg9B2/KSDS7YUvUUzuydg08XSVC7KKdwr1DYBEd+Um8?= =?us-ascii?Q?TNpwtwx2AL3wp6aKiS5BfEfP?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd4bce02-92b9-49cf-048a-08d9511e5235 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2021 16:48:12.1383 (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: gaqc/wt7sMV1Ae2deCJcWngqQrOsSXqvNNU5CSKVPTQOiS8Nzq4yT+nq0JNEa9NMvtjxHz1NZaTWwHY9XPfKR5E1qIBLcIBstm1Q+VbfuFk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1841 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1627404590159100001 Content-Type: text/plain; charset="utf-8" Soft cancel of READY mirror is more like completion than cancelling. We have bugs and misunderstanding because of this feature. Now, let's handle it the other way to drop force cancelling at all in the following commit. This makes internal implementation cleaner. Still, we should deprecate and drop old interface (through block-job-cancel) as a separate step. Signed-off-by: Vladimir Sementsov-Ogievskiy --- blockdev.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/blockdev.c b/blockdev.c index 3d8ac368a1..c4ee5f02f4 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3366,7 +3366,16 @@ void qmp_block_job_cancel(const char *device, } =20 trace_qmp_block_job_cancel(job); - job_user_cancel(&job->job, force, errp); + if (!force && job_is_ready(&job->job)) { + /* + * Hack to support old mirror soft-cancel. Please add new API to do + * complete with disabled graph-change, deprecate soft-cancel and + * finally drop this code. + */ + job_complete_ex(&job->job, false, errp); + } else { + job_user_cancel(&job->job, force, errp); + } out: aio_context_release(aio_context); } --=20 2.29.2 From nobody Fri May 17 11:05:37 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1627404701; cv=pass; d=zohomail.com; s=zohoarc; b=RWfYGZOlzXI+QhiBy3ULj+XAUY/DQTXZ/m9igHYDUR4UYN0n3evaB37HQ4yNO41H0UV55JGath5wFAma8FZ9OxMlWYnOZi5OWlYRCK9hPLz1rStZBi7dgY+jkbRcbAEfgfKqH0jCT8wMLamrZmeCq3A85U4/xN/1r6jb5JUu6+0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1627404701; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kDJ8aiOTNoHKFRDH+FXj459pbQVxvBlaA5zx6/GnxYc=; b=FssZ2mOV7HlQf6uJmN7wGkx2ECjfFDiaoZLStbJn+An1X5aRukaLlprJOjj+Y7ty3eYUCtmU+FiZdPRDoAoO+fC1p1OZJZvrlKHJXPSxNNke0ryDwf9ePNBFuywkbh5enJHVJTsgACvRal9FRCIs0F5vjwra8ydiBoY55Jm7vL8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1627404701927456.5749758887616; Tue, 27 Jul 2021 09:51:41 -0700 (PDT) Received: from localhost ([::1]:54972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m8QIu-00061S-Qa for importer@patchew.org; Tue, 27 Jul 2021 12:51:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53484) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m8QFl-0008KE-Lv; Tue, 27 Jul 2021 12:48:26 -0400 Received: from mail-eopbgr80111.outbound.protection.outlook.com ([40.107.8.111]:53292 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 1m8QFj-0004HS-N0; Tue, 27 Jul 2021 12:48:25 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0801MB1841.eurprd08.prod.outlook.com (2603:10a6:203:2e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25; Tue, 27 Jul 2021 16:48:13 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::44b9:68ac:bdc7:e23c]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::44b9:68ac:bdc7:e23c%7]) with mapi id 15.20.4352.031; Tue, 27 Jul 2021 16:48:13 +0000 Received: from localhost.localdomain (185.215.60.211) by HE1PR0501CA0024.eurprd05.prod.outlook.com (2603:10a6:3:1a::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.17 via Frontend Transport; Tue, 27 Jul 2021 16:48:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nq0QUQbK/sr8lRQOvOE/zuRHE70tM8u8xhNzWpBjVN6wX8Wl7Ck1cCZupSzn4EUPAfdgvgQXj22g3OS/wHJrFFfL1q0n8BZOO96yFLdmPAtcTbwY/VT02RTRVP2KPW4jvTYAhEV6PFVpbrk/HCOOGidoskmvDVJvWNkEM3QVSH+WrFMp/h1uW6XucVs+BX/kwgYmarUSpurIroYV9r2PxMSl5zKrSrY/DT8VoIlGQfmOESzSR/QbbA3JBN3DDJln80qz3swB6pe64NFmxivVw54XQ17CJxKv942pmb8YWI2Jez7iXXmIwe/d0jTIGKcJN0jjNxdNui+PuWy9Lk/+Mg== 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=kDJ8aiOTNoHKFRDH+FXj459pbQVxvBlaA5zx6/GnxYc=; b=A7gCfvYm/078UOCeokcXx1ZfpG3fZ6vNEiMR5G583iMueH68SYZ4Rt/NpjkHUZSRLGbq4Nxz2LWtXtSzA8t8vK7rIcqzviDIKPAJ8P8JznVb4A0DQqveyP8Hozt42sUPUo/b08JjjQDz3ydYsFjo5Oi7piwyE8HTiJ70noj+pg9FHngDXZYQqMK/JcHoxlb9sbYjsLWXtQQQcLnY8ZGTNwR6/dnoIe2pFJLe+1wiNvxOkdjUPQEqXkWrALAtNnttGYy8ELtMUyc6OMfHO0kg6LwDPqO1Zzj7K/9ATi4ArAaRu2TXrOahszH6UWT+XYLa9gqZxfy/6zasDLMps5nsCQ== 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=kDJ8aiOTNoHKFRDH+FXj459pbQVxvBlaA5zx6/GnxYc=; b=i9hCqQiAfmHzlcg7KrbYRhHuwyqxvJSJ9BsX8ZdaymCXVKMV6840SKFKWoHzTT7FTlLTglVVIPmef6bcX0bhsfBwi8gAMsqv5D2Ptk15vUonAm89Cnn3kDw170VpOW6qRG38LlAdoCKwaB0PgCb6w9AGKw4+f40F2938MCaBfSY= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, armbru@redhat.com, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com Subject: [PATCH 3/3] job: drop force argument of *job*cancel Date: Tue, 27 Jul 2021 19:47:54 +0300 Message-Id: <20210727164754.62895-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210727164754.62895-1-vsementsov@virtuozzo.com> References: <20210727164754.62895-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HE1PR0501CA0024.eurprd05.prod.outlook.com (2603:10a6:3:1a::34) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1514956b-11e8-4b09-8f55-08d9511e52d2 X-MS-TrafficTypeDiagnostic: AM5PR0801MB1841: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iDNXlvgoYb0pYSndSnfypxQOJt1gXJbtGetP5T7t4vyvXGnfRZt7E0tFeRmJRGqETwZhucq9aq8QE2bC3tomz4Wy4/SNHaIE2DUoMPlbrq4FjRHo6Jwneaf4d+0TzTmRxDtNPSVYdTXMpVV/NQ+HKG22GMIjIQDfKv2+g7/F/2xJ3xEdXET0kJFneuZ7HlTwB8fYJxF4vyiuJeZcXZz5QTsgc6ELJO6QfLQ88QJSeg+nAHMgD2EBb1qNA+/dxWLFOW06G3TqyCnkifdEjV7AKya1ltMAAW5gnfWqK12wJKAqRmf/EaIFKzBvTHyCAvR8On0OB9cJ9duH37GoyhA/1NABu/URwRW8JOciLvbMFq9bThLU2ua2LssvTYKnhSWXB/cPV7LMKKSy90Fj0rvJ1k+wzyEgsGS/q2KqEjDoBqwS8MwyWmNcaA2k+Qf3V9M/GTep//YM21O05pVqZAZFbk4XfbXK/Y5xC982ro5dP2pRb21xqnkiO67PM6t3CMNiCBUEn9PgpokGrXkd0rILbEfx2Rpir3pGPPHKjySBZMYPgv2PLDI2WqCQAZso0NzuynPnTKVQVQtyhCuWWLShPwsAE4WLcmMGDHYyVDBOi5g52WxFEYKKTlANCRwiFMul27W3HBmnoy8JaF1oB3NTCrxm+QYjSGBFA3YX/uenCgxCSkr5r4Gefmj3eaXczPDwx2Yl3XlJpiThlJnj4AZKpVOTEjidY+ocawiYpkt2JN8= 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)(346002)(366004)(396003)(39830400003)(376002)(2616005)(186003)(8936002)(6512007)(5660300002)(36756003)(4326008)(38100700002)(478600001)(52116002)(6506007)(2906002)(83380400001)(6916009)(86362001)(6666004)(316002)(6486002)(66946007)(8676002)(26005)(38350700002)(956004)(1076003)(66476007)(66556008)(309714004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IZK7udLewjy/kORw/WW6tDJztGd09qd5s11W64Q4328n/iTlEURQRWd5Ye5o?= =?us-ascii?Q?61btUqDep9m8yNAUyc7H92QBKq71OGxLdKDB2Ddg1PNKLMN1PKi6/pJVorz1?= =?us-ascii?Q?7l9+DXpWU9/sXTvUtKV8uTb8M3UlypveIM3n+XqsVkVzTh40GwbADwBc2Wqy?= =?us-ascii?Q?5cbysyqb+3KTDYSSUHj3TaslIJDFx442on5Q8wS8D3wW5/0tBFWCvmdA1f5U?= =?us-ascii?Q?BHG2wCLnZcOtJj+NEqm3OE41ws0R0plEV2DJg/pOKAMiyJMx5NYu5EQDRjIY?= =?us-ascii?Q?5Ek0pyKnpEmvDiDEAP2LYUnnnMNZ9itFNa8TNE8Z6IhEDiDp4lS3RvNXEKcf?= =?us-ascii?Q?0yoewfIOasXm4JGpkaARpZFoerh4QckJx/TgPJzo+QQrQPYDCurS2biaaKIF?= =?us-ascii?Q?PiPFkxkLCx5004Dvsv4l1p+7so7yUjalw6BPgHHN0DkU6jNoL306KVqONzX9?= =?us-ascii?Q?orLuljrD1Dy7g1rwUGID6y6gD+sLeKdMSfmO/fUvHyOOev+ApkZTzuNahZ+a?= =?us-ascii?Q?r/sjUIGdJgaBxfqLFCptEZMA9hQkQ8GpsmKgSV5CJE6OjLpqcnRihYOas1eU?= =?us-ascii?Q?RkXsUJnNj0q0XABvKExdADDP1H9eBcQz2946FHKX55ag0mLZmzBKG2ejs/YE?= =?us-ascii?Q?kVBFHKl+UVLaa20dlZBmq/eanjLZtEBq6uA6eAxb7vwQrmOXlMgN/4X7/hKE?= =?us-ascii?Q?NhUeSVXciBuERY1wVyh9CK4IzbrZaabXiWD/T0wyxojxdVuK6lO1hwjg1suM?= =?us-ascii?Q?BJJyLglk19vBTdokx1ascymwo7xdWk/BImQvshYZ3Qtq9FhtKjNvqiWCYCZf?= =?us-ascii?Q?Lt9t8wPDLxK2/EY6HvkQBN9khIO8icqdA+PEdIR+Pg/3XWhWZhSbGV16Lduy?= =?us-ascii?Q?xUq+dX7GnxIE3Q+9iMCHLapZupN+73cobWRq8YTIW12+jN1HCyN9P5rhnztl?= =?us-ascii?Q?qbG9QU3c9ePTyUDIrkugB9qWuQ3wtIQTfVXM/UYnlhjvSlCJ2A0JrDJQXnnU?= =?us-ascii?Q?g1lhHJXl+xJTcHrJrP0UWlcMWtWO/XBq+xtUaIrnQYQFzJVXwhuLz/mwV14v?= =?us-ascii?Q?OnyzTkSS4MdA8jHC3UJsFWD3vmDYpo8Ar9Nw+Ig0J1Ar7kOpBguMzrG00Ypp?= =?us-ascii?Q?Mw5vduR8Q+s1ASF47XASrTKJIx9cco5lqR6wgacGh2A72tUdzt7KErkXVtoT?= =?us-ascii?Q?HvrxXqHkUoy5AI9amX8DUHes2a51ITMIYM/9TAHA2GMs+FVSBddnC63KhXGB?= =?us-ascii?Q?iHShTfHrVV8xwEki9W9TLe6YNnD1MVewytxNEBM928EDlldzQNWVDgi1Vsxt?= =?us-ascii?Q?KSQVy8Jeh5mB+ohl3GpEtpty?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1514956b-11e8-4b09-8f55-08d9511e52d2 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2021 16:48:13.2056 (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: t5XQ0SzvbhsgJIdTPDX8Vcfd2dUVgWw/9OxMSvxK9uBiTg8U7vhvbDpqS2qGFGUE8phAgRBZHv3EpehjbYv/nLrI6Tq1gnxCpMq7TmzV0uA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1841 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1627404702696100001 Content-Type: text/plain; charset="utf-8" Now, when soft-cancelling READY mirror handled in qmp_block_job_cancel(), no other functions need to care of it: cancel is always force. So drop unused code paths. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/qemu/job.h | 14 ++++---------- block/backup.c | 2 +- block/mirror.c | 13 ++++--------- blockdev.c | 4 ++-- job-qmp.c | 2 +- job.c | 18 ++++++++---------- tests/unit/test-blockjob-txn.c | 8 ++++---- 7 files changed, 24 insertions(+), 37 deletions(-) diff --git a/include/qemu/job.h b/include/qemu/job.h index 3dfb79cee6..0e30665fed 100644 --- a/include/qemu/job.h +++ b/include/qemu/job.h @@ -103,12 +103,6 @@ typedef struct Job { */ bool cancelled; =20 - /** - * Set to true if the job should abort immediately without waiting - * for data to be in sync. - */ - bool force_cancel; - /** Set to true when the job has deferred work to the main loop. */ bool deferred_to_main_loop; =20 @@ -254,7 +248,7 @@ struct JobDriver { /** * If the callback is not NULL, it will be invoked in job_cancel_async */ - void (*cancel)(Job *job, bool force); + void (*cancel)(Job *job); =20 =20 /** Called when the job is freed */ @@ -496,16 +490,16 @@ void job_complete(Job *job, Error **errp); void job_complete_ex(Job *job, bool do_graph_change, Error **errp); =20 /** - * Asynchronously cancel the specified @job. If @force is true, the job sh= ould + * Asynchronously cancel the specified @job. * be cancelled immediately without waiting for a consistent state. */ -void job_cancel(Job *job, bool force); +void job_cancel(Job *job); =20 /** * Cancels the specified job like job_cancel(), but may refuse to do so if= the * operation isn't meaningful in the current state of the job. */ -void job_user_cancel(Job *job, bool force, Error **errp); +void job_user_cancel(Job *job, Error **errp); =20 /** * Synchronously cancel the @job. The completion callback is called diff --git a/block/backup.c b/block/backup.c index bd3614ce70..6cf2f974aa 100644 --- a/block/backup.c +++ b/block/backup.c @@ -331,7 +331,7 @@ static void coroutine_fn backup_set_speed(BlockJob *job= , int64_t speed) } } =20 -static void backup_cancel(Job *job, bool force) +static void backup_cancel(Job *job) { BackupBlockJob *s =3D container_of(job, BackupBlockJob, common.job); =20 diff --git a/block/mirror.c b/block/mirror.c index ad9736eb5e..06a07baf46 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -1095,9 +1095,7 @@ static int coroutine_fn mirror_run(Job *job, Error **= errp) } trace_mirror_before_sleep(s, cnt, s->synced, delay_ns); job_sleep_ns(&s->common.job, delay_ns); - if (job_is_cancelled(&s->common.job) && - (!s->synced || s->common.job.force_cancel)) - { + if (job_is_cancelled(&s->common.job)) { break; } s->last_pause_ns =3D qemu_clock_get_ns(QEMU_CLOCK_REALTIME); @@ -1109,8 +1107,7 @@ immediate_exit: * or it was cancelled prematurely so that we do not guarantee that * the target is a copy of the source. */ - assert(ret < 0 || ((s->common.job.force_cancel || !s->synced) && - job_is_cancelled(&s->common.job))); + assert(ret < 0 || job_is_cancelled(&s->common.job)); assert(need_drain); mirror_wait_for_all_io(s); } @@ -1197,14 +1194,12 @@ static bool mirror_drained_poll(BlockJob *job) return !!s->in_flight; } =20 -static void mirror_cancel(Job *job, bool force) +static void mirror_cancel(Job *job) { MirrorBlockJob *s =3D container_of(job, MirrorBlockJob, common.job); BlockDriverState *target =3D blk_bs(s->target); =20 - if (force || !job_is_ready(job)) { - bdrv_cancel_in_flight(target); - } + bdrv_cancel_in_flight(target); } =20 static const BlockJobDriver mirror_job_driver =3D { diff --git a/blockdev.c b/blockdev.c index c4ee5f02f4..cc424a451f 100644 --- a/blockdev.c +++ b/blockdev.c @@ -150,7 +150,7 @@ void blockdev_mark_auto_del(BlockBackend *blk) AioContext *aio_context =3D job->job.aio_context; aio_context_acquire(aio_context); =20 - job_cancel(&job->job, false); + job_cancel(&job->job); =20 aio_context_release(aio_context); } @@ -3374,7 +3374,7 @@ void qmp_block_job_cancel(const char *device, */ job_complete_ex(&job->job, false, errp); } else { - job_user_cancel(&job->job, force, errp); + job_user_cancel(&job->job, errp); } out: aio_context_release(aio_context); diff --git a/job-qmp.c b/job-qmp.c index 829a28aa70..272837bd1f 100644 --- a/job-qmp.c +++ b/job-qmp.c @@ -58,7 +58,7 @@ void qmp_job_cancel(const char *id, Error **errp) } =20 trace_qmp_job_cancel(job); - job_user_cancel(job, true, errp); + job_user_cancel(job, errp); aio_context_release(aio_context); } =20 diff --git a/job.c b/job.c index 52127dd6bd..04437ce438 100644 --- a/job.c +++ b/job.c @@ -716,10 +716,10 @@ static int job_finalize_single(Job *job) return 0; } =20 -static void job_cancel_async(Job *job, bool force) +static void job_cancel_async(Job *job) { if (job->driver->cancel) { - job->driver->cancel(job, force); + job->driver->cancel(job); } if (job->user_paused) { /* Do not call job_enter here, the caller will handle it. */ @@ -731,8 +731,6 @@ static void job_cancel_async(Job *job, bool force) job->pause_count--; } job->cancelled =3D true; - /* To prevent 'force =3D=3D false' overriding a previous 'force =3D=3D= true' */ - job->force_cancel |=3D force; } =20 static void job_completed_txn_abort(Job *job) @@ -763,7 +761,7 @@ static void job_completed_txn_abort(Job *job) if (other_job !=3D job) { ctx =3D other_job->aio_context; aio_context_acquire(ctx); - job_cancel_async(other_job, false); + job_cancel_async(other_job); aio_context_release(ctx); } } @@ -932,13 +930,13 @@ void job_start(Job *job) aio_co_enter(job->aio_context, job->co); } =20 -void job_cancel(Job *job, bool force) +void job_cancel(Job *job) { if (job->status =3D=3D JOB_STATUS_CONCLUDED) { job_do_dismiss(job); return; } - job_cancel_async(job, force); + job_cancel_async(job); if (!job_started(job)) { job_completed(job); } else if (job->deferred_to_main_loop) { @@ -948,12 +946,12 @@ void job_cancel(Job *job, bool force) } } =20 -void job_user_cancel(Job *job, bool force, Error **errp) +void job_user_cancel(Job *job, Error **errp) { if (job_apply_verb(job, JOB_VERB_CANCEL, errp)) { return; } - job_cancel(job, force); + job_cancel(job); } =20 /* A wrapper around job_cancel() taking an Error ** parameter so it may be @@ -961,7 +959,7 @@ void job_user_cancel(Job *job, bool force, Error **errp) * pointer casts there. */ static void job_cancel_err(Job *job, Error **errp) { - job_cancel(job, false); + job_cancel(job); } =20 int job_cancel_sync(Job *job) diff --git a/tests/unit/test-blockjob-txn.c b/tests/unit/test-blockjob-txn.c index 8bd13b9949..5a995c59c7 100644 --- a/tests/unit/test-blockjob-txn.c +++ b/tests/unit/test-blockjob-txn.c @@ -125,7 +125,7 @@ static void test_single_job(int expected) job_start(&job->job); =20 if (expected =3D=3D -ECANCELED) { - job_cancel(&job->job, false); + job_cancel(&job->job); } =20 while (result =3D=3D -EINPROGRESS) { @@ -171,10 +171,10 @@ static void test_pair_jobs(int expected1, int expecte= d2) job_txn_unref(txn); =20 if (expected1 =3D=3D -ECANCELED) { - job_cancel(&job1->job, false); + job_cancel(&job1->job); } if (expected2 =3D=3D -ECANCELED) { - job_cancel(&job2->job, false); + job_cancel(&job2->job); } =20 while (result1 =3D=3D -EINPROGRESS || result2 =3D=3D -EINPROGRESS) { @@ -227,7 +227,7 @@ static void test_pair_jobs_fail_cancel_race(void) job_start(&job1->job); job_start(&job2->job); =20 - job_cancel(&job1->job, false); + job_cancel(&job1->job); =20 /* Now make job2 finish before the main loop kicks jobs. This simulat= es * the race between a pending kick and another job completing. --=20 2.29.2