From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623345; cv=pass; d=zohomail.com; s=zohoarc; b=H/Adpnfky2ST/ucnyHO32lfx/5LWMBzJHNC/970gTqzeOGp68vT8JMZJdYG3MoZWrgyce30JGEMABrq+smIbVihy58A0TU1sA3zcAWU3vBsLownFU+UpFni9dMvBfAcbNKod4EgkSbCJckWNGxukVycbDgj3mm7SoXS2/w+4kJc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623345; 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=ALnNZmnAEFAZssrODvUjQsaqnE2GlowmRIt9dbt0SRA=; b=gVue50YfeWIUxrPr5c9ZiD//W+12jUsIssJ9DdJWyXSWv6e5qIa/5ecXimro5hJD7Qi6Mx07n9WQbehurMN7Ei6abwpoAnkPE0vuPgjT9yRMKY8zrC6hEre/ZOxHueOS1Gi3zMnuuK1qG27Zj11JHdaAvokG1hz0W7H03t3wIs4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623344642572.3370206966507; Wed, 28 Apr 2021 08:22:24 -0700 (PDT) Received: from localhost ([::1]:50302 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm19-0007yW-E8 for importer@patchew.org; Wed, 28 Apr 2021 11:22:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxd-0005d0-Pb; Wed, 28 Apr 2021 11:18:45 -0400 Received: from mail-he1eur04on070b.outbound.protection.outlook.com ([2a01:111:f400:fe0d::70b]:4079 helo=EUR04-HE1-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 1lblxR-0001qz-2V; Wed, 28 Apr 2021 11:18:45 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:22 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:22 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S8NS/tRg6MMXsrXyHcOjjYWAMmKUFiO0UxTuSNbf6V+9F9WFb2PIEBsMZwlzNuQGMDQ0QdUV1c5OsVhC7Th6ipD014QYLyKX8huDXj87B8KPmmzdMQy9Pi1AClj3FxBBT8QWDx9wtKmLZLXvD7c5DuQdlIxVgxFEr8Y5sBqN9lTnPAV13fWbuolY18ABAKfwQnEmNKbqcciPBF4SRfTYcKXGMXH7mvYTPwIbAgpkZEsRmWn1Np0KgdokvWtD7ZwRbvaNXJD9YGW4nNRj20L9CcNJQLSao8QWPxTwfcKm2QL/4cPjQd3ZHpShgJFj4Qf7H/8QWgXeSmoHzvWHh7Duvw== 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=ALnNZmnAEFAZssrODvUjQsaqnE2GlowmRIt9dbt0SRA=; b=J7AdPN1m83Y0jGLDA695GcoFz16PoJIsIMQhLdD0sUpSyF3A14dvwq4I6s2BJNBITPA/x6HG4x1MUhcZqp3B6LFn/c6VIC0Wpqc4ju3SunqfKMHxgl5J38i0AbIeCHN7BlNW+Tx39YLjvVV4x6ZvtZ0DqMG2tMoV+NumLEnIFIaq2FkAjQVwlk2dG5QijjSAnH0evCr4+NE+9zRasKdIuiYpJISir2yJatJ/K0pc7p+HSEjRuYHiW8zxzrqkcd9TGxmeDKqdXdZdDiCT32DFj1WehFhBRS3BJH/99/+sP+m4ZsAVCqBKJgtXrdcqgE8jQWOVlCGpO8274htWXBePZA== 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=ALnNZmnAEFAZssrODvUjQsaqnE2GlowmRIt9dbt0SRA=; b=PpIFtK35NlNMt/N9r3mUmyTaU8LhGmthr4/+f/nr+lz1Dm5u1upEDvMbf4LY8mfTH1f3VdMZEBeWKZvQDQ+hApztFes5ADqLO+rFVCqERgGXJ4dGV8G4XKi6ge7zE3/YioRyoHGiqf5O+SXthQd6pJ7PFQ5VY4PB3FlY1vKgrGE= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 01/36] tests/test-bdrv-graph-mod: add test_parallel_exclusive_write Date: Wed, 28 Apr 2021 18:17:29 +0300 Message-Id: <20210428151804.439460-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: b4694347-38d0-4eb2-8528-08d90a58dcbf X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f2ey+kaRuUKf47A3uxe4DQPKTHKurHezOqMPFS9n1t2j7T56sAdadIw5a1rl9oNSM47XBtM7Iik5aIbna976/kQL5u71+HBfhDQv+mcPU/EZOKHacXXP02IlNNtYiJOTAjFebiFOt+IG71I3TMAEkgQ3PjhSINgw6HL68BM53xRBJzvj3Pmp10onleTto+XuVtOKOdOR0Sd5XwG31XAnlldtN1YfiiAn/xH9cSdrmv7aSJqrEj1vydd+++Y2tANMOHqP+y+9i/QQ0Qse+IwTEh4BWGvXcI3C+4X2ocQi2ZU3OIsVcdcfbTJYwp4kuEiIa22YGKi6yuvzxvB9696FRKaESC5RBoFEVB0ERcd2PE9dlHca8FuR8qBHaRwYspszedQT4kcy9hWRRNxdqsC/zKrVU/Vk7zSUD/UADYPx8Sw7hMISOBDIbxFImVRGTiEt2w/Na5Ns1OEVUValTtkK6N7EHOsZ8xhfnruwzg4bsKaysKQqzKjMFIbG8TekiRAbPayDS5+5y/Of2IZxdk2PK2S3/uEHCPbh/IeNyzwhNLoVneMpKu3nm3hJDg7ieBFNhkokhunBLEvu6DCWyQR7zJf8qjkSqFUnwZg7r/Fdt4MHQnycjlfFXDFxDM/f+24qWQ6KHXKGXINFb1mcsCjD7/ZqSApdInN30r7s2x/BIsP/Fvy4FlgKHBPrwLFTvUz7Na+/7VBnDLrdCuCMM1/j/w== 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013)(2004002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?3knerLlQY/49RwPV3Z3oG9u96dHsQipvi1n2MEeZZWOEeiq6COpTZuKKenPo?= =?us-ascii?Q?6kTXTai5ii6ONmahbazqkBLq5cwT/d/ILZsKHzlyI2Th5MHWf+KwDvfAHj1P?= =?us-ascii?Q?spOINUTgvJtTpIuWcj3l5ut1UeW/LLYQ8yONjL4Ng39EyFbDuqeN+r3qeGZ7?= =?us-ascii?Q?SGBP5TZattfBB8Ibw6jrZ3Ut7wxk6xmqS/xZgtZc61u1ENdlmXJzC8Mhzctn?= =?us-ascii?Q?BuI43rT/DgAUBxiXPVV1iJ2iq16RNiyKwWMr66mGFkdIwbkvF4MNtnTeenMU?= =?us-ascii?Q?w18+d17ZZqcAISxoNFwkcETSZHU8T3yFtbEDSf1gnELxPA4LVng/rr9PCDGg?= =?us-ascii?Q?yWKIx+IYOJ9LOu4Gf3srS6FAEwts3BTEjCNDBDNwZWgQHIHdISZKFZSw8bxs?= =?us-ascii?Q?kji4uMp9jkHHvNQnsPALopaEy5ILWQNNvfdmT89tDoNXS8zNQg8gwt9CTrPh?= =?us-ascii?Q?VhqBgJ2ds/d73LDOl8184hVyMzPA1t2zx73uHV9OJW5DuKMSKL0lZwsuz4eM?= =?us-ascii?Q?qkRJjQpbDum6BB30WeMo4oG9xE2PUnVd1AEy1DJQsn5p0xsKqyb4HsIZGcSb?= =?us-ascii?Q?EUP+FnsBumseVmX9/CM4Xl2JblhFBkxaMEbt9DUUdGEwC9eoibQ4sb7KQd1k?= =?us-ascii?Q?Nu+QdczuhFachuq3HVj4wgLS3t3upO0/40syIPOHsXN6fUUdiSIElOH7uqzR?= =?us-ascii?Q?8TYv5N0cgtvzYOpu3dkrpKMScUHwxj1CnHbJHkCmfhht10GhUmT8EAqL0e6q?= =?us-ascii?Q?CstxrS1CQtN8JEw7/MwwcAT63jfXGwOnzv/uYUVIJuUYT+FKKu8OuAsJF+8K?= =?us-ascii?Q?aE1ixeHinRqkWNJQUOSEnd47ePUDV9XlLWndkDHfhwStJHuKmFTluIgXkGAW?= =?us-ascii?Q?Jpmf3wxg5JEF2ObGN1+ysYykOvbMp/20ZZZp+4LLS4P1sG6CVsPxiftiTyue?= =?us-ascii?Q?t1QV3yHih1C/R3/TqzNDXpYpoAEKBDuarl3GqH5/XihsJa/eeqYFXB5bf1aA?= =?us-ascii?Q?K94yivkAemmOBUW7+zPKuvGmw+3gYGteTyxrgt5WdRw54Zt507CinVb9tcO9?= =?us-ascii?Q?ekyZ7eGNaYH5PZoI4411zl6PqkL91cyDq/PqOnB9lIzALxv5QO8CHdsfBcA6?= =?us-ascii?Q?h+F3L8ycKEKVDIX5sTI+wCWi3P3GYXFCwqU1BF+XPH61f1SM6eyEtCzoYFJ3?= =?us-ascii?Q?tMdNVR9NcWxhLjRWIKdAC3RK5xPS2myt2N3Vj6DSB9mOQ9GQid4PRyjDnQv/?= =?us-ascii?Q?g05sdV6v8mud6ibVNQrG22N1VgC9OVGdwZtNq4sq2sTLLKUyF6qkDS3Oy1nV?= =?us-ascii?Q?zYkAEzLgIbLNWSHrOfBHHWy1?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4694347-38d0-4eb2-8528-08d90a58dcbf X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:22.7674 (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: Z+6r0AEjxIGd1EBiieFeNQ8sKFaVV0xSc+Q0SBUnp0B+mJWbYSjFTos69FyC4SzvSc88sxUjjm1n5vya09QYxCiTtJELUYPs7I/6lnOUfYQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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=2a01:111:f400:fe0d::70b; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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, 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) Content-Type: text/plain; charset="utf-8" Add the test that shows that concept of ignore_children is incomplete. Actually, when we want to update something, ignoring permission of some existing BdrvChild, we should ignore also the propagated effect of this child to the other children. But that's not done. Better approach (update permissions on already updated graph) will be implemented later. Now the test fails, so it's added with -d argument to not break make check. Test fails with "Conflicts with use by fl1 as 'backing', which does not allow 'write' on b= ase" because when updating permissions we can ignore original top->fl1 BdrvChild. But we don't ignore exclusive write permission in fl1->base BdrvChild, which is propagated. Correct thing to do is make graph change first and then do permission update from the top node. To run test do ./test-bdrv-graph-mod -d -p /bdrv-graph-mod/parallel-exclusive-write from /tests. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- tests/unit/test-bdrv-graph-mod.c | 70 +++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index c4f7d16039..80a9a20066 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -1,7 +1,7 @@ /* * Block node graph modifications tests * - * Copyright (c) 2019 Virtuozzo International GmbH. All rights reserved. + * Copyright (c) 2019-2021 Virtuozzo International GmbH. All rights reserv= ed. * * 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 @@ -44,6 +44,21 @@ static BlockDriver bdrv_no_perm =3D { .bdrv_child_perm =3D no_perm_default_perms, }; =20 +static void exclusive_write_perms(BlockDriverState *bs, BdrvChild *c, + BdrvChildRole role, + BlockReopenQueue *reopen_queue, + uint64_t perm, uint64_t shared, + uint64_t *nperm, uint64_t *nshared) +{ + *nperm =3D BLK_PERM_WRITE; + *nshared =3D BLK_PERM_ALL & ~BLK_PERM_WRITE; +} + +static BlockDriver bdrv_exclusive_writer =3D { + .format_name =3D "exclusive-writer", + .bdrv_child_perm =3D exclusive_write_perms, +}; + static BlockDriverState *no_perm_node(const char *name) { return bdrv_new_open_driver(&bdrv_no_perm, name, BDRV_O_RDWR, &error_a= bort); @@ -55,6 +70,12 @@ static BlockDriverState *pass_through_node(const char *n= ame) BDRV_O_RDWR, &error_abort); } =20 +static BlockDriverState *exclusive_writer_node(const char *name) +{ + return bdrv_new_open_driver(&bdrv_exclusive_writer, name, + BDRV_O_RDWR, &error_abort); +} + /* * test_update_perm_tree * @@ -185,8 +206,50 @@ static void test_should_update_child(void) blk_unref(root); } =20 +/* + * test_parallel_exclusive_write + * + * Check that when we replace node, old permissions of the node being remo= ved + * doesn't break the replacement. + */ +static void test_parallel_exclusive_write(void) +{ + BlockDriverState *top =3D exclusive_writer_node("top"); + BlockDriverState *base =3D no_perm_node("base"); + BlockDriverState *fl1 =3D pass_through_node("fl1"); + BlockDriverState *fl2 =3D pass_through_node("fl2"); + + /* + * bdrv_attach_child() eats child bs reference, so we need two @base + * references for two filters: + */ + bdrv_ref(base); + + bdrv_attach_child(top, fl1, "backing", &child_of_bds, BDRV_CHILD_DATA, + &error_abort); + bdrv_attach_child(fl1, base, "backing", &child_of_bds, BDRV_CHILD_FILT= ERED, + &error_abort); + bdrv_attach_child(fl2, base, "backing", &child_of_bds, BDRV_CHILD_FILT= ERED, + &error_abort); + + bdrv_replace_node(fl1, fl2, &error_abort); + + bdrv_unref(fl2); + bdrv_unref(top); +} + int main(int argc, char *argv[]) { + int i; + bool debug =3D false; + + for (i =3D 1; i < argc; i++) { + if (!strcmp(argv[i], "-d")) { + debug =3D true; + break; + } + } + bdrv_init(); qemu_init_main_loop(&error_abort); =20 @@ -196,5 +259,10 @@ int main(int argc, char *argv[]) g_test_add_func("/bdrv-graph-mod/should-update-child", test_should_update_child); =20 + if (debug) { + g_test_add_func("/bdrv-graph-mod/parallel-exclusive-write", + test_parallel_exclusive_write); + } + return g_test_run(); } --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624278; cv=pass; d=zohomail.com; s=zohoarc; b=O9c+npKRsSuEMqcGe/X2WWuRv2I8l7L31sz0CIU1T6INkToSBtnEMkcfP97CQfNhiHx5xB6zFE7xNqSJ0saHzHqC9Nl42jC/mEQU8tK60F/T0Wv7AfPxb0F7spnAGrO40iqzIeFMeDb5Li71Y+l8dK5PkgdPfKNNhTYNGODaMAU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624278; 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=KTOZv3OREJLR5AglgF9rBm9RojtdA5kecMa/lmwv6O8=; b=dLW1w0BZ/a1CurkK1GgXvhrACzziClVu9amMphRWtZVLUx0A/ptlsxr/QzgHYFJJGvjoXdxRFakYj+MS3LVs4lo8679Ox3+IlW5b44KamO0RY1tOqVwvlJ3A1Lh5z+1/q/k2pF84bDUKVORa7tJqF4bCNUAGS/84vDcbnrpoSGM= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16196242784571015.2560353079482; Wed, 28 Apr 2021 08:37:58 -0700 (PDT) Received: from localhost ([::1]:54652 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmGD-00050L-MV for importer@patchew.org; Wed, 28 Apr 2021 11:37:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxf-0005gh-TA; Wed, 28 Apr 2021 11:18:47 -0400 Received: from mail-db8eur05on2106.outbound.protection.outlook.com ([40.107.20.106]:17025 helo=EUR05-DB8-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 1lblxZ-0001uP-Ki; Wed, 28 Apr 2021 11:18:47 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:24 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:24 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EmYlgxti0KotQzbvlZRtZSct4GhYljbQTCpgXw8kiZHISqXvH0SaljpZd1DYLAdnKJs8qJHzhSVXQq5RFmoGNlC1IwJnSHMK6dEtvF2wtDjbQuET7e1DsVIXR4pp2DzAVaOOzzz/X3OhORI4Z56BSkTH8QHAkFQSazthqPcQ6w6Vs7I7VREbIHKNOaqx5Az20+eXlZ1ZYBiELXduWAQUi2qWb8YZyFD1vIXcwg9l/j6Dt6s8yS4/K70bhsvs2AR1wDPbgX7//ZMbH9tZIkjeYP5xC3ljvlqyZ5vtp1XsBSJN/94s9jXiF2scOT/Ky3TYv7zWtrU8/HzFWVdJKwa1Sw== 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=KTOZv3OREJLR5AglgF9rBm9RojtdA5kecMa/lmwv6O8=; b=n7D4cLAECn0RAuU6N0Zc17UEOaqyoXGrw93c/c1T919ODDqJV0oV41dCw5yDU51UOOMURq9g+/MtjOcoXBMQVzLQ12ejC4zwe10Doxsu6v4+4KmY9dzszZavZWto8qmofFbNppVSTxFd5ozFCF8fOx+7MX4HaymL8Lu0HX9WqNf+gTVQI8FC7rY1dY16tTToi/lY6wzppe6Z7qyGjZjBGvUpCfj/D60DmnE1joPUWf+gR6/nLQIkgiEqyGwt6Cb+kIVFiuJgvTepr7aXqPDJwjOMCZ58XDPxQPxQ4QO7p62/Uea9zC65f/ftm0bEvMukLr1yQ9D+b7/MGImFBincfg== 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=KTOZv3OREJLR5AglgF9rBm9RojtdA5kecMa/lmwv6O8=; b=bw0lx3F5jaq5wNFjVkPSIzvRmSzQQk0tN3s25yhQOuqqoSD5sGGQpc7yHI0zkdaYYNrj30EiqhstU0Z/QIY84HEiKunDuLArCvyHjqQlBQXWhbSANhaI3y9n18rqMNDtD9rBptB3jNBf4Kjo4JiBtf32TNW1O58VDHuGOUgE0Cc= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 02/36] tests/test-bdrv-graph-mod: add test_parallel_perm_update Date: Wed, 28 Apr 2021 18:17:30 +0300 Message-Id: <20210428151804.439460-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: e536f2dc-f18f-4eaf-23da-08d90a58dd69 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dLXHbFXqhcWlCxohBUuic83CVTnOBh4VSb/pkSoEGYmp1h6HWWsrUVh9HPTBslZlUxy+xdlQaIZvzcQxKgtIQWRBXA2TeVwzcexI11Ne7CRCm+exAnKfol8LR3AmnxpRJp9FwAeDaOKLqHNcL5k81LD1+xIr7FMfI9edSgtD7lcinwf38UkWhxYXbPGsjKruvEGF4uPNlpP7o1v5fxb09dYxWuQbVBjDSOp/pUJjp+RqzxEvG4cTVZbKkC5dgLEAf1BLb6hPK8u0OilmycbWt+AhEjB5USHmCXnS5515q1/Xx+2V8pgsWNW6GXBhOGlXU76baDN5vdKZv/WTT4ZTSd5VjyPfEdWDc/quLLx2L+c93MCH+BoegsDRodrE/KOV5lMIakvvln6eLihYeSSgtMDZdo2/aK6VsVq0PvXQcKbjc6DfTUZeF0MaWv8zOneTZffpxCeNzQtdp2Ul1H0eO6QfSXy03Q77rdqzvN7aGsLTqSf6q3b1eIayTZeNIU7Elu1SEmt6LpprBmxzlglPgMuXX7fsP6RbFFLDVI7XZHkZrmmxN1NY9v1L/LzSGKPk34s8H3pRW4f3YmB0kKIPpaZel+Qw+AZZ94iRE582mwgd5bto/oYZS6HF3aRt74PRpN7wuMynbnVrdA91oChUAw== 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6666004)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?dDdzQUpxWkdoc1RIYWpIcjkzRkdOMzI3Z3lvZjZFL1pkdk0zLzh3aGhOOTlm?= =?utf-8?B?dERIcXFoeXV4R2s5Q3Q5cnhVNkZ4UjdkL1czQ0JMazR4eUtzbzdqRlBUY3lY?= =?utf-8?B?OXJaQXBYTUlWMlhSUTVtNFlxZjI2cStDNEFWZDU0bkw0QktCcUpjZHpaRFdL?= =?utf-8?B?YWwvRnBHRnE1MVExdWxDT1VQem5OSVNkdDlaKzJNb0hOV1JzV2pFbFQ3a2NP?= =?utf-8?B?b1hhWC9odTdoOGpuTmhmL1RtdkVuTU9MWmVTTUtkdFNsVmliRVkwMkpCNU9C?= =?utf-8?B?Vk44bnY0aWxnSjE3Z1BpQnEwNzN0dzY0cDhvUXEwYUk4TWx1bmZxS3JqZ3hv?= =?utf-8?B?ZjVqT1JRV2VrZk1YSW8veHQrRHYrVnlHS2tlSFBMaUplYy9vYTRZMFFYc2pq?= =?utf-8?B?b1pOdEdGd3ZvSlB5bG5KN2E0bktJZFM1T20xbHlLSS9TOEZveFd0ZW84NjdV?= =?utf-8?B?ZXNmQjd3RU5rUGlmem1yeEl4Z1J4RktBVHZxck5DRFQvOW5Cc0o4ajIzTy9x?= =?utf-8?B?QWw5Z3BYV3VmZkl5MlRYdFhudWdFdHVLZmdsQlFnNkxVajVDQ0RIeGUvRkdF?= =?utf-8?B?SEY5b0NwdUVPUUE2bjBiekZ2a0lyMHlYa1JYTzRicWdTY2dqanpheVRwZ2dM?= =?utf-8?B?YXN2VFNvV2tVMmNpZithL3pGbHpUTEd6MzNUdXphaGNJb1F4Mmw3a3gxdVhI?= =?utf-8?B?K0dtbllnLzZtVWIzT3p3Z1ZtdWRXam5DK2tqUzV6YklKcTZBbTdlWldsQlU3?= =?utf-8?B?VnNFcUc3YU9WTHdQWlQwRDY3NDl3RXd4dFBnNm1yMzQzSEtBVnAwU3ZTZ2Vr?= =?utf-8?B?cGdUUlBlZW5tOWE0NkwzKzJUdy9mUW9jY0lzZnZHWlVyK3N5ZmQxRXhScFVo?= =?utf-8?B?RjhNTDRYSENXYlUwUzlCdGxrWmJxU3hoaXU5YTI4Uk90S0dtWDNvRjVqcmFv?= =?utf-8?B?ZHpGMExUK0dFSVJUbnF5dExhVklPWnRuR0V2RmJscTQ5Zm0rejNPRmw0NEM4?= =?utf-8?B?Slg3eXBjMW5ib3YzbTY4MjBMZnRZazRwYmVoaG5GdXhybVpWWjNpTk5pZXpx?= =?utf-8?B?bzd0Nmw5TFJFdFE1cE5FbGNyTC9aSnViVERWeVFTdGR5eml4SVpodzVpUjNS?= =?utf-8?B?eDBhNmkybG5mRmM3aDk3R1QzbEFVb2FrMGw1akJrMjMvbkxCeHhSNDdnT2Yz?= =?utf-8?B?VkZmMktSRzF1TmpqWG9aWlBPV3ppTkhWZExvY2F5TWtmVWc4aldoOEwvZkhY?= =?utf-8?B?eXRHRUVJbDBpTlhXQ0FDdk4ya2NDdmd4ajFMcndzSUpCbUpsVStLandISW1B?= =?utf-8?B?UllJV01LQUNSUTU1eGtMUlZIczRIMGN3enAzS2M3ekordGtmbElqYit2dW5J?= =?utf-8?B?TDNNaXlFQnBrVWo5Y2t3VEI4ZFBWMjFvY2Flb2QzMHFDUFVwbjlSbTZlaTVz?= =?utf-8?B?UytYWFJENHdocE9MalZpc3paSXZFMTdya3FyLyt0ZERZSE83Z3RCVzBMUEpz?= =?utf-8?B?M2w4ZGZQeWFOb0R6NmNZdGg5dVJaT21Tb3NmMkx1cnN6bzdQOElkM1NwK1FL?= =?utf-8?B?WGdMYWJKb3ZVN3MyNzJ3S1R2eXROYWE5WDZIY3JjNjJ0Znljb0pxTFA5T29x?= =?utf-8?B?aEZXeHdmMXlmL2gzMVJ4TVpBMk9wV3d1bnBSUkFuL1g1cUdPZUIzWkVZdlRq?= =?utf-8?B?VnRTdDZDNjFmSDJWNUVsSy9iV1htVU1hVk8rYk1BaVgyVVVxc2tuZm5NL0Nq?= =?utf-8?Q?JK0TbIFPsIz7bkKfmMTU6PFEePg9Dj7uGeFHQKP?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e536f2dc-f18f-4eaf-23da-08d90a58dd69 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:23.9378 (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: graa7fVok9c6Wfw16hWihlMa6EJtYgq0qrazD6d6zRybnYh4fLFoe4xepiJxt14dpyGeRHgd1IUoYNdm6w1Tbppamj/eBMORaxPcgmbOHZk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.20.106; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Add test to show that simple DFS recursion order is not correct for permission update. Correct order is topological-sort order, which will be introduced later. Consider the block driver which has two filter children: one active with exclusive write access and one inactive with no specific permissions. And, these two children has a common base child, like this: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94= =8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 fl2 =E2=94=82 =E2=97=80=E2=94=80=E2=94=80 =E2=94=82 top =E2=94= =82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94= =94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 w =E2=94=82 =E2=96=BC =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 fl1 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 w =E2=94=82 =E2=96=BC =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=96=B6 =E2=94=82 base =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=98 So, exclusive write is propagated. Assume, we want to make fl2 active instead of fl1. So, we set some option for top driver and do permission update. If permission update (remember, it's DFS) goes first through top->fl1->base branch it will succeed: it firstly drop exclusive write permissions and than apply them for another BdrvChildren. But if permission update goes first through top->fl2->base branch it will fail, as when we try to update fl2->base child, old not yet updated fl1->base child will be in conflict. Now test fails, so it runs only with -d flag. To run do ./test-bdrv-graph-mod -d -p /bdrv-graph-mod/parallel-perm-update from /tests. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- tests/unit/test-bdrv-graph-mod.c | 116 +++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index 80a9a20066..a8219b131e 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -238,6 +238,120 @@ static void test_parallel_exclusive_write(void) bdrv_unref(top); } =20 +static void write_to_file_perms(BlockDriverState *bs, BdrvChild *c, + BdrvChildRole role, + BlockReopenQueue *reopen_queue, + uint64_t perm, uint64_t shared, + uint64_t *nperm, uint64_t *nshared) +{ + if (bs->file && c =3D=3D bs->file) { + *nperm =3D BLK_PERM_WRITE; + *nshared =3D BLK_PERM_ALL & ~BLK_PERM_WRITE; + } else { + *nperm =3D 0; + *nshared =3D BLK_PERM_ALL; + } +} + +static BlockDriver bdrv_write_to_file =3D { + .format_name =3D "tricky-perm", + .bdrv_child_perm =3D write_to_file_perms, +}; + + +/* + * The following test shows that topological-sort order is required for + * permission update, simple DFS is not enough. + * + * Consider the block driver which has two filter children: one active + * with exclusive write access and one inactive with no specific + * permissions. + * + * And, these two children has a common base child, like this: + * + * =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2= =94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 + * =E2=94=82 fl2 =E2=94=82 =E2=97=80=E2=94=80=E2=94=80 =E2=94=82 top =E2= =94=82 + * =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2= =94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 + * =E2=94=82 =E2=94=82 + * =E2=94=82 =E2=94=82 w + * =E2=94=82 =E2=96=BC + * =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=90 + * =E2=94=82 =E2=94=82 fl1 =E2=94=82 + * =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=98 + * =E2=94=82 =E2=94=82 + * =E2=94=82 =E2=94=82 w + * =E2=94=82 =E2=96=BC + * =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=90 + * =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=96=B6 =E2=94=82 base =E2=94=82 + * =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=98 + * + * So, exclusive write is propagated. + * + * Assume, we want to make fl2 active instead of fl1. + * So, we set some option for top driver and do permission update. + * + * With simple DFS, if permission update goes first through + * top->fl1->base branch it will succeed: it firstly drop exclusive write + * permissions and than apply them for another BdrvChildren. + * But if permission update goes first through top->fl2->base branch it + * will fail, as when we try to update fl2->base child, old not yet + * updated fl1->base child will be in conflict. + * + * With topological-sort order we always update parents before children, s= o fl1 + * and fl2 are both updated when we update base and there is no conflict. + */ +static void test_parallel_perm_update(void) +{ + BlockDriverState *top =3D no_perm_node("top"); + BlockDriverState *tricky =3D + bdrv_new_open_driver(&bdrv_write_to_file, "tricky", BDRV_O_RDW= R, + &error_abort); + BlockDriverState *base =3D no_perm_node("base"); + BlockDriverState *fl1 =3D pass_through_node("fl1"); + BlockDriverState *fl2 =3D pass_through_node("fl2"); + BdrvChild *c_fl1, *c_fl2; + + /* + * bdrv_attach_child() eats child bs reference, so we need two @base + * references for two filters: + */ + bdrv_ref(base); + + bdrv_attach_child(top, tricky, "file", &child_of_bds, BDRV_CHILD_DATA, + &error_abort); + c_fl1 =3D bdrv_attach_child(tricky, fl1, "first", &child_of_bds, + BDRV_CHILD_FILTERED, &error_abort); + c_fl2 =3D bdrv_attach_child(tricky, fl2, "second", &child_of_bds, + BDRV_CHILD_FILTERED, &error_abort); + bdrv_attach_child(fl1, base, "backing", &child_of_bds, BDRV_CHILD_FILT= ERED, + &error_abort); + bdrv_attach_child(fl2, base, "backing", &child_of_bds, BDRV_CHILD_FILT= ERED, + &error_abort); + + /* Select fl1 as first child to be active */ + tricky->file =3D c_fl1; + bdrv_child_refresh_perms(top, top->children.lh_first, &error_abort); + + assert(c_fl1->perm & BLK_PERM_WRITE); + assert(!(c_fl2->perm & BLK_PERM_WRITE)); + + /* Now, try to switch active child and update permissions */ + tricky->file =3D c_fl2; + bdrv_child_refresh_perms(top, top->children.lh_first, &error_abort); + + assert(c_fl2->perm & BLK_PERM_WRITE); + assert(!(c_fl1->perm & BLK_PERM_WRITE)); + + /* Switch once more, to not care about real child order in the list */ + tricky->file =3D c_fl1; + bdrv_child_refresh_perms(top, top->children.lh_first, &error_abort); + + assert(c_fl1->perm & BLK_PERM_WRITE); + assert(!(c_fl2->perm & BLK_PERM_WRITE)); + + bdrv_unref(top); +} + int main(int argc, char *argv[]) { int i; @@ -262,6 +376,8 @@ int main(int argc, char *argv[]) if (debug) { g_test_add_func("/bdrv-graph-mod/parallel-exclusive-write", test_parallel_exclusive_write); + g_test_add_func("/bdrv-graph-mod/parallel-perm-update", + test_parallel_perm_update); } =20 return g_test_run(); --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623352; cv=pass; d=zohomail.com; s=zohoarc; b=YliMZ+oit5CvBTLYEH4AHHvnMSznlWRXAMAYR2MUIGw9ZOG+m6H2BqfODdX2Yeteh7eLHxk4YI2iESCGZHZOsGu7xJf56qXWBS4V2UekwJ1Hcv7z8ailNNSvmdcc820nX+p2totpGSQUsz5no+3ZlWbickE1BieR7NckYvETz9s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623352; 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=BGzFSrJbAZ4qvr0ZRpN70gF1fgDUn5gHIP//DlvizlM=; b=Bt1WbUeUCoxHRv5/rOfl+mbHB8DEVMv+ThH4v3T4Tx4v1wu8qV1NDZ6miRgDAtm68ARhBLpujjX5fIylIMigHacKLWfAExUWIsCrd+X0c4555Uaj7mwmt38bPEZfZa9+XDhvfB0LrjRdKfMBMw+zSYDNBJrfjOtwxSwiiM9QaP4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623351925792.6547818603925; Wed, 28 Apr 2021 08:22:31 -0700 (PDT) Received: from localhost ([::1]:50564 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm1G-00085V-M6 for importer@patchew.org; Wed, 28 Apr 2021 11:22:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxf-0005fr-EA; Wed, 28 Apr 2021 11:18:47 -0400 Received: from mail-eopbgr70127.outbound.protection.outlook.com ([40.107.7.127]:16352 helo=EUR04-HE1-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 1lblxd-0001nK-L5; Wed, 28 Apr 2021 11:18:47 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:25 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:25 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j7nVcUb+1pToWSvt2OCmWXDtI+ZTDyp5Jmf7pOrZBbLcIaDpQgwPNAWkR7t2PzI8eFAYhGg4tcD2j5lldDvwkj+lfhXa/aUUAE28C7fIAeX+fphLV2+MIMp4isVNGjBsm0cDxfinnnRncrJ0a++ojDpjcUrTJsoC5HxPeLvNGXi2qoealacnu4TJDJNZkMBrfqZNRvGkM9qH1uGKgAIEvQlFyCOOUA+ey2HyPHNnz1o9klP8gl6dFmDAGglJD6Y6mfpe1nmvXuw7hJ4T+SeEbozEjomG9qjA6sNdlAdC7Y+vrqAKWISU2N4E55mw2wLGNkPneGIN6x7YvSzG0Qo0gA== 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=BGzFSrJbAZ4qvr0ZRpN70gF1fgDUn5gHIP//DlvizlM=; b=HNtnadl/WwBBHYvHKtNe7M5QaAfGQW30OVfoPB5A8cP5UK9k9ICoTeFrmk0EjYtAK5IRZFpYLYlD8Roy6OcA3CFSKxD3sSDVNBdml0uX8xvA+zi3OagjuyznriZtJ0El6wIJ6JWso5lgVImOlx1PZxz60UzqefP+Aeo4sdwjld+Dxj/+XKI7Pwsi+OilqaEcEj/hhCu3ve5MQhkk8J2S0FQ2PZTPr9k8LtHud/bbXbYA16IkxbuZt6SkLP4YT5cXhT14Olo1l2K8HHoAMQV/XFnRcNYofOrWzfXEJdpWP8OFTBpeqcRolWysmTd4K9th9zwIC1F3ZwjaTs0R9S5MFg== 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=BGzFSrJbAZ4qvr0ZRpN70gF1fgDUn5gHIP//DlvizlM=; b=EClChh/xJSJia/f/U16ysqSRoU5FEfGF/BZpxs94DKALRE7jiy8H7lMoO1QTPcwXjRj6v7K726e1bSerAGMWX+5SQUPBmxf2GMfqsFNj98uCr/qJ7tKi8cbgoSPI/MHVzKPyggeg/rJH74bNodXA6gLhzhiY+wTjSTAZ/RWt6ts= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 03/36] tests/test-bdrv-graph-mod: add test_append_greedy_filter Date: Wed, 28 Apr 2021 18:17:31 +0300 Message-Id: <20210428151804.439460-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 914df3b9-da9d-4c82-8502-08d90a58de13 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UivODFa/gdtliRZ7uulf5ImJgRPkYYofW9siz4CCVlXXu2zV06Z75DaH1WPSKop0A3umCJA6s5H55KW86mS1DZlRiN/9W8vrzFsCJXl7ceyB8FtYHNV1mfOhYP4BBFSLhKZWNkB1au+JrIdc0dHBxD2+NIRaGWXgJck6bsX8xvLmRqzP7nc2c9ZDQ3CMIPfIMeFOKph7NUP5z/vVm3kj9Jpo3EvKdZDgW29gV06FKCeP7UDWb2izoIOdUIzy0WQ+5xOPxq0WMWE15iLCYM4jB4DyeZeVXUu4ApQpa1hAakx+rFBQ+uzK6dxi9AYHzFJ896Nxsj/WtCuAXtRnhBRpEqo15OjhiDLsajzW/gfYStKBRMO+emnok43VNppBjXYQTePokAK7EA0KYOs9NaSF9pEyYQG5CUTIG9PPuQgPaLS4ZT6KACaaY9hNbKfPiSq+lV4Keo7D2/EGoV4kS3EsFkgVVpcg83WX4nT0H76M50DHbgCa7DCbvBNoV2M1nLhX5jR5o5UuFZdAQWi99eqfVAYt3Gb/xTmnHEsRAIJOfrrJNP537fuPaWKMBi+jLkmeIrCi+vyuuZg3wQRKpCsJB4NncjsD0NBQnnNBHSKGSzIaM65OS7G2O219snRiF+Mzr4vYFDbIbb7Q+S7MBl4jXERsuUzM38HqkKzJpk7Pqm7ZW3xLGfN3a7fV+gsBuUbJ 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6666004)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?BINsDvEh7PbgnSevebmWoPguVeCPbXNhf9eTW8crUAqiyF6IcpEZCWmS6mUg?= =?us-ascii?Q?/G+/nktiGfHQmZbpSru0FvmeovJhCOHMMqZq3Iwu39rYAoCGWSbzAflLlKgY?= =?us-ascii?Q?1mDCfWe33L6QlH42hvPj4H9UIwUJUc7tR4WmBqQfghTz6W160wbgr6ruZlTg?= =?us-ascii?Q?CrGjEKAfxDB6hjJ8zTmlhJDxOmRixRdD4TafK9RSLl13smwaA3X+rymL6dxd?= =?us-ascii?Q?yo/X6ZZ0aJaMx8IoTfyRFlaEVKuD1zAFF0Q7gUdNOMuRIot1wdaTqwlHwqK8?= =?us-ascii?Q?ZvS1zMSvEddwee2PG+OnzOj/1GSPToaeXqL52EKnPxGGSCNa0SVwVQzsOXJv?= =?us-ascii?Q?R3DdaFY2b0WqH6EsSHEnMYrbCp/SCY1rDWQmZhXAOwoS9riyycv68vIpJNWY?= =?us-ascii?Q?PwDwH8X2VgdihKGuCdjgW3PTDo1nzHmWfHmR80svbtChm1q60+yJGu5EwrDH?= =?us-ascii?Q?xDXKwf0pOPEOep1HMZUCj6jyxRymhOJmvdHx9DU+aAw9lIclYCTwERv8n2Dq?= =?us-ascii?Q?RtBNvLp1z+URMwUm1cUrl2Zv3eel+H6AhkU+l64zlDP6U2n8G8dxDkQUxrPs?= =?us-ascii?Q?KWrUa2eaGU0+68xcPCB4efBj/ra4O6XDk/611KJLkBs7gIMFg2++2SU25FoL?= =?us-ascii?Q?waC6RNwhKF8fXopIPQ2zkSlIROzncBw5lD7zmEZePLx9M1nZ70Puf/Ye6GAH?= =?us-ascii?Q?KIUQB26QrrCV4i3eJGiE+iAML+Qx+j+grIORsxrggF2gTqrZQ/l6QJDduUAt?= =?us-ascii?Q?Pk/gMph7KBqZSzbwY4osZv8ABNYkD+jz/8Q9ZONJeXsz8AIziHbA4aVPY5F1?= =?us-ascii?Q?Anq/sE++uLUgM0RbMp+nB1D1bzautUyl3BrT55CJ4jkaIyADo3n1wvalwU8C?= =?us-ascii?Q?6tQwAgvhG5EgZbJIx7ajSJNWRHTiFwnnDt9+9C5KmxiggmXYUAafbsOCQeaa?= =?us-ascii?Q?I4MTqYGCAtcMne7BNBujFyyR3rejEdJEAd0AGu/SMnkAMFd7OjKPVOWxxEKU?= =?us-ascii?Q?VNtFVFR05c1ZgRMM0UQX8AfY2J/edgxXy0YMVtC16k/fR5iiSoiFC/Hpdf0a?= =?us-ascii?Q?/QGQ2Uf6TlRzUWLgYEdHjPSg8r/w4eMsi2EvvmHfU+mJjSTpPDeUXM2th9gP?= =?us-ascii?Q?48UwdbZaM4n4ZpwjfeavpitcfHtHjfIRpOMW66IX2y7jqUtEvjXxlf8jYKZ3?= =?us-ascii?Q?eyge9nweYW9t3OWaqMpucaCpbDY2AJz0zop9Ik4fSTWzsb4zH0FgNMITdPHB?= =?us-ascii?Q?2i4/ky99sNwpEb09jHSdN8dD62aP/IVj6OtakLw2lJGn7YNQeRx9T0X6WUdV?= =?us-ascii?Q?7gffYrEFl0ibQZaaJ/LhRB63?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 914df3b9-da9d-4c82-8502-08d90a58de13 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:25.0001 (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: vbwZDCyHbLTK7Wn38KWhrSh9ZDm8/Osf2/H78BcqhACaw62TzVGzuXOcvBbfKU5Wp0T1KeZ+bPNFDVgEH4o2Z/GSkU4tC/RsA4TpLMMH0X0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.7.127; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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) Content-Type: text/plain; charset="utf-8" bdrv_append() is not quite good for inserting filters: it does extra permission update in intermediate state, where filter get it filtered child but is not yet replace it in a backing chain. Some filters (for example backup-top) may want permissions even when have no parents. And described intermediate state becomes invalid. That's (half a) reason, why we need "inactive" state for backup-top filter. bdrv_append() will be improved later, now let's add a unit test. Now test fails, so it runs only with -d flag. To run do ./test-bdrv-graph-mod -d -p /bdrv-graph-mod/append-greedy-filter from /tests. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- tests/unit/test-bdrv-graph-mod.c | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index a8219b131e..5b6934e68b 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -352,6 +352,37 @@ static void test_parallel_perm_update(void) bdrv_unref(top); } =20 +/* + * It's possible that filter required permissions allows to insert it to b= acking + * chain, like: + * + * 1. [top] -> [filter] -> [base] + * + * but doesn't allow to add it as a branch: + * + * 2. [filter] --\ + * v + * [top] -> [base] + * + * So, inserting such filter should do all graph modifications and only th= en + * update permissions. If we try to go through intermediate state [2] and = update + * permissions on it we'll fail. + * + * Let's check that bdrv_append() can append such a filter. + */ +static void test_append_greedy_filter(void) +{ + BlockDriverState *top =3D exclusive_writer_node("top"); + BlockDriverState *base =3D no_perm_node("base"); + BlockDriverState *fl =3D exclusive_writer_node("fl1"); + + bdrv_attach_child(top, base, "backing", &child_of_bds, BDRV_CHILD_COW, + &error_abort); + + bdrv_append(fl, base, &error_abort); + bdrv_unref(top); +} + int main(int argc, char *argv[]) { int i; @@ -378,6 +409,8 @@ int main(int argc, char *argv[]) test_parallel_exclusive_write); g_test_add_func("/bdrv-graph-mod/parallel-perm-update", test_parallel_perm_update); + g_test_add_func("/bdrv-graph-mod/append-greedy-filter", + test_append_greedy_filter); } =20 return g_test_run(); --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623601; cv=pass; d=zohomail.com; s=zohoarc; b=i9L4JtdaNS8oZruzmtxjetj49JA9KrZPWTRAGjgguvaTY60oGJTsCiakuOce1gXQQN/yX1wZqrJC4XcLYRSeYwE2oujoy2Ddmh8SUrYKK2g7H8a/tctQRhw2R1fe1sU/6NmT3mCewL8VZMhXRdWvSy7PdFzhKPBgjbYob1x01cc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623601; 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=GlmkX2p423ed1XNl+MQScB/82iaGPIZ5rUzzjwTwIQ4=; b=hgDj50B6vV3mHus4IbfzMKJfM9wwPsNrj7llaIpVZDdYhKqdmXcZ9gF5e2LtC4Qn8mLMB5t5hJ6XQnVXJ5blQ2ZyFCZfEEknud8lCV0ZS3NUoTYedvMdqJsETJuujjwRWQ3OJTw+J+6ex/OogMu3RYrPCvqvsxVhWCh6geYqX58= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623601216341.8247709253453; Wed, 28 Apr 2021 08:26:41 -0700 (PDT) Received: from localhost ([::1]:59142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm5H-0003Eh-3T for importer@patchew.org; Wed, 28 Apr 2021 11:26:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58484) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxg-0005ig-Vh; Wed, 28 Apr 2021 11:18:49 -0400 Received: from mail-he1eur04on070b.outbound.protection.outlook.com ([2a01:111:f400:fe0d::70b]:4079 helo=EUR04-HE1-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 1lblxe-0001qz-Hn; Wed, 28 Apr 2021 11:18:48 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:26 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:26 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I31Nn9aYxrRZVkK9QViYeOw02/lYkCf7a+WPelW/iFuRMmeuV0cS5L31+YLbzJk1Tf98IoOBb+NS/GX/1i9fM5naLxGjzVRuJdRq8ef1Hojaw+mLs53wf1RKhzPXICV4yYSBZ/o5ypb4a/hUeQZLZIYOzp8K+F+PNOcEfvLk2QJkKj3xta8pox7YNHymrUFCUGsOkgD1Y6vQNgFEtIRFg4b8LlSYz3KNEyoLUSvtQiQDsPOghYP3QQwuLsHU5Uq9Son50xzw9If3g1QBo7eAn7OJtExCbV6V+KyM9npt4kUhBR2lYPI402RqPoqGiemLQBrO/lZ/aXH5AXWWfiKr/w== 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=GlmkX2p423ed1XNl+MQScB/82iaGPIZ5rUzzjwTwIQ4=; b=m8GL9QqY5PxryHvrQpXJ81RrJyTUdQcZloqNept4bZGbpE1B9aN+n1SGMMNLYa9sVQMzrJv9TYDNmryBa+dxyMsaCcnu3xRiqPPgWiaELT70bdhm2QRqT+6CqLGFFpCe0nJGZAwb2zekBJJFBF+LYHlXtptQpGPTDDlyF73rXbVUglfmrhoJw++1cRWqM/O8JrAHl1gvhUeLXmIi4cgpC0jZ8MKBk5JJh+WiPMxcUyYwYfvV9R00vwLmRaop2zgTJjBIWE6PsNKs977w170xlWaRQweOh27t/dlSyw9HhUfCMgQXZ/APScmW63PfKDZUMatKzW13yhrnT4FV+8NP3w== 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=GlmkX2p423ed1XNl+MQScB/82iaGPIZ5rUzzjwTwIQ4=; b=eIlFCp+GHZRde7w4YgCdHErrjH+Q7DbjQpXbFu8kpRZIYgWQTz9akXf0pZczkPZcdpZR07dQvZ9AJ+XTwdtwmenBfbI38tYDfz538nGf0zklh2J0G1AzoPfbnHguydTl2C3U1ceS33yPKI0AaB0YDRe71a8TuZ4vzc+Pyy1AIfU= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 04/36] block: bdrv_append(): don't consume reference Date: Wed, 28 Apr 2021 18:17:32 +0300 Message-Id: <20210428151804.439460-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: ddaee6a3-b82a-48d1-658c-08d90a58ded9 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:313; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BL91kYFlTTGu2OLsSMLorxM9qGfS+YBy6s1CaayC4GW2ROc8nGeoRO6S/jq5A/eUW2CiBLf9F/l031w8rSYTjth7AvP9y4g6FajY5mJxwXYsSaKblC7pqqbdzP5hp8OHBRsvba79lx7B/c45/gvGTWpT3+DfEcz+lPp9GC2/SvQAJV1iQm3/EMvTmR8kP77dz62I0klqTI9R2sDTJoVVOm77mMNBurrrb3s8WMypxh6nH3h/SrweHgUJfwldOTCCFxX/J2YK4f6gnzXPWo7kSvQUC5RM7Bjdaf2T/dleHNwidppZtBJSfup+8vJwSlwqBNfhxkbe+2zXOhtwgs53c4qFGQuXPHAGmTOaKCrJyvHqww0IBdyZI5r7id0vw+2fCoPIwb79PkzjLtUbGdbaCsYfwiE9s6DM+PxEUCGR3WwJuxKkj6/6wJo8eQMIQQRuCYAShvIDUMFycu0NmkE4b/ZnXQqdAz1Ubd9SdYq3dx47q5fjqogkIa/pE8tDCRIsfmWih6GgE2idaFKbp4NXnDAKcHyFbBp7ESEMpHMDLZL6UUndnxBe1Ff0A3FdN1USDv1pE37yEFOzLpVlkZvPw3lccZH1LoLp/N1bIrOe5b8YYnhhox27J0R6dL4LCy3OQSqB7JWqncS7/ryPyHDy71Miay/qFvJug6o1eiHDIeUVK17sw/Qbs4RqrY28Ooy7 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6666004)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?ekYhN7Gfdw/+7Ccb+YSw6TEVtPqfLXAe10BmB9SyEg+SEnsFKaidA6W/oTR8?= =?us-ascii?Q?UxoNbwYXUEf0DSJXTz301d6QoASLu2FZnoIFYU/vsPC72uxCVIJVZn1tTP4I?= =?us-ascii?Q?thXVPEaSt6cBlqcVDHf5g1wNCErhy8pYZn7YAxe9//BbES9CHMeebfAa2oZ+?= =?us-ascii?Q?kQGLuWk2mrZRkno/6tfo2DS3Qjc4RA74w//va/h7WSDGN664msS0j3nzuRCN?= =?us-ascii?Q?lM97EJ2Ect2zWWyHUBDMA0LkgxNKxmjAqTBsIRj5KD7CMJzI281OQWTDJfFS?= =?us-ascii?Q?Zii8OOfPI5/X5Ccz2WbTWTt5rhOUP4atmPUtJRU9p/XxYX+gzT+SaZbkO7Zh?= =?us-ascii?Q?fJu7w+JRJ6iRjIMnYXnlx0/YgRj2LghK9k3C4EDhtJwceTikIzUfOkXhKjVS?= =?us-ascii?Q?U3gH5kBH10xVIoO0UTHwLTYWbB4UwxXAt0wCQct8wHjJWkOXIMUVdzbUKG+o?= =?us-ascii?Q?cYCw+zAPXebzpCrvvrx6aMkZifmqRsdnTs57LxRSKfzRBUm+cyNDygNSTksb?= =?us-ascii?Q?mF3xTEpGEDiWAox3E9ZwjgvyUfEfZ96+0qWobEUTHnzKIbprzSUoWo6bB9Ux?= =?us-ascii?Q?fiLkKhOQ6VOd7rlSYSZtieh9FWGnz13cSOCc5ynrNhiS5OjpJoiJZj55eJSa?= =?us-ascii?Q?+OSCSYH996N9sb0ccBqwV7+YpcFQVijY9/Ix0npvMuiHU+rRYP8LnRvTHE/o?= =?us-ascii?Q?QIRR9G9XNcDe2RDHH9LlyAwqs/yd1DOgcur55z3R4MhJNeqgVBC6MQnp/eU2?= =?us-ascii?Q?UFGab/9SDAhQ93MwORbVWEZwmDWz4qqW38r00Sm9Rj9jWuwiowkpxNKUegOS?= =?us-ascii?Q?uifH1rv49+MKCtRbtHHIYy15NSfKD5du9EOf0aV96ezpZnw9o7KyvpuPe8ot?= =?us-ascii?Q?0tdH/b/oUIn1VKf6kYUVYpMyotMfgq21zMajuadI3HgXwDwn4rwRr+OY/7su?= =?us-ascii?Q?DiHgGV6AlbUOA8svIBp2f1y/dM4RTlDBZ16uPdXPzxCbFw4ZITT77u8ZSPIE?= =?us-ascii?Q?Ev0ZpknKENaVjs8Cz6/Q4hGxGlLRQNx9x3HVz0k0Mg56yPU7lkqRodc8+UVT?= =?us-ascii?Q?5Ijk/9pciWzaQKkHZwpaEa3UEGwkKt6n81TiqcgoZGhQ2pSJyVdyDFu/qw43?= =?us-ascii?Q?WTLoyZpy8JegFMRY9baI9IqPkNdlZHsOQtcVtR96rIAs5qWXNm8UL1oRAsAG?= =?us-ascii?Q?xnD2lvOG3Q5UMruGhPQXIUiCN1qhR80zAJg+e369SvVN222Q5g5vB0FG+6pO?= =?us-ascii?Q?cK07ECIQbMqr/v7+tr2myDNq3lLDjgvAfE+sW3TFvBMVcC0UDQ2UzUQe7YOx?= =?us-ascii?Q?7HgnPHy7kvxxQ1iTfBRmWDIA?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddaee6a3-b82a-48d1-658c-08d90a58ded9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:26.3656 (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: XxPWNYla4bR+z99dIJDvYO6hrxwTbaq7iVToYzMPDSCcpJbxBY8zfJHP3uwXqE6yjeVfrwVKKWtF0XHuuJialPDZVIQ65lStMWxhQRzg7hw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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=2a01:111:f400:fe0d::70b; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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, 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) Content-Type: text/plain; charset="utf-8" We have too much comments for this feature. It seems better just don't do it. Most of real users (tests don't count) have to create additional reference. Drop also comment in external_snapshot_prepare: - bdrv_append doesn't "remove" old bs in common sense, it sounds strange - the fact that bdrv_append can fail is obvious from the context - the fact that we must rollback all changes in transaction abort is known (it's the direct role of abort) Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 25 +++---------------------- block/backup-top.c | 1 - block/commit.c | 1 + block/mirror.c | 3 --- blockdev.c | 4 ---- tests/unit/test-bdrv-drain.c | 2 +- tests/unit/test-bdrv-graph-mod.c | 3 +++ 7 files changed, 8 insertions(+), 31 deletions(-) diff --git a/block.c b/block.c index c5b887cec1..1e7e8907e4 100644 --- a/block.c +++ b/block.c @@ -3213,11 +3213,6 @@ static BlockDriverState *bdrv_append_temp_snapshot(B= lockDriverState *bs, goto out; } =20 - /* bdrv_append() consumes a strong reference to bs_snapshot - * (i.e. it will call bdrv_unref() on it) even on error, so in - * order to be able to return one, we have to increase - * bs_snapshot's refcount here */ - bdrv_ref(bs_snapshot); ret =3D bdrv_append(bs_snapshot, bs, errp); if (ret < 0) { bs_snapshot =3D NULL; @@ -4679,36 +4674,22 @@ int bdrv_replace_node(BlockDriverState *from, Block= DriverState *to, * bs_new must not be attached to a BlockBackend. * * This function does not create any image files. - * - * bdrv_append() takes ownership of a bs_new reference and unrefs it becau= se - * that's what the callers commonly need. bs_new will be referenced by the= old - * parents of bs_top after bdrv_append() returns. If the caller needs to k= eep a - * reference of its own, it must call bdrv_ref(). */ int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top, Error **errp) { int ret =3D bdrv_set_backing_hd(bs_new, bs_top, errp); if (ret < 0) { - goto out; + return ret; } =20 ret =3D bdrv_replace_node(bs_top, bs_new, errp); if (ret < 0) { bdrv_set_backing_hd(bs_new, NULL, &error_abort); - goto out; + return ret; } =20 - ret =3D 0; - -out: - /* - * bs_new is now referenced by its new parents, we don't need the - * additional reference any more. - */ - bdrv_unref(bs_new); - - return ret; + return 0; } =20 static void bdrv_delete(BlockDriverState *bs) diff --git a/block/backup-top.c b/block/backup-top.c index 589e8b651d..62d09f213e 100644 --- a/block/backup-top.c +++ b/block/backup-top.c @@ -234,7 +234,6 @@ BlockDriverState *bdrv_backup_top_append(BlockDriverSta= te *source, =20 bdrv_drained_begin(source); =20 - bdrv_ref(top); ret =3D bdrv_append(top, source, errp); if (ret < 0) { error_prepend(errp, "Cannot append backup-top filter: "); diff --git a/block/commit.c b/block/commit.c index dd9ba87349..b89bb20b75 100644 --- a/block/commit.c +++ b/block/commit.c @@ -312,6 +312,7 @@ void commit_start(const char *job_id, BlockDriverState = *bs, commit_top_bs->total_sectors =3D top->total_sectors; =20 ret =3D bdrv_append(commit_top_bs, top, errp); + bdrv_unref(commit_top_bs); /* referenced by new parents or failed */ if (ret < 0) { commit_top_bs =3D NULL; goto fail; diff --git a/block/mirror.c b/block/mirror.c index 5a71bd8bbc..840b8e8c15 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -1630,9 +1630,6 @@ static BlockJob *mirror_start_job( =20 bs_opaque->is_commit =3D target_is_backing; =20 - /* bdrv_append takes ownership of the mirror_top_bs reference, need to= keep - * it alive until block_job_create() succeeds even if bs has no parent= . */ - bdrv_ref(mirror_top_bs); bdrv_drained_begin(bs); ret =3D bdrv_append(mirror_top_bs, bs, errp); bdrv_drained_end(bs); diff --git a/blockdev.c b/blockdev.c index a57590aae4..834c2304a1 100644 --- a/blockdev.c +++ b/blockdev.c @@ -1576,10 +1576,6 @@ static void external_snapshot_prepare(BlkActionState= *common, goto out; } =20 - /* This removes our old bs and adds the new bs. This is an operation t= hat - * can fail, so we need to do it in .prepare; undoing it for abort is - * always possible. */ - bdrv_ref(state->new_bs); ret =3D bdrv_append(state->new_bs, state->old_bs, errp); if (ret < 0) { goto out; diff --git a/tests/unit/test-bdrv-drain.c b/tests/unit/test-bdrv-drain.c index 8a29e33e00..892f7f47d8 100644 --- a/tests/unit/test-bdrv-drain.c +++ b/tests/unit/test-bdrv-drain.c @@ -1478,7 +1478,6 @@ static void test_append_to_drained(void) g_assert_cmpint(base_s->drain_count, =3D=3D, 1); g_assert_cmpint(base->in_flight, =3D=3D, 0); =20 - /* Takes ownership of overlay, so we don't have to unref it later */ bdrv_append(overlay, base, &error_abort); g_assert_cmpint(base->in_flight, =3D=3D, 0); g_assert_cmpint(overlay->in_flight, =3D=3D, 0); @@ -1495,6 +1494,7 @@ static void test_append_to_drained(void) g_assert_cmpint(overlay->quiesce_counter, =3D=3D, 0); g_assert_cmpint(overlay_s->drain_count, =3D=3D, 0); =20 + bdrv_unref(overlay); bdrv_unref(base); blk_unref(blk); } diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index 5b6934e68b..a6064b1863 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -138,6 +138,7 @@ static void test_update_perm_tree(void) ret =3D bdrv_append(filter, bs, NULL); g_assert_cmpint(ret, <, 0); =20 + bdrv_unref(filter); blk_unref(root); } =20 @@ -202,6 +203,7 @@ static void test_should_update_child(void) bdrv_append(filter, bs, &error_abort); g_assert(target->backing->bs =3D=3D bs); =20 + bdrv_unref(filter); bdrv_unref(bs); blk_unref(root); } @@ -380,6 +382,7 @@ static void test_append_greedy_filter(void) &error_abort); =20 bdrv_append(fl, base, &error_abort); + bdrv_unref(fl); bdrv_unref(top); } =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624162; cv=pass; d=zohomail.com; s=zohoarc; b=cg8NKn2YzHvwQeY5Wl+y2IWalXLRFiIMPRsZqiCF3S6+09SP6eHBdBUDb0FRpnsAFuuL4akNUF55GL9VFdZ1abK0qNTuHYTmLWeOtqnf2jFuQn24uMXF4mxoBEw+r1bDpke4ZvBU/l+gkWAFp+XvdW3S5n9lAUf0cqbXHgoMoto= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624162; 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=CZWiUiLbDBPSH51cYG45BETE4Y0hVNBIrv+eT9F7UTI=; b=OV4F3/Mvd8KVlesq//IaqSiOUQDaO8d1p67lkdhBYu5v65DzqOB76+CuZ5gJE45X/YNDc7iRnEpjzV4f6pUb9QtTRPLibNro85HAoIugeKD+ZmUWX5nedIcpfxVnrd5fe1QQNAFp/009aJlFOZ3N2A9EU8p6TDSsmsPuL4qu3xg= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624161930654.227478357587; Wed, 28 Apr 2021 08:36:01 -0700 (PDT) Received: from localhost ([::1]:52124 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmEK-0003tC-9A for importer@patchew.org; Wed, 28 Apr 2021 11:36:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58550) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxj-0005m8-QF; Wed, 28 Apr 2021 11:18:51 -0400 Received: from mail-eopbgr70127.outbound.protection.outlook.com ([40.107.7.127]:16352 helo=EUR04-HE1-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 1lblxg-0001nK-7c; Wed, 28 Apr 2021 11:18:51 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:27 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:27 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AphroLkzChhfqK8xEBwXuzoW+Eyn+THNhxVnZVVGUTHLOSvMce1StepZ6fEAWmnRS7H7t041tL8sYkn6CT4pRXApqn3n/PsIfirfmdWEl8QZlVG1U7r/otOw/BGU7COYDFrl+onmfjWGaW55m5sq127p7bFW1OqetlmJQBqUC9e0x9fQrzuXRPkt9n4f4IX5VWcNs39OSS1ZFEWvQ176h4zI0QZwM3pKksLxzCW6BmQsqS4cHB215AnFYoCeTemjWCXDpg4PO0CQ35H24+0pG25bRv6Z4FOCBJtXK7bJLiVaG1spt3jsU1VhtfCyVO6F2/gESZmCBk3vmy+X9IPVzw== 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=CZWiUiLbDBPSH51cYG45BETE4Y0hVNBIrv+eT9F7UTI=; b=JjDXwaUm2ewmka6SEYNusjhW2YwTgUyKT37FolzpkGxJBrzUMoRlNQYnFRwPRPNvfUVYgFBnAr+znClBzjjwkGvr6QHlFrNIHs1Ztu+7TBNzUGm/CA/gfbeiikmheugD/63IdYiZ1mGP9MeUz5KvRjnujBywgGDfklNRdNFVslym8OejDpFKxsv4D9VpugKleblxMyZzGr5+oOdeDsirQ3+yHU1zaR48B0VcnaHY8dSG5p9F3CF4eyXGXJgbe4+hidhIdPgdeimAojmUEF5u0Y4l5Sgm+GDfcylcYNXdt9MgkphTEG/IezNf6xWe9kbfd6KOe3gM5Hvs+w51F1uT8A== 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=CZWiUiLbDBPSH51cYG45BETE4Y0hVNBIrv+eT9F7UTI=; b=HdSOMi5W+HjclRO4TckWQ6lhFcUdLcAf0wTbraTwIUdEHhxivMOHf/ffIqpTurs9+j74kRAH8lkew6iOMuq3HZekTMN5eAbSWFnrFgVRKU2f8ITTvTtWqRqwGF1nvmzzNPvrNpvTOlY59pgJEdehWTVGwO7XbHhGN2gr6f/dRx0= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com, Alberto Garcia Subject: [PATCH v4 05/36] block: BdrvChildClass: add .get_parent_aio_context handler Date: Wed, 28 Apr 2021 18:17:33 +0300 Message-Id: <20210428151804.439460-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 15ff5ee6-c081-43f7-798f-08d90a58df95 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1360; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nZwvYAJC0sCuBNZmpSWhOK/mH1pJYeLV36/gl2ckuuUPXO34LtW+SvNs0CUEImdZ6fNCPnTqS6S7+8tAGRV/BACATeO7sFbL2vr79o+rJtuU9LoWC/rsY71kOdCsSuJmhmB4rpC13yyK5Iuec2B6z3qj6eko8JFG2HIkoKdtWFPBXVQ3FJNoS6EvsC+GxsdW6vXsb54pyUn+KkjhsYkEmR5StBd2+pHBcO/paWEDOqrnzgX+Qu3a2iArx6ICM3JCPy7OduJGMKMEisV8bh53ymzxDdmLtLbqkVw2XDOQSKsreBqZhXEf8YhG/tKK/8lwlbmCSWhy0XLTxXvq6FOMCslH4Q98LK2FXxwZ1ZOmpJHFDPDv6Mxq3ECx4svyiI+pgEkSBnckTiMyAi9wMkapCUZG0ruDyCryGGnd8fDKVd2BaQem+rVzuyqIaPrn5EPQ/N8A2hsxq1aR6xHx5643YOI0NCeuSl4h1pf/eh9PvPwwUq/3gW4cH1T37jMFdMXfhC1CKyPMAiZxnaJt4i4UktTzaIfyTt5Ex8YNzC+I60qju/AWygq/UPAkhHsq1FaT9s7o3PaQ4EaDgwTAXBs3qkCrLh4oOe0dOcJAvye6casrBQv424j3i1/Re/PIHstHXPa8wGtL7lQ48p7sAEUOasdTWSGgcgbZS+9dcR3+i1cd3xSofNvWgYF82SYCaCc31M9LOmZkYvl7dLNZFz2qCw== 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6666004)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013)(142923001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?DXXokVg0wE+ePPNRObz3QkQRA5k7kR3bMcKzCvPvO0Bz88o00srPTnttPj0T?= =?us-ascii?Q?Rl2J7EU6gPCNuIeQ/jGoCZ8CpIaNH5UA7FnXfSj1JCj/bhAqF/QJlcnX+UQK?= =?us-ascii?Q?PTMrTQEgDL1BxP5w9My108DcRY2rb5AXTycWaXNqP9hbgv1H0szSWDy5aUL3?= =?us-ascii?Q?J5n6rGESP3aGefMhGYiOGohHhSNdu2jYBA2bjm5BuyLv2i2s4Uio0+metjki?= =?us-ascii?Q?ErcWO8b7pgMSix4yGbrERmniW85+r2eSaWgS+aKcjazOMx6WjW+NladnNc3F?= =?us-ascii?Q?PKZ1iXzgZwyvsF3RHpNk+/rh5IZmsqcBY0To+DXH+pxwAbcz9ZswYpsV876e?= =?us-ascii?Q?4JmIqdXFJ70GBaiJgpIzSXsAQqPl/InhsTXzV99NAEh2dB1L37x/1CjWApbZ?= =?us-ascii?Q?CCJ+Nhn2c6aqB6BlbsE93tsIo6I/SsDO6grlFWCveT6l9jIDLNz+k4aZhkc3?= =?us-ascii?Q?YwKOWmFy4cfTgBV4gKB7g+Cb15E7jb3glKfeD2//9D2mJIasWUwPGq0+ypcP?= =?us-ascii?Q?c4MzMCNyai0kUvKTxg4hiyyHhpGMiy6ewytg3Tj3cpaZKhdejfQ6qeVNR2zC?= =?us-ascii?Q?aMWr3SYeQe5mHDLdbYvQ28nexU/3gKfHqlrhnODpIHbhDmiM+ZfP3Kh9zPnc?= =?us-ascii?Q?W4LK1/9cr7y8YKi8pqSej7LN1uBOlid0bxb8QDh59R63Lu3dIUsUqlzuIw52?= =?us-ascii?Q?z44KntoR/aWgIAIJHgjlCrh3ln78e9iSSUpTxjjzrHhA53hSOdAU530CNaKH?= =?us-ascii?Q?F+LkfNCY81oNGQHS5t3rWf6S6CQZi3tsftf1yt+wjMJ+lBd7NZCc6X/gDDCn?= =?us-ascii?Q?rbptl+wYGCYW1QlauOOAfpZfXKCLcmwOIrLuILtqqR9KUryPcWtIu1japHoV?= =?us-ascii?Q?JyukSL9wYeChZ5abo4k2rhQoIRoXJGA4Ys2+UFNlJ78lXdnytahmGo+6tU8G?= =?us-ascii?Q?s46iP/kIIExKWFjT4tHWhv74/c5baLfmb+F+PyWxwF7h9qI4JozknjfTrFOR?= =?us-ascii?Q?TwJuYdjOkIfUDJLbcyNoq5cuROSN3I0o+kjW8E8TIWDHgVbOSwZkR/yk1SYs?= =?us-ascii?Q?xjtTrtBnSr4vUXbnw6oZkmj9JxbLO+MKJtl9HCYwLGZ5BCJ3ad12z1p6Cg50?= =?us-ascii?Q?X/7Sm4rsNrTIlcJBl9ekEuMDuJ/RWN9Ldi13mSWCncBwrAld8+mwpX36iPg6?= =?us-ascii?Q?iUJvhgCyrXKyIrCLnZLFRnTlvaJkPm6bE6hyweHtiT/cc+wJT4QoWHwa9/YM?= =?us-ascii?Q?gu0ckJARWltI///WLAbXWKduVJ49TYo8klgjXel6MIMaLr4k6DV0HJSmT4JM?= =?us-ascii?Q?pS8PrV7sKLYpSZdbATKTrZ0q?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15ff5ee6-c081-43f7-798f-08d90a58df95 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:27.5494 (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: gPfVAmURASQ0htPaDs2NCmnqZQ75nr0qt8QbjCqA3oE0fLTSuIkk0aDI43dX2A/Yyf6ONe8qRSdu6CzuK/4YKp6ofDgoS2hHx7QXLSk18IM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.7.127; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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) Content-Type: text/plain; charset="utf-8" Add new handler to get aio context and implement it in all child classes. Add corresponding public interface to be used soon. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Kevin Wolf --- include/block/block.h | 2 ++ include/block/block_int.h | 2 ++ block.c | 13 +++++++++++++ block/block-backend.c | 9 +++++++++ blockjob.c | 8 ++++++++ 5 files changed, 34 insertions(+) diff --git a/include/block/block.h b/include/block/block.h index b3f6e509d4..54279baa95 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -702,6 +702,8 @@ bool bdrv_child_can_set_aio_context(BdrvChild *c, AioCo= ntext *ctx, GSList **ignore, Error **errp); bool bdrv_can_set_aio_context(BlockDriverState *bs, AioContext *ctx, GSList **ignore, Error **errp); +AioContext *bdrv_child_get_parent_aio_context(BdrvChild *c); + int bdrv_probe_blocksizes(BlockDriverState *bs, BlockSizes *bsz); int bdrv_probe_geometry(BlockDriverState *bs, HDGeometry *geo); =20 diff --git a/include/block/block_int.h b/include/block/block_int.h index 88e4111939..737ec632c4 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -789,6 +789,8 @@ struct BdrvChildClass { bool (*can_set_aio_ctx)(BdrvChild *child, AioContext *ctx, GSList **ignore, Error **errp); void (*set_aio_ctx)(BdrvChild *child, AioContext *ctx, GSList **ignore= ); + + AioContext *(*get_parent_aio_context)(BdrvChild *child); }; =20 extern const BdrvChildClass child_of_bds; diff --git a/block.c b/block.c index 1e7e8907e4..2833912436 100644 --- a/block.c +++ b/block.c @@ -1394,6 +1394,13 @@ static int bdrv_child_cb_update_filename(BdrvChild *= c, BlockDriverState *base, return 0; } =20 +static AioContext *bdrv_child_cb_get_parent_aio_context(BdrvChild *c) +{ + BlockDriverState *bs =3D c->opaque; + + return bdrv_get_aio_context(bs); +} + const BdrvChildClass child_of_bds =3D { .parent_is_bds =3D true, .get_parent_desc =3D bdrv_child_get_parent_desc, @@ -1407,8 +1414,14 @@ const BdrvChildClass child_of_bds =3D { .can_set_aio_ctx =3D bdrv_child_cb_can_set_aio_ctx, .set_aio_ctx =3D bdrv_child_cb_set_aio_ctx, .update_filename =3D bdrv_child_cb_update_filename, + .get_parent_aio_context =3D bdrv_child_cb_get_parent_aio_context, }; =20 +AioContext *bdrv_child_get_parent_aio_context(BdrvChild *c) +{ + return c->klass->get_parent_aio_context(c); +} + static int bdrv_open_flags(BlockDriverState *bs, int flags) { int open_flags =3D flags; diff --git a/block/block-backend.c b/block/block-backend.c index 413af51f3b..3f656ef361 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -298,6 +298,13 @@ static void blk_root_detach(BdrvChild *child) } } =20 +static AioContext *blk_root_get_parent_aio_context(BdrvChild *c) +{ + BlockBackend *blk =3D c->opaque; + + return blk_get_aio_context(blk); +} + static const BdrvChildClass child_root =3D { .inherit_options =3D blk_root_inherit_options, =20 @@ -318,6 +325,8 @@ static const BdrvChildClass child_root =3D { =20 .can_set_aio_ctx =3D blk_root_can_set_aio_ctx, .set_aio_ctx =3D blk_root_set_aio_ctx, + + .get_parent_aio_context =3D blk_root_get_parent_aio_context, }; =20 /* diff --git a/blockjob.c b/blockjob.c index 207e8c7fd9..160bf38b19 100644 --- a/blockjob.c +++ b/blockjob.c @@ -163,6 +163,13 @@ static void child_job_set_aio_ctx(BdrvChild *c, AioCon= text *ctx, job->job.aio_context =3D ctx; } =20 +static AioContext *child_job_get_parent_aio_context(BdrvChild *c) +{ + BlockJob *job =3D c->opaque; + + return job->job.aio_context; +} + static const BdrvChildClass child_job =3D { .get_parent_desc =3D child_job_get_parent_desc, .drained_begin =3D child_job_drained_begin, @@ -171,6 +178,7 @@ static const BdrvChildClass child_job =3D { .can_set_aio_ctx =3D child_job_can_set_aio_ctx, .set_aio_ctx =3D child_job_set_aio_ctx, .stay_at_node =3D true, + .get_parent_aio_context =3D child_job_get_parent_aio_context, }; =20 void block_job_remove_all_bdrv(BlockJob *job) --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623955; cv=pass; d=zohomail.com; s=zohoarc; b=g20H+lJyihSszrg1Dsx7HDKEPRTOZFBl4k1awZ5B8lXSOtf0STXlgiDLHYghkogsWjEeIi0q6Hg7+ZU21djqBupLItev7Ev6OVMV5StcV/HTQcPgbKubYLWDOYe9gtTNgMvX80/ftTSLg+j1eRl/3pgHVeGEZFG7cQ26bZPmNGQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623955; 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=nTxNDb/H5pG6wn4VlXrTlpgMuCCoiDfiJ6xRPS/7nn8=; b=DBaRjmWjkB0cNcy+mWEz1vBIFzn7rksyBB//nCAXNNv87vMKiIppB338jLXvMgfMxnQYKVPMKSQwi9DVIaJV4O/CeD/+8w42euI/0vVqNfkM3XId5eOTyhbDSk0G2va4WcNH7H/Ul4Q5xvzgSDbTWgI6Pd9xo6FnvdBwJgWhadg= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623955434271.6309140280837; Wed, 28 Apr 2021 08:32:35 -0700 (PDT) Received: from localhost ([::1]:43724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmB0-0000Aw-IT for importer@patchew.org; Wed, 28 Apr 2021 11:32:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58522) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxi-0005lX-Ka; Wed, 28 Apr 2021 11:18:51 -0400 Received: from mail-db8eur05on2106.outbound.protection.outlook.com ([40.107.20.106]:17025 helo=EUR05-DB8-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 1lblxg-0001uP-Io; Wed, 28 Apr 2021 11:18:50 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:28 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:28 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nwa+mEYn4xwcmLmXdgpe2rEUBUcvKRfAyXqWuy6W5eEAB5N+JMlzKMl6v9JOy3J4E16eBhXx0eV6DSomWx+uew/5G6aPGg1M+4gqWsGtMruKrpLZ/Xny7EXuV5P837cUtmAtBnv7KEb2Nqadg/wAAZACP9gBRY/JYXCURWB7SeiXhAomLcyK8Sf+HJE2dFVz+fwKLASTVICjL0C21pj6HYix0jsjqYDmzHoxF2JVLwSmxNVFiaQlMGO0+d5ylJN3nL45B0waJeb1UlaKAf+4I2nGEoHu+8rN8Z3+1TeeVnUa85+oWV7w94JYRggUc+Epxwqkvn92Bl8o/LRLpbwaSw== 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=nTxNDb/H5pG6wn4VlXrTlpgMuCCoiDfiJ6xRPS/7nn8=; b=mBVAD/AlXw4ZXnScNyNh9ZHmVjrzpOboE7OT3fmbYCXVTyM9BZ3FVfBb0CHztUPmKL3AFODCmJ8DAJdRQtb+wv6/8Gk93w6S/8eFaznZkGfDkwt29NufyPSAcFgnyr1nIWevmyjy9g+B9C4htLzkFFRHl02m4iQjqBc1vrQSsn8Zut2ma3/2JbZiFbJF6+FLaOmt8eVdWzz79f9KIjSW1Z7+opxj+8VOWSEcSt6jd+AzD99DW+9dL/8kyUOnqQ1H/oiBvjiqcT7X4SyFH44uWDPwboLvxAVdvTDGlyGs+vRxwtf4c/zMW678RMyGqwpb5iQXnAmsEPyNLAgFrg5PXQ== 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=nTxNDb/H5pG6wn4VlXrTlpgMuCCoiDfiJ6xRPS/7nn8=; b=gkoaNNMQ82GyWTEWzsWvsc8ReeLOohA9j7FqQlkDBEMMqc38zASKWOkJD+q6VbZ98yZGkpNvf82E4Ir6OoQoy+RrTUJL2AG7waceXnzJ5fZsDZdXFekjmMQG1APbapfYdYZcs5LeEA32zCATu3pw+thGN3w3kQW9ynniRDYgGrQ= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com, Alberto Garcia Subject: [PATCH v4 06/36] block: drop ctx argument from bdrv_root_attach_child Date: Wed, 28 Apr 2021 18:17:34 +0300 Message-Id: <20210428151804.439460-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 8aa9c5e3-563f-422a-9a2a-08d90a58e047 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:576; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CaJKxd5YAbQwplqd6oOG6ThXJHrjr7792uWOziX4tCNQmSdnnvjXNXabAP8fIhWOa5GPZlXZlTE8jTPOC68mbwYvtKHvuvYzoI7PpN4jvNPLmyql4AKLlnm2qUUx+qbgow+savVubWsPk8X9FVIdZDCwVxNNWrzOHUGIhmXsrTQiLtufrJqsv/kaI4zfl1Gx6ZEjzsQNZ6V8s3IAwZpJRj1XwK8nPC9WDbhQNZG7zga3vOHylObC/uHJbbxdDBusVGUi1ActCGv6O5gEYEkaw9ao8tqPY6PfyuTOI9AmGzRpnaYU/PxvuExFpjwKGb6fOviYVujQPFqfmuXGQ4u4xGoI35SG6furdqWsU2Kac2t4jmhReIbdLNrfhGtiUXjni89JrU/rb62Qykl04fRQ3KndvBNB/LYzRJZX6Zawzo1o3tLmZn6FgBMxPf3Gg4df+wXIJiC5ThhjO/o+oeglOO0WfPaGUSRgIRyqQbKYYeYqIib1sRN/iSD0v2ghNfrmovub48lXuPm//kjLzmlzFlc5mU1F0pK9NXod2BqP4bGwjjh/u8/eYZ7oNdIgEjcneFtIv1wpf+a7uzGnX+k27V8ekUprDzDfXUTlE55LCDBS1+2BnQwosUFtL48l7bFL3UHvY0p7L+ROBImk0Zd2c7ozdcX+3ntxOEaNj+qrna4WXokLCqKvDJPyUI15BNVz 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6666004)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?az1kdouxkF1tO69tbUBlKPAIDR5z+rPZkqRFefY9vHvFmAroao81Wn+dYekS?= =?us-ascii?Q?06uXts71BmNLoBI6yXl1pJiBI3+6ZQ6vzXH5qw00Y6J+7I6UQ31LUsiTnTUJ?= =?us-ascii?Q?jxXfUf95HUP5MFs0UjaMoaJKAzRZDsNzOaGXlqe4svLCbkyoEnP7Yhowmvi5?= =?us-ascii?Q?9bDLIWR9+VcXYLwvw8PfjVTuGb4zRpe+uMa15GN9AUA7cbGjTflzS3J2slqY?= =?us-ascii?Q?zykGLkfozbYAGxf8cPlrbs+cNFiSwSWZEu/K0tdV8+hzGb99h0anhyS+Eoix?= =?us-ascii?Q?GV4KcPDBW/CCPzVoAhXddIBjltjPgIUs8wCYwkYmwQr3c5Q5u8cLEx3+JBOL?= =?us-ascii?Q?zXBA9q/XQflKINCRp0kZmp7fPB5X2ZSDobdWG6NWARyXJQUgqHppDxgdeafA?= =?us-ascii?Q?9FVVWnYZ+oXmjs2DT0PKWxYc1gkIzwIp/HF9iZ7f7S8V8l7hZ9cp0EAUnN2T?= =?us-ascii?Q?kTpLcR8OPeEfhvRw1HR7Aj66GCRL97GQDXJ0fEeBwpGajuE6XfJjzvoEnU96?= =?us-ascii?Q?PO+w9X0IN5kzJlbR5kj72i+icqIXyJXWNrbQZkxY9VK9rcKGOQJ56E8csVL4?= =?us-ascii?Q?QA6CSmfcZTf1kaON0KXhFcKnOkG6BWlCSwMPnU8Foxk3ITc3oxNq7Nfz9Om9?= =?us-ascii?Q?NTskTIayq9N6bykhcxwmC/vJ+K9dlDa+5jSaSstnP65s7A7ZK0Y6ZMntR1Ur?= =?us-ascii?Q?TSLyYdG7qYFUmS0pJag8ff8o+2Nttkd+uVpx+MD9eU7TVTwoHWAD7YeqTN0S?= =?us-ascii?Q?Cpsx5COBE2VkQVW8vppyud68y9+rFSYArzbHv+zoO519ughVhkUG2L0hbNxR?= =?us-ascii?Q?gP9xDKzdOgFD/4DZgGh9W0R3TbeGzssu0e24GGMN6HNDyShAAmkGhz1zrTIE?= =?us-ascii?Q?B/eNat6CNJsAlEh+E6oxjeS/oQ4qlbwSBDWuB7+jCv3pf28cngbn414+sf9A?= =?us-ascii?Q?p9G+GTreQR6dH9ISGU2n+6RHBsg9/5u7iw8HptNCr31A8F2jn1eTydCxMvdP?= =?us-ascii?Q?zXRk4jjN1n8lG63IwDRCUvRs9G2lFkq/tfHPUtje8m2N9KG8uORA49hq6eYV?= =?us-ascii?Q?bMD4WgQJ113KS0yGZb0vfvdtfoOnWW6M9pCcywCINrSfRVxKvdpDD7ILIKF2?= =?us-ascii?Q?NGZA44REj3vTiCmCLnJtwh6ko5nu8RoY4eDtQITKhmU4kf3suDGB6TtFMwMT?= =?us-ascii?Q?Cffveh2AlmMEQcUQsjTdnKcoeyWiCOGz0ZFMpksKtpOIEnzzzLmBrk6ynI2+?= =?us-ascii?Q?oXZSLqoDACcGHJk0lXOY6MLq17/OU65NblnsXky1QmpgC9Tsr8Aes8Q55H5R?= =?us-ascii?Q?gAan7a7HeDXX/IUeQg26zSsL?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8aa9c5e3-563f-422a-9a2a-08d90a58e047 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:28.6964 (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: SQJTmTDvUYeRNWRIwNYxjezJNbKrcTsoFS9KBMEBUqFbBwTG16TnXIK/owEzEhbn32rCBo2JNOctvV0dcd1tet08kltuHco8a/Tnwd7rdBE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.20.106; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Passing parent aio context is redundant, as child_class and parent opaque pointer are enough to retrieve it. Drop the argument and use new bdrv_child_get_parent_aio_context() interface. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Kevin Wolf --- include/block/block_int.h | 1 - block.c | 8 +++++--- block/block-backend.c | 4 ++-- blockjob.c | 3 +-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index 737ec632c4..dd2de6bd1d 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -1308,7 +1308,6 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState *c= hild_bs, const char *child_name, const BdrvChildClass *child_class, BdrvChildRole child_role, - AioContext *ctx, uint64_t perm, uint64_t shared_perm, void *opaque, Error **errp); void bdrv_root_unref_child(BdrvChild *child); diff --git a/block.c b/block.c index 2833912436..54436c951e 100644 --- a/block.c +++ b/block.c @@ -2700,13 +2700,13 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState = *child_bs, const char *child_name, const BdrvChildClass *child_class, BdrvChildRole child_role, - AioContext *ctx, uint64_t perm, uint64_t shared_perm, void *opaque, Error **errp) { BdrvChild *child; Error *local_err =3D NULL; int ret; + AioContext *ctx; =20 ret =3D bdrv_check_update_perm(child_bs, NULL, perm, shared_perm, NULL= , errp); if (ret < 0) { @@ -2726,6 +2726,8 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState *c= hild_bs, .opaque =3D opaque, }; =20 + ctx =3D bdrv_child_get_parent_aio_context(child); + /* If the AioContexts don't match, first try to move the subtree of * child_bs into the AioContext of the new parent. If this doesn't wor= k, * try moving the parent into the AioContext of child_bs instead. */ @@ -2786,8 +2788,8 @@ BdrvChild *bdrv_attach_child(BlockDriverState *parent= _bs, perm, shared_perm, &perm, &shared_perm); =20 child =3D bdrv_root_attach_child(child_bs, child_name, child_class, - child_role, bdrv_get_aio_context(parent= _bs), - perm, shared_perm, parent_bs, errp); + child_role, perm, shared_perm, parent_b= s, + errp); if (child =3D=3D NULL) { return NULL; } diff --git a/block/block-backend.c b/block/block-backend.c index 3f656ef361..e4892fd6a5 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -435,7 +435,7 @@ BlockBackend *blk_new_open(const char *filename, const = char *reference, =20 blk->root =3D bdrv_root_attach_child(bs, "root", &child_root, BDRV_CHILD_FILTERED | BDRV_CHILD_PR= IMARY, - blk->ctx, perm, BLK_PERM_ALL, blk, = errp); + perm, BLK_PERM_ALL, blk, errp); if (!blk->root) { blk_unref(blk); return NULL; @@ -849,7 +849,7 @@ int blk_insert_bs(BlockBackend *blk, BlockDriverState *= bs, Error **errp) bdrv_ref(bs); blk->root =3D bdrv_root_attach_child(bs, "root", &child_root, BDRV_CHILD_FILTERED | BDRV_CHILD_PR= IMARY, - blk->ctx, blk->perm, blk->shared_pe= rm, + blk->perm, blk->shared_perm, blk, errp); if (blk->root =3D=3D NULL) { return -EPERM; diff --git a/blockjob.c b/blockjob.c index 160bf38b19..2fe1d788ba 100644 --- a/blockjob.c +++ b/blockjob.c @@ -229,8 +229,7 @@ int block_job_add_bdrv(BlockJob *job, const char *name,= BlockDriverState *bs, if (need_context_ops && job->job.aio_context !=3D qemu_get_aio_context= ()) { aio_context_release(job->job.aio_context); } - c =3D bdrv_root_attach_child(bs, name, &child_job, 0, - job->job.aio_context, perm, shared_perm, jo= b, + c =3D bdrv_root_attach_child(bs, name, &child_job, 0, perm, shared_per= m, job, errp); if (need_context_ops && job->job.aio_context !=3D qemu_get_aio_context= ()) { aio_context_acquire(job->job.aio_context); --=20 2.29.2 From nobody Sun May 5 10:02:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625399052257.7885509985482; Wed, 28 Apr 2021 08:56:39 -0700 (PDT) Received: from localhost ([::1]:36204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmYH-0004ST-S2 for importer@patchew.org; Wed, 28 Apr 2021 11:56:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxu-0005ns-Cv; Wed, 28 Apr 2021 11:19:04 -0400 Received: from mail-he1eur04on070b.outbound.protection.outlook.com ([2a01:111:f400:fe0d::70b]:4079 helo=EUR04-HE1-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 1lblxh-0001qz-PK; Wed, 28 Apr 2021 11:18:54 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:29 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:29 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EMtDQeBFKOMiI/HazPFPSVJyYTlhW/u9PjdJ7k0lOjnJutAyeZ2kB/ssg7TFAyvBekqMvbo4xV/JRDBxkPr5tWqNWO4l2PpuaAaZxgwZ84mNNec2++cPO05aZ0pvJuc0p/bSphSNFlzJYiCmO+TnTt8zcRmsSa12mnL4HrvdQzutHkodaIcrjR+u18kaw2RzJ4yp4QtAMCUMlc0xYwAfofeyd1adk3vlmQAID613LOPScJ1x/pUPkug+e1fpdUZ7X5uBmcsxo8ypenvSYLnPmCL7kSZEFi4M3XZM/sz556sTAAjUXvb4QEHjaNujQqPzKqQLcJi8IVOWEEMAFlMzHA== 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=P+vqfQPy4CMfVwavJ26Auw0ZBXkAQxypORNCWHGdaVM=; b=WFSmRAAOJoKklvmbGzeMAVde+KrejlsLYm3nTmmrSvSObcKbhBgJ/KKyXdK5vvjxwXimPrT1i1VucaF5NezhnZ/xfV+pzTpDzzVjhKEK2QPjR/TXUgR4Iq0M83LdfEvM5dZTg5dIhLSTZdQ2Is8RC60eBWCX+x6R+QfsIrz1ABFIijmAAAYmdd0dSSTYFUKHWkGU6+dmTFs5/B7vSVZUuXQ6DCRccV/iqRwQkiOuHeEr6GOMOrHpwq1/zi3t1BeYzzp278hbuAoRcWBL3t67j5E1O98zkvODoO1Z4QmFXvnvybeSkpQFHi/Ybi3C9+a+rPW9X23CM2a04Z1PPu3fMA== 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=P+vqfQPy4CMfVwavJ26Auw0ZBXkAQxypORNCWHGdaVM=; b=G5UM+ha0VWSNzwzMVYUWiTPb/j3IlZVhgzw3ZFEUC5w0owYaji5mCtJ3WNu6rcjQ3Bj/n/hDVXiva41oHq8l3RS1Ynt/IGcBQ940rsqEa9ddgqPQNPTgGwa3s3fw3OSSXW064eEAWmgjRdYLsKnj+XAv9/fic7Z7y5YqTXMyeCM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, armbru@redhat.com, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com, Alberto Garcia Subject: [PATCH v4 07/36] block: make bdrv_reopen_{prepare, commit, abort} private Date: Wed, 28 Apr 2021 18:17:35 +0300 Message-Id: <20210428151804.439460-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: a9b1a56d-8db0-4552-83a8-08d90a58e0f8 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:446; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kZU6QC0shv9TwXO8iwLm50mv8NfX4iL+URqJ8KdOb/Ay/Rk6VLhyY1ZP05UQbEE09aAtj1DOVTSTxU1UT6naVQng+iOhXH2ZkdlnRReJ5vAlVgPSAsf94ZKopDEFLY5oEbWupHBqK2/xSrA7NiAXctCLQYXso/j4q9T+sn101Rda7XrL1+8b9OykqclHPYT/W+zFTdF9NVB9WDEYT+XkOez73K/Np/6UpaTSqJsnSy4QmnYF8QRpLNfEZGi8DC1/OdNbPSXlsb1ymzFpSMOMf4PhsqnMLoxfuawF0ivjJbjt4Ibc9WKNAOFQWZLBNjxT1eHnzQX5IvyuEEw2RN91Adv5tDVnX/LzSOhXtE6j9BaUM8T2YqCGZLvswYPUdGKFeCpEC70GGMR/jS5BNJV/TfzuUHZ2G5rcZnpMJv3dYwrpVm9xZ8AGAAoOMOhia3sR4dluEkWi5du0ocydA1ugP3w38sqfU1+DIZnMoxIExyCQlpHVrwQOfn0YDXL/HryWnjAHcM99h+rYrGZ8RKNq7CYGYYzcmtUab9LAeMuvZ0dulc4ycT3O2JDOTyhAKWIQpVEwlnlub7cykrcv8h0bJh/zk9uNjiiLZwl6sIsK5cPL4BMfQH3MDgAUXM0tDhpP88g3G0bkIW7t1SebjcZevLPNneNXerknZXS1CdZnuWm4A+Vp4y5SHBm4cqFiHTV4 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6666004)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?u+ykHR6f+HOiMlRYdkCRXYCCk0xIDvx00kLuhFgQ+SqvTUcUGcVPtLP7deo7?= =?us-ascii?Q?aYk5Bzc3G4OwPtkQGGXNoqxtpeDv7QlrGIIIc+yClTpTve0fQ8O/HrLSg9lc?= =?us-ascii?Q?0oiKXv9ZQTZAwhLmswILjWB812RXwG76W7jKr2ZJVM02Hr80uvEvlX+V+m9p?= =?us-ascii?Q?NQpdyZ+pt4ltshymyCTl38fC7v4zMIdwz+Y7A8y5BBdyBbKCrLGUQOXNSJxp?= =?us-ascii?Q?MjS/IreL7PPIFgNlXkAnMkMmWgWibd/SAaEblzN9hlsgqruV37hTWEtzX2Bz?= =?us-ascii?Q?Ryx90frvDM128gu0qcPg+xbTevOdBYmvXndOW37ipqV/GL8pIzW13QRxVOIu?= =?us-ascii?Q?k2dpN8an81dVzsQ7FHGdQbIIJhxSwsXtCSjoWrpXX9uoZ4PUIa86GTEqaus/?= =?us-ascii?Q?Yj/I/FMUHhxcKPmXcy5iBMUEtPkBAWy+MMvXBnBt7l6jBRZrFpgIbenPyPwO?= =?us-ascii?Q?L+X0zPWO8tTrqbhmICz6st3/jNYLG5RpV2ennMzNvXAi0Wc9re6isdU4naLG?= =?us-ascii?Q?yRAiLAenyGN1WqZD7l8+OHFFhLSzagsDsm9Sr65cOZn0LuXGvM4DZViifLo/?= =?us-ascii?Q?q3qC52szIu7FHGTz2cLXsAnP7QeSZq5KhJW53JZNsyVnRTWjEGjqKL8tSfu6?= =?us-ascii?Q?NztW5kogl6xnqrrEYndwJC+hkso+M5mF7Za5w8jPzlu1nNJLucUi2SFppom9?= =?us-ascii?Q?SYfmsypIi3AYNzRWzYQR1itZsyX4xM+Q4YwTKKsjbLyNC5AK/o1mXuvtGRAm?= =?us-ascii?Q?phYNQTSZLDYnNPVIJlOnLAHAwb6U5huVa6F6N15ciAiZCjY1W6aN0a4QE3kR?= =?us-ascii?Q?cj1ydOPUUhfE90rWK2cof35vFFWc8FKkpPqy8lTGfRLT3w6j2VzgowUlCZ+1?= =?us-ascii?Q?UF3JXCTY3x58igHCT2SRzs9Cp0ocJ0bZe9Qvays+EPWybHa/FpDzqZ8QO+Ci?= =?us-ascii?Q?5zNouffZzm2/sw/oHfL5DN0gbx4l+Qwmdu4AvrqyVLTk3ctLq30SdFdVFwMi?= =?us-ascii?Q?4MuksE0EdOxJkH9fEqZtv2G2S0nI//4EB/O4Xzg4KwD06FpnsjgMZ3dz8qwY?= =?us-ascii?Q?nvExKZgoWxMegS/rD5Mg+umj00URNVhbN04DNPiny8EjIPvx2Dr17T7XqYKC?= =?us-ascii?Q?0oIXV4tc0n0yiP6+HKY6bz+csbL7y8INddjjXjOjR3qS9kNP4RUKhsLIDJOp?= =?us-ascii?Q?VE60Gi+UGoSkd1UJzyWTd7OmWKxgvVc6zzrOVwyxkVNzdtnITAmvAs0y2Nll?= =?us-ascii?Q?LpXkyJYYKQAnaKEbDbWpJ20G7TcaLtQl6c3PVO6c94DDRyoPlLR0U4+iU1tk?= =?us-ascii?Q?cSan4881bilDZOYKqWyecqGR?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9b1a56d-8db0-4552-83a8-08d90a58e0f8 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:29.8722 (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: 1E1ZHjv9pRRw96bRtwMYDu8wEU8lho31/UPY6MgA8kNctFEt+wP8TEO4t7xWNvPd0T+A/4xFWDcCEaxiVOp5+ykHvOWzDjKyK7/OHOigwdM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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=2a01:111:f400:fe0d::70b; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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, 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" Reply-to: Vladimir Sementsov-Ogievskiy From: Vladimir Sementsov-Ogievskiy via X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" These functions are called only from bdrv_reopen_multiple() in block.c. No reason to publish them. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Kevin Wolf --- include/block/block.h | 4 ---- block.c | 13 +++++++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index 54279baa95..16e496a5c4 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -387,10 +387,6 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *= bs_queue, int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp); int bdrv_reopen_set_read_only(BlockDriverState *bs, bool read_only, Error **errp); -int bdrv_reopen_prepare(BDRVReopenState *reopen_state, - BlockReopenQueue *queue, Error **errp); -void bdrv_reopen_commit(BDRVReopenState *reopen_state); -void bdrv_reopen_abort(BDRVReopenState *reopen_state); int bdrv_pwrite_zeroes(BdrvChild *child, int64_t offset, int64_t bytes, BdrvRequestFlags flags); int bdrv_make_zero(BdrvChild *child, BdrvRequestFlags flags); diff --git a/block.c b/block.c index 54436c951e..34c728d7e4 100644 --- a/block.c +++ b/block.c @@ -82,6 +82,11 @@ static BlockDriverState *bdrv_open_inherit(const char *f= ilename, BdrvChildRole child_role, Error **errp); =20 +static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQ= ueue + *queue, Error **errp); +static void bdrv_reopen_commit(BDRVReopenState *reopen_state); +static void bdrv_reopen_abort(BDRVReopenState *reopen_state); + /* If non-zero, use only whitelisted block drivers */ static int use_bdrv_whitelist; =20 @@ -4153,8 +4158,8 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, * commit() for any other BDS that have been left in a prepare() state * */ -int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *q= ueue, - Error **errp) +static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, + BlockReopenQueue *queue, Error **errp) { int ret =3D -1; int old_flags; @@ -4369,7 +4374,7 @@ error: * makes them final by swapping the staging BlockDriverState contents into * the active BlockDriverState contents. */ -void bdrv_reopen_commit(BDRVReopenState *reopen_state) +static void bdrv_reopen_commit(BDRVReopenState *reopen_state) { BlockDriver *drv; BlockDriverState *bs; @@ -4429,7 +4434,7 @@ void bdrv_reopen_commit(BDRVReopenState *reopen_state) * Abort the reopen, and delete and free the staged changes in * reopen_state */ -void bdrv_reopen_abort(BDRVReopenState *reopen_state) +static void bdrv_reopen_abort(BDRVReopenState *reopen_state) { BlockDriver *drv; =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625134; cv=pass; d=zohomail.com; s=zohoarc; b=YO2EMxVj04k0DHXqRDededSyKWcPOQj54HjxSE8yj9ou2RTH6H18WWE3FnbKktaenV1H4vKr23Q+e2TACbGnwT8SWmXoOP0I1bsS0ZS85j9vpjNuzNtvi0htkrizq4/ZzwGHXlYO2anruCaWqMrapThIs0CWvL/9g5HvxZBFoEc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625134; 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=F7wmAjyiCgb6TKhodW3bXdvVtaDI7bG1+2+Z7nV6GG8=; b=ajS59LNQQfmE5wd1rLHiuFuTk9OwCn6LSP7I42r4v6NLvhldzDviw+uPBQeId8uC9MeXs8+EGlXoEqtaLn4opzLgNjeXHykgEYapICy/7VVPWHp7IMaDOu+7zT3uOLeV/6NBOhggPxSgGkiZ5IZwXWStpIPbdNODTauTZYAxBXs= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625134185950.1303927774874; Wed, 28 Apr 2021 08:52:14 -0700 (PDT) Received: from localhost ([::1]:55834 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmU0-0000k1-7T for importer@patchew.org; Wed, 28 Apr 2021 11:52:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58630) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxy-0005oX-1S; Wed, 28 Apr 2021 11:19:13 -0400 Received: from mail-db8eur05on2106.outbound.protection.outlook.com ([40.107.20.106]:17025 helo=EUR05-DB8-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 1lblxj-0001uP-6s; Wed, 28 Apr 2021 11:19:02 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:31 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:31 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hAPldKopnanJdsKFeIPoKfBsz5m+NpUKb3LMQUx0fP2YK6BGfe9IJAz3rT7dcYngl6U5R8dBa5gTOuBneMBiTnrV60JBWcAlsE7JTyfgSJtbJ37ing5YhpCkztar3tg+j2q2uQqstol4jBrkYWtCJD1u5Wrf68aZzXn9ASfPpGcCZyW4hK2PWzeAkrh3KkbFsJQBguWFA9nf/8bpBd9lzhsz2pD1V2/EqVDYOkMN9TwhzA8Lit86RZf7DDSR/l9+674E01jFOBGmi3DJ8HNExNR0h40Jyq0yjOfGxF9D6VDyXpHfEYhXwvRNoAT0lNQj1bZveHzsPaCve7M3YMPTmQ== 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=F7wmAjyiCgb6TKhodW3bXdvVtaDI7bG1+2+Z7nV6GG8=; b=PbqdWY2DkhgbHv+CTQqGvM4AL+tL+a4IcXdW3Uu+BguvOrNTK0vKY5kd5MLDkbSSIEIG1smh4pP5Aq24AgP2ecwDXYAWVYYAiEnqt/TzXNoBtMGo8mDL+XyA9qxtu434pR4f7rcO7NC/PCH0s30QePs4gMjhXPL1Ef1O1BEGXVfk9WZ6TiN+MeuJeBRpgAVdEGgBSvYG0xO1YXvbVTdQXFaVsTEXyrG8NmqhumTjnNthrGLXaHM8TFWW8EE0zMzIdaDfk4ASuiCE+KkizuAkbPdOzgjHL8OSoZnO3p96Ph4MzBVvTGIHu8U5s6e4k6CgPBcTGP7vXvt3n0La8xBGAQ== 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=F7wmAjyiCgb6TKhodW3bXdvVtaDI7bG1+2+Z7nV6GG8=; b=I+qtYeCfWP+BJvdz2H9zISi6id+1GTnH4piT05LjFRWVO5HUyMyPrbs/EH4tPPTY0J/Cr3aDOMJ20ogsG/jRmXwFJn6zBUwhY9rnYGoCw0772IlRKDl/AALndHbIJQr3JeUqDvfobNJYe0sSMZQmPar2DfLJkxX+ge+YKOE3iKs= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 08/36] util: add transactions.c Date: Wed, 28 Apr 2021 18:17:36 +0300 Message-Id: <20210428151804.439460-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: bb1948b5-dc0f-4bdf-2a19-08d90a58e1c4 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +O7kab4N0aVPG3pFh/3HVXR2LdSDDEfTVYjrlb9RoQbWB0qrY1hePVvbJemHOGqDpwqycv+W0tBigDr9UV0VbmCWFtLfp5nM7DnR5vnNAbkX9JKyWDpqQOnEyT4FlHLnCUvbfnGsApFg97Y6JxNEliLXdJ+L80GkSfUKos0Cf0RulxUiMuoSrj9+d56Yo2rNXxRvTC2SHQ8t5AcxXF9xqzZN6osZPi7Sl0lxwJcnHIL9glX/a/8lQPtOjKvYH4y7MtA540ErqEYJ3F0FxDimw9hf58xLQuwV39GHTLnMQcoWBteXdQvhTY5eAFEo2zsGF6mMifKNwF3JJg9mbIfdjnkZu+F4Q6Moq/B/LjlqwXaggdR7f9tu40oyTqAg502Ze3R7kiZuxHZXQJlo+dtHkkHTHdfkPdF6UsP7bpSKCzT1ETFYCVz9GOZc9R8fd5vL6Mp859Oc9pj9947N8WBe80ojba979mNidL+7IxytbvwcABguO9N+Bwp3EBRYqJH3LRnV1RxEVLRhCAYNGdu0n1u9kkTMyrnqv/0QjwKqazMW2xgoGTB3loQ48ZJWezpVjgPQqIl0kNiWlqmnN3Fxlg96HuklxlzPpzcDA8EXwSGpooV5OoA00x4dBawozhDBz8IBkZqiFTNSNvV4Fkfu8+UxYL8uPsAV9ntObx5H3FJbD6wEsowCsR9ODtZyggnj6YXPYYVmFY+BDW7EfaqBRw7slP1O+v4mgv15UlEjlYoyPlLrwabVv3OLN6GLHkxyUX/E4SwldD9jP7sxBZYkyv8+C2ukUdEW0U0IpgYAADY= 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)(376002)(396003)(366004)(136003)(39830400003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013)(2004002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?fsAgNL3QUBRTiVjVxIkBpbHEw+0rr2ZjLVEuf7dvrG57YubNHFap36TKQ8R2?= =?us-ascii?Q?GTklk8jUdYhPJ91qHmF2mB6gKi8Y/W7DC4Vrf4zbNuXcyhGxjopNN5WcK2a2?= =?us-ascii?Q?Yg/7mUjUQs3WLuiAA9igQtNySAPw+r4laevVtPPstq8L6j2hXovUNyvI3v1d?= =?us-ascii?Q?5Hq0uWGr82p/vlbxH6v4m3va3KGvMupzgRyh47TRGIM0yfW/zkxkmC4A8qMP?= =?us-ascii?Q?/5EE/N3wlfBeRJtfRiGSWCrUyg4AKW9YPzV7NrZCqX03s7SzN5s0DFNM6k47?= =?us-ascii?Q?kxicYalTzeq+n2CyTe0MoAO8tacdo19N4PYN1VbTADjsH99esZ5I6K3xSFr0?= =?us-ascii?Q?jKkHl9RV872uENEAFTUTrWwTiMHh4teLbTnxQtJn0Ff9OHqtymQ18mhMG0cR?= =?us-ascii?Q?uYavE2fCmgoPKelcrr/tLgQHXcOv1sQJUXgrvCngJdlPq/jIXPetmNcycUmi?= =?us-ascii?Q?HNQeFSeeG9fbotrhcPaov/NeBp8jeGq5uaIOvHCtz4Awg4T1AqQ+uposPrNx?= =?us-ascii?Q?vC/uJljE88heYCz9LFWiIMBCvGgscnDt7XC+gFSQtKMyRQG82/O7YCxp2J3Q?= =?us-ascii?Q?OxJ/I4y0Chl0Wm2kpZxk+H8LLK7YX1GhlJ5Nl5JCmxSwlG/m0j2rmrpxAK4Y?= =?us-ascii?Q?ekWuJpmNMu23mlCkTZBk5G4YObvhqImBTd94yWGtTtJB4ZmJmWhbsdgb12Ar?= =?us-ascii?Q?a0RY0aq/O2mlXTp+QODOctQXsJrlRkVMnQpnKG3NgzAZJsaBYoutv6WVpBnM?= =?us-ascii?Q?4yeQ9t0qONNV59Q7uY5CVaGIAc+3XP3PmyqM4Ith7vVhgonDw7s+q38rFKsl?= =?us-ascii?Q?Ady2oyjelnjxpxw7UfrxZglMfkBLApWwivy+feu/WD0yB0QVBowSlDYA5GOa?= =?us-ascii?Q?AjiiAjIod6o/lZGws1UvcTZ3m+gvEXVw/cxGsqOhGvbcR0i8qDjkZKK+7wws?= =?us-ascii?Q?Aw6unK5wP1IXRQu3F1XOtycKYkVWCGi15cYLe2KnvBe/XbZA9X0r8C6QD62x?= =?us-ascii?Q?QPOlYGkJ4g1liRFh0BxEgP+Dk2fpRWPFHyy8G2JXkKnRhlCFffktQZ9vsxhK?= =?us-ascii?Q?mCCRZGrlNL9LAadxstjgRBYx092a1zALTq9gK89eud0atqtwAkyGeDv8abwv?= =?us-ascii?Q?om23Js1hWXbnNM4r3EtHCvT63xTKPphhswInYElH3gXfmZ6ABH1WxwN9uFhW?= =?us-ascii?Q?Timv3kKE6mp30ID4Al8ZZSQyDlH/nGfxOBz+r60gBO/lkzt1xPLCB04roFcA?= =?us-ascii?Q?3ABiXFPVxZYqGD9s13LbIubXemKYBTEtPbc3lw8kQQsaFLrUahNRf7atR4uW?= =?us-ascii?Q?pc6VLypR5pcrmIVF6zTnqJrW?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb1948b5-dc0f-4bdf-2a19-08d90a58e1c4 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:31.2671 (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: oPtCcnVmYgS94Hio8LAe97s2rY3vp86UMaCVWEGlNgO8JpiFtEXdi7/0zCkZD4aVsG35+K1dFMWAyLOB/bl0ZI1KXCz8i0kcKZvuxWpyaHE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.20.106; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-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=unavailable 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) Content-Type: text/plain; charset="utf-8" Add simple transaction API to use in further update of block graph operations. Supposed usage is: - "prepare" is main function of the action and it should make the main effect of the action to be visible for the following actions, keeping possibility of roll-back, saving necessary things in action state, which is prepended to the action list (to do that, prepare func should call tran_add()). So, driver struct doesn't include "prepare" field, as it is supposed to be called directly. - commit/rollback is supposed to be called for the list of action states, to commit/rollback all the actions in reverse order - When possible "commit" should not make visible effect for other actions, which make possible transparent logical interaction between actions. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- include/qemu/transactions.h | 63 ++++++++++++++++++++++++ util/transactions.c | 96 +++++++++++++++++++++++++++++++++++++ MAINTAINERS | 6 +++ util/meson.build | 1 + 4 files changed, 166 insertions(+) create mode 100644 include/qemu/transactions.h create mode 100644 util/transactions.c diff --git a/include/qemu/transactions.h b/include/qemu/transactions.h new file mode 100644 index 0000000000..92c5965235 --- /dev/null +++ b/include/qemu/transactions.h @@ -0,0 +1,63 @@ +/* + * Simple transactions API + * + * Copyright (c) 2021 Virtuozzo International GmbH. + * + * Author: + * Vladimir Sementsov-Ogievskiy + * + * 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 . + * + * + * =3D Generic transaction API =3D + * + * The intended usage is the following: you create "prepare" functions, wh= ich + * represents the actions. They will usually have Transaction* argument, a= nd + * call tran_add() to register finalization callbacks. For finalization + * callbacks, prepare corresponding TransactionActionDrv structures. + * + * Then, when you need to make a transaction, create an empty Transaction = by + * tran_create(), call your "prepare" functions on it, and finally call + * tran_abort() or tran_commit() to finalize the transaction by correspond= ing + * finalization actions in reverse order. + */ + +#ifndef QEMU_TRANSACTIONS_H +#define QEMU_TRANSACTIONS_H + +#include + +typedef struct TransactionActionDrv { + void (*abort)(void *opaque); + void (*commit)(void *opaque); + void (*clean)(void *opaque); +} TransactionActionDrv; + +typedef struct Transaction Transaction; + +Transaction *tran_new(void); +void tran_add(Transaction *tran, TransactionActionDrv *drv, void *opaque); +void tran_abort(Transaction *tran); +void tran_commit(Transaction *tran); + +static inline void tran_finalize(Transaction *tran, int ret) +{ + if (ret < 0) { + tran_abort(tran); + } else { + tran_commit(tran); + } +} + +#endif /* QEMU_TRANSACTIONS_H */ diff --git a/util/transactions.c b/util/transactions.c new file mode 100644 index 0000000000..d0bc9a3e73 --- /dev/null +++ b/util/transactions.c @@ -0,0 +1,96 @@ +/* + * Simple transactions API + * + * Copyright (c) 2021 Virtuozzo International GmbH. + * + * Author: + * Sementsov-Ogievskiy Vladimir + * + * 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 . + */ + +#include "qemu/osdep.h" + +#include "qemu/transactions.h" +#include "qemu/queue.h" + +typedef struct TransactionAction { + TransactionActionDrv *drv; + void *opaque; + QSLIST_ENTRY(TransactionAction) entry; +} TransactionAction; + +struct Transaction { + QSLIST_HEAD(, TransactionAction) actions; +}; + +Transaction *tran_new(void) +{ + Transaction *tran =3D g_new(Transaction, 1); + + QSLIST_INIT(&tran->actions); + + return tran; +} + +void tran_add(Transaction *tran, TransactionActionDrv *drv, void *opaque) +{ + TransactionAction *act; + + act =3D g_new(TransactionAction, 1); + *act =3D (TransactionAction) { + .drv =3D drv, + .opaque =3D opaque + }; + + QSLIST_INSERT_HEAD(&tran->actions, act, entry); +} + +void tran_abort(Transaction *tran) +{ + TransactionAction *act, *next; + + QSLIST_FOREACH_SAFE(act, &tran->actions, entry, next) { + if (act->drv->abort) { + act->drv->abort(act->opaque); + } + + if (act->drv->clean) { + act->drv->clean(act->opaque); + } + + g_free(act); + } + + g_free(tran); +} + +void tran_commit(Transaction *tran) +{ + TransactionAction *act, *next; + + QSLIST_FOREACH_SAFE(act, &tran->actions, entry, next) { + if (act->drv->commit) { + act->drv->commit(act->opaque); + } + + if (act->drv->clean) { + act->drv->clean(act->opaque); + } + + g_free(act); + } + + g_free(tran); +} diff --git a/MAINTAINERS b/MAINTAINERS index 36055f14c5..4c05ff8bba 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2532,6 +2532,12 @@ M: Vladimir Sementsov-Ogievskiy S: Maintained F: scripts/simplebench/ =20 +Transactions helper +M: Vladimir Sementsov-Ogievskiy +S: Maintained +F: include/qemu/transactions.h +F: util/transactions.c + QAPI M: Markus Armbruster M: Michael Roth diff --git a/util/meson.build b/util/meson.build index 510765cde4..97fad44105 100644 --- a/util/meson.build +++ b/util/meson.build @@ -41,6 +41,7 @@ util_ss.add(files('qsp.c')) util_ss.add(files('range.c')) util_ss.add(files('stats64.c')) util_ss.add(files('systemd.c')) +util_ss.add(files('transactions.c')) util_ss.add(when: 'CONFIG_POSIX', if_true: files('drm.c')) util_ss.add(files('guest-random.c')) util_ss.add(files('yank.c')) --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624555; cv=pass; d=zohomail.com; s=zohoarc; b=W1OtpZdteK6Uvcxpsvg6PId03wEps0ANCRfTXCbAsQyoTk3XLqiQkTIFJEe7XyNlAdVqoFxbULF0SJ053gA37KFXHGLYyQMG0cWHxBa9/I3WZJf4H4+sAW4JdFcnVrLk9W0YYCpQW9FLgPkT+JNip0C4zrUg9Eh3KP3oIg55sWc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624555; 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=0b4lqLnamQjHkw9DFm8n3jCG/9OfGl6ntPBs3klQTRA=; b=J8I4ppIqnSDDGx1JnHkML6o9G9CuwfVf3wgETTt2JJ1yLGBQqkiVOVCnOV9GJDadF/B3UiYF5Fp19/Y5H37+Fncq9Dz6HULd/fvoNyuW361GcOs5TZw3v9HCb0cWadSjhim4xKKRAwaU4gXNlnw/qdB//O4FxoZgsuJT7/Hggko= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624555045149.11186439716698; Wed, 28 Apr 2021 08:42:35 -0700 (PDT) Received: from localhost ([::1]:38704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmKg-0001ld-5M for importer@patchew.org; Wed, 28 Apr 2021 11:42:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58634) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxy-0005oZ-2o; Wed, 28 Apr 2021 11:19:13 -0400 Received: from mail-eopbgr70127.outbound.protection.outlook.com ([40.107.7.127]:16352 helo=EUR04-HE1-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 1lblxk-0001nK-HW; Wed, 28 Apr 2021 11:19:03 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:32 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:32 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yd7YXKSVHlXBZ+k711pXFZWuZZzVWpNkkp7QGx4CmhAFlLXaUBJdh2Tx+DxANFri3oyLoxoBvjmw4KMSxKzhEFaowE2tYcNJVISLFGdZg4MOKEPzHj9KnZA/LfzALlRDwPh1DUM3CYc9LUlgl+muF/YVv5xVUraOh+neQUS6fv/0nle4P43Z2yMiIVDmAAXAy5tyQYVanH8dWzbSH+Q7pJoZUsZAfNrpsskKMQ0+zjY8UYmQzCItaBunQkxXnj3M+iz1PnmfF0+hI7uJLDJpkp8FRhhYry0PPn89aV84IQ3maIsPfZaqzigGG8qmEakPlfeCFl5TsIOdwjci+BB/6A== 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=0b4lqLnamQjHkw9DFm8n3jCG/9OfGl6ntPBs3klQTRA=; b=Qn5OyBT0ebfYl44I54a6p/6Js40k3hm2Alz/hYBnCa9otLwKS5Ek24UcvKrWHcMz6pDphWUld1D3wxnTJIazfPoMk5SReMfKKRJDysoXrJMtdQPVFLDtcUHW3mozX47tPSoZl6yKnifHFHPK0BXoXIi00mDTycBWLDljsFcUGnzgGmca7zTl+dqb4mI1fLNGq6CRlyvWs3PlkeuSfFwSBnkQEieCC0AnYKZchs9fK8MtsqYHjS/dt0H600iyPvDSCV34ox+uGZb/KZ3gxerk/qoySTzp9ZAfkRHj5GfLX1chUzPJChuxst8Cy/Szv3FiXZc+f+OTkQKuCVRntBjang== 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=0b4lqLnamQjHkw9DFm8n3jCG/9OfGl6ntPBs3klQTRA=; b=IIJjr0xvpaWiz3kLo2qOtmpD70pIX18V6aqmHGvF8wqKm/FiVzOJFfZ9sMDJw1xM7ZjJ+wIf2CJq4CrqihbZFXyDQURnO4r29aT8CnT+OZHEvteNBKXpUmsSE/20km6BA/7Vg0SLwUKZLrMzl0FGvco01B913UWVYokA8GtwH80= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com, Alberto Garcia Subject: [PATCH v4 09/36] block: bdrv_refresh_perms: check for parents permissions conflict Date: Wed, 28 Apr 2021 18:17:37 +0300 Message-Id: <20210428151804.439460-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: bb6cb577-da89-4a11-344c-08d90a58e27d X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2512; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1QRfqMBov75t8IrC2sMiejHHsxUXGWOfIttR4cHwdlMSB/pcbv6h2rA9GK2Fhle9J9OrC/jOhmwdJDOTxqkcxjJQ/g5B362y7P7xCzem12OoEl13Dst61wFoTNkoO84hL/wkqkCdq1bFvSpEMobYC2MCT26enVnOrfxRU6axEs7apPT42nXf5ZDMWtem71YebNQxgwnYqoNRnxNgLWyw8KTppJrpUNKl59UL9PQrt3v6EfOsGKAOldP69hiIV6aNH3win+wVRp33Uv4Xhqm/xRClARo3Mys84J+tSQzGmi0wBv93Og56l9HTlJTRBqIsuEjxuI0ztZNIHZm1l+W+x3HjzGy+d1ZdLFmDGe3kGdzMcV2gnrFGhn8gTOdMrGFg2/XDPPxdz0AUTJXPyeKV+eeuRxAdX723OjrUUF0zHpxVDpmkgbu3b7EL5YTD6+9pSZFfBMfv9uwNLNOFzUm3TzpHP1UWB9/EoNhsxL1xKNU1+MxM1bXYdSFO1SR/RX6XztVFTLN7djJwWlnTifEPyTF/j+o/2J367AZYxRJL5iuH+x0KPxwnfvQ7ynjmw395aZIs7faGp5NAIa3I35thUCFiFXIWevw2Q3boAOLJP5SgAl5HLyQ6/9IhsgKHkdDyR3GCNH+Sz5H3Stqe6uITv61wxzm4QB6YXSntgJ+uYv/d5Ng9nlDGRqIYD9sVi+2A 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)(39840400004)(346002)(376002)(396003)(366004)(136003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?1MxTotvgFGirxs4hOODzBxWFtTFV15036AN1F66AN1aYIwd6zCXQl4UzojIj?= =?us-ascii?Q?i4WxiQWJz/m/lkleWR9ol6gh+6lPJ+QY7oek6RlgIScDHxE6lMVfj2ESopka?= =?us-ascii?Q?olb8vq/I5dgqwzIi7P8TEyG6sSfUkehmPkHZ2s4Ikc7JsZm/ACA7BqFeYWSi?= =?us-ascii?Q?aNL372gwn+7JuZx7VwX8o2rPsibATEv10hj0w8i8VUvbVu3y/asm7Va+JNlk?= =?us-ascii?Q?n421NmYcGOajnHTn0dWKyIZWe/+k442LQzc3yOS0Jm3jbCzV1zYX7CV9h2kz?= =?us-ascii?Q?jd2e2JWUqlghOWgqcQz1wm0QpJz/2I+MRj2otmisU6kb4OoImNsYRaH4orc7?= =?us-ascii?Q?aANunZzLNU8xjn3tUmfxngbTXfKGPB9f7VCncwx9ydUPXCbasNdyVahxR2+Q?= =?us-ascii?Q?piNZEzxU5SoJltju/yJIkP5Rp6pbjgTvJSU4GVOODUNCHwzC1JI5sRUsF6ZK?= =?us-ascii?Q?RufjSCdv6h5I/Koo/yIROIr8GSUeGsA+YagZZ0m1AbKIuuPLoFEYTd6+cAYZ?= =?us-ascii?Q?6/Cf1/bmt7/GzSOwhX1aMNZNVbH21GaeRiPh0Jv8qSjPy1K8nBZCXEvtuVHq?= =?us-ascii?Q?ArsddYDjNCTn1j9BLdzKFas5JjzxwFYRQFfyhFNQ6evE+pnO6M78b+a2VANe?= =?us-ascii?Q?+l/F/yto1REg8XaOZzzv2kDp+hWwydUJ8d3hJkdGe5ROFdEjrAEaVfqQ7MTG?= =?us-ascii?Q?FnLltJ34BjzICqD24bjP05QyWMnPSsHKII91HO0pqs9Z1UIxmA+kaO14Hr0h?= =?us-ascii?Q?Pv3EKZuzA6dFlIkEDq62j2mA7Y4MVeJMcKYXWiKgf+FVG/KgcpaClriCHuiE?= =?us-ascii?Q?U9fvTECwGvxIqj0pm6rUoTf0yP5QqIViSBqdMXVQkavbOuu846mpH1e9AehB?= =?us-ascii?Q?pIhaVN5ABvS0xElaVcZr5X5mr68OReYlA8Wu6Zi6xzrOKI+2863okRVGXrqA?= =?us-ascii?Q?2nvAuBnrEPzOOHr396cSHwyTp0PBggPADsNnFNKy2gcEKim7367BkFJLQP8s?= =?us-ascii?Q?Ug8AxnXRMoLe9DsymVKqCDgJZ14v7NTp16FAEI2A2mDgQRFHMKUEEOtvWcyj?= =?us-ascii?Q?COe3fPhRE5kt8PHVzysOtD6aMu7BBmKqD0cFhByaoKqVvYewwUZ/COmIomII?= =?us-ascii?Q?BypNUpqUEjC678EUABEl1KK2n6vodKz86EhujmrNglH9Z4oyuGiSXWEwojAj?= =?us-ascii?Q?c8r9NfjmA5zxgDAtkhMFkrqGTsGDYFJEclRsprW4u0LL+nkzCdK0KZIBE1UV?= =?us-ascii?Q?wQVdfT++wqEnO52D1rixoSBanyMd6J/xfW10R39BhVrRSGn5ugooxw+Xzb1L?= =?us-ascii?Q?2b+80yTYZ+CDOQZWccVFxLPp?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb6cb577-da89-4a11-344c-08d90a58e27d X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:32.4245 (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: wXhUWMlaO9oWMScxw1vaujwWyl2t4riwdGo4KYAdOTYYe7n3ZQfwD7rH23sZR6EtUwboNWMbWVBUeQD6dkTc7J+0BAvD1O4upEJEld0CKn0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.7.127; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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) Content-Type: text/plain; charset="utf-8" Add additional check that node parents do not interfere with each other. This should not hurt existing callers and allows in further patch use bdrv_refresh_perms() to update a subtree of changed BdrvChild (check that change is correct). New check will substitute bdrv_check_update_perm() in following permissions refactoring, so keep error messages the same to avoid unit test result changes. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Kevin Wolf --- block.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/block.c b/block.c index 34c728d7e4..fd621f0403 100644 --- a/block.c +++ b/block.c @@ -2026,6 +2026,57 @@ bool bdrv_is_writable(BlockDriverState *bs) return bdrv_is_writable_after_reopen(bs, NULL); } =20 +static char *bdrv_child_user_desc(BdrvChild *c) +{ + if (c->klass->get_parent_desc) { + return c->klass->get_parent_desc(c); + } + + return g_strdup("another user"); +} + +static bool bdrv_a_allow_b(BdrvChild *a, BdrvChild *b, Error **errp) +{ + g_autofree char *user =3D NULL; + g_autofree char *perm_names =3D NULL; + + if ((b->perm & a->shared_perm) =3D=3D b->perm) { + return true; + } + + perm_names =3D bdrv_perm_names(b->perm & ~a->shared_perm); + user =3D bdrv_child_user_desc(a); + error_setg(errp, "Conflicts with use by %s as '%s', which does not " + "allow '%s' on %s", + user, a->name, perm_names, bdrv_get_node_name(b->bs)); + + return false; +} + +static bool bdrv_parent_perms_conflict(BlockDriverState *bs, Error **errp) +{ + BdrvChild *a, *b; + + /* + * During the loop we'll look at each pair twice. That's correct becau= se + * bdrv_a_allow_b() is asymmetric and we should check each pair in both + * directions. + */ + QLIST_FOREACH(a, &bs->parents, next_parent) { + QLIST_FOREACH(b, &bs->parents, next_parent) { + if (a =3D=3D b) { + continue; + } + + if (!bdrv_a_allow_b(a, b, errp)) { + return true; + } + } + } + + return false; +} + static void bdrv_child_perm(BlockDriverState *bs, BlockDriverState *child_= bs, BdrvChild *c, BdrvChildRole role, BlockReopenQueue *reopen_queue, @@ -2203,15 +2254,6 @@ void bdrv_get_cumulative_perm(BlockDriverState *bs, = uint64_t *perm, *shared_perm =3D cumulative_shared_perms; } =20 -static char *bdrv_child_user_desc(BdrvChild *c) -{ - if (c->klass->get_parent_desc) { - return c->klass->get_parent_desc(c); - } - - return g_strdup("another user"); -} - char *bdrv_perm_names(uint64_t perm) { struct perm_name { @@ -2355,6 +2397,9 @@ static int bdrv_refresh_perms(BlockDriverState *bs, E= rror **errp) int ret; uint64_t perm, shared_perm; =20 + if (bdrv_parent_perms_conflict(bs, errp)) { + return -EPERM; + } bdrv_get_cumulative_perm(bs, &perm, &shared_perm); ret =3D bdrv_check_perm(bs, NULL, perm, shared_perm, NULL, errp); if (ret < 0) { --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624184; cv=pass; d=zohomail.com; s=zohoarc; b=VndexsnAWn5vKbkY+zaa4DQ6Rgx0YNb7PEWWMR6RDhrQW74DENTKvsoem6eZBeMmFSmfQE/YYBak9wsVb5pk+9AXoH6Jko1sDdb+lIkSZTN89h93ENUHegb99pfWFRgRBtT6Xl5B4rxIFLnv+3NJ6+qOgOh+heuw2EsXzhc6ngc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624184; 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=CDOdJTdq2rpFtzvJJwZAJFFvr/VxVMQyQbCcLQOjoRY=; b=TlRm5wH05wUimZtw25wLVX48fdhDm4wgk7rGxMPOwoLC057BGEIHpbUjYEATnohHoba2DEYoO8w1cWGpK25CYbmSJM29Bt0Pv2I3pvdsV+intbCnnO8Ja079xwl2yRs9SdUTbXYmEYcYJPFQL+IeeRPZwSeAp7WoK/UsNCtRF1o= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624184663318.10122460022023; Wed, 28 Apr 2021 08:36:24 -0700 (PDT) Received: from localhost ([::1]:53050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmEg-0004Ll-TF for importer@patchew.org; Wed, 28 Apr 2021 11:36:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyH-0005qW-Me; Wed, 28 Apr 2021 11:19:26 -0400 Received: from mail-he1eur04on070b.outbound.protection.outlook.com ([2a01:111:f400:fe0d::70b]:4079 helo=EUR04-HE1-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 1lbly5-0001qz-5q; Wed, 28 Apr 2021 11:19:25 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:33 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:33 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RCitN/kGYy2tl1+L2b/8BO3q822K60f5geeo0GO7GY6bpD4eTBQ0H6BlyDBlen3EmIbaPMe7gff6hrTzWHS/Ah7qLg64jrCxgkj1jktpzuPCzCCS59t7efYq1NHFyL/9ByzA5cV+crMewwm9lxgRtaCekBVwRd5F9JF3jKf7Fc5RybReuvZinpu4IjzM5IN817E3FOD+AxnKRrCJMqDVFwswaT/+Xu2WRpuCsYu8QB5yKi6sIU7ejWpXOLpzRj5kSBIuJfTYd3WFob1LNvOGwmqqmmbi6po3uXlmyq0XgwSVQbd9VPud1YdQWSRg2Gij9PuKH5Ea5hFmPE7es79WlA== 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=CDOdJTdq2rpFtzvJJwZAJFFvr/VxVMQyQbCcLQOjoRY=; b=R1nRoGc6dbA5Oq/qcObnBpKoakdWNGZIIGVdMe8ogMTn6HL8q+PVHCbtalO6u15oi9SzvDT53MxkEWY3niH5sINNO/yWlfROcSY6bQeOKnEN8WYo/E1ZHQX8OqoLnGzIxQS1/SY2uYVMTa2A3gclWyTTxcJjJb6gqJ9CEiYB3ZwlYFCH5Rz784FDjUV2jXCi5BeGeKJMfJLRvEylt2CE63uPiTOet3pAnJ4eTxFERVdIvg1U3EDhYdQdRGVjrZDjtnkdR8mgfzw2k9gbFwTnp75tqX1we/YepW4WAJBKNEFPnXvPL2lu0HfEFbKXc/7v3ty/SwejWKAU30uzVMC64g== 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=CDOdJTdq2rpFtzvJJwZAJFFvr/VxVMQyQbCcLQOjoRY=; b=t9BhFDaq5CMurGW3inICnAfoCSnOwH0tb5tPxhqtfKMj0f6cZ9ChlGpcxZiWcbJQNa5abRR+Msbp54SVoFOa+cXJRAtkaF4/vnaQ6JaCuhvnjkPcExnEUtGBPyd/2Ua33K4nS2mAJdN6Ylwm6PyFu/Feq9QHOJcMTaZkiuJvbLQ= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 10/36] block: refactor bdrv_child* permission functions Date: Wed, 28 Apr 2021 18:17:38 +0300 Message-Id: <20210428151804.439460-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: f01d7160-1f6d-48e8-c95f-08d90a58e329 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3631; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ypAdaSuS3Y4+jogbrxrO1U3SCtyt3nkaJc5b67ZBUeWhrzjzxF2V92NsNXq6Br5FOQpUXqMSfRI+IFQkPrtlbsmflJfu5th/6+aVMDdI1n1ArduYxpOlfxThOSBevZXLkm6kwnT/vswtWfN+9LctlbQ7OtxXpPwwsZyRGgyn0/pCKyKI8JfnahunVDVm9I9psEyB5jW8IyBg0qzK/wJDu6QTT56ymma0wEYS7VTTvAQLL2zwW7DacKAc0gSxuPBg7tQbD/C4QpyG/LKhfMHgWN4cafvzJwqchbzTS9PFKIw4KDZjLqcWbmg0aDHi0FOSfAgnyi2Ko7vcPbcKyZwkpKSbTG9nARLZvWu7lZZjJMlOBi7fkJEH7Mdjdelc3F6mYIOIJpHeMV+e/OeqYWKUweOanX5m9HZf8XVKqg/vkcNZOn7yUyvNU/sH+j9xgAsPI2o69UevO33gj0vf5Ev+yWR2jruKY2HkypMOpu7ntnG3rTkSqU7ERPb3C7nBUR+rE1cUNKUmeoyV1/d+laROoW7O0/9UZCDI+/eiAYnwcBQljpVRWn7IXUI0gMxHm1x7WJSTrYoLQk9/6Uoa/SDAD2YBNhspxjpPY8O63gmP7erVD2MFTGqcWeWkiGHSQniZL0i/oZCm5nvHxxkYxAd4Z40qAzmE6T7RMXmaIk+vYi49Nko2GWC76D4v2Hvn22ST 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)(39840400004)(346002)(376002)(396003)(366004)(136003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?yjjSl5Ukn+jEdusj0mFzuZxzMrFjqHFsdPweVbciBZEVjB/c1w7580vM/iWy?= =?us-ascii?Q?Xg/J7hCYbD/JnTzReD8TM77mhJcVsqDhepV4zgGlosbhDniKLkF+WaIGVFMd?= =?us-ascii?Q?GoYF0CDWV7NDu8i77wiqowtBAx4F2Pq7ipJigt1j9okbVsZ/iM8LrRroz9Ye?= =?us-ascii?Q?ex2ahPm/kLyNH1CDs42DuXTusGAynJ+ZpGtt/slExM8gQ6kjjnSg2xlgitd/?= =?us-ascii?Q?kelIJ3g7NpfGv3CBX5dRuwRo10zcsIONDgH2V4iq+8/GpxybJkCCbL3TXCNW?= =?us-ascii?Q?6x26GgehHhxmhBHZVQ7iYqtWWQDf80+IWSQo/uwkUyXGXHlf6pKosHPyFFa0?= =?us-ascii?Q?7QbYnBtVEu2aD+2+EFK37LoSogaQ2gFpNQLDWeNqwJ0m+xchVmKRAhNlInzE?= =?us-ascii?Q?si5g9UNTcPnoX3yB6xrYLuZpXV8FGt5rij3JDq3e1skuNM+Pp4YpG5Vz0ia+?= =?us-ascii?Q?RuA0+3nMJezVrqnFegLmD8Z3OHoFg/l1pjxfrQ/rJ2W2klMcWXeAW/tTGhtk?= =?us-ascii?Q?iE5qRWZ++4YSaXSFFKw2twJ7Jsut75ABTK+0Nzn0z2XySgZDR3fiwuVNea6B?= =?us-ascii?Q?SOGtSGRmb6JNUMR9pfcwn4xamg2m6BfozGQpfEsChDp+gRLUJ8aBUFxOoXYj?= =?us-ascii?Q?6z6qMz+/ByMlVy+LST8ghRWB4FPggaP+kTNLnCTfO7nPKh4dlnF3Tke4TOdn?= =?us-ascii?Q?PV0uv4/eP/X2ZE0ZWn9bEB0cUcBWeU2a7mGBl+4a06mBxPc83Q0tPwQs/QvL?= =?us-ascii?Q?ZD/PlXI84bJLy88bXE2EsH9Rn3T2bkpss6hAfsgol2Y+O7y3SILFJ01VItbW?= =?us-ascii?Q?w1ie++MIR2mkgien0tyyxhSy44vQg1of6i4HJLTuxH8XkLfelmBYbRahU7R8?= =?us-ascii?Q?V/1PiJQLID7/WlcOCSKHpxXdApDzk9A18fv5SqtMnmDj2z6+1JcxNWHi75yi?= =?us-ascii?Q?UUeeo7nBWfHiUUIBE3+TIcwx2/zmI4t6nKkPow0BZbyJDUY1PtiAmuAA2QAO?= =?us-ascii?Q?35mnV34d3FG6LT0pbvIF9V6f4OqilQV4wO7TporOvCfVaDUVE7gQd8wdWnI+?= =?us-ascii?Q?4IWwu2NJ2HdSL++lCQ/ayfBz84+vmCykfdvkZCy94acZ6Cu5R1IZOjHFDO0S?= =?us-ascii?Q?X6ODkZ7Mu0yDY984sfv7ZrXmRPDB6+AzKX48aDBDmMUcv6l0otnjQ/Ib+k2J?= =?us-ascii?Q?MLG90YOgMHn1hpP+cQbKngRiSgBx4xhSMdJLleEwNSGdtDo5HtxBVwpBGMlg?= =?us-ascii?Q?ZwaXOW9xW1md3n9eSbkP2BfY0p5pyF/xUPtG4BTDJ/PXyfta5AqcD2g76wGp?= =?us-ascii?Q?fRbbn77f1DNneeqHsHbYI+HW?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f01d7160-1f6d-48e8-c95f-08d90a58e329 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:33.5675 (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: Q1ft8WQtNXeuFcNfbxTUAcWMbfPxNiHxUoeN2xDs7nRHOhmjp6Bk/KsKiI6R3Ko900GhracXwvE479XEwW/fJeh9mJ00K9Q2hjYuoFXdxmQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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=2a01:111:f400:fe0d::70b; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-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, 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) Content-Type: text/plain; charset="utf-8" Split out non-recursive parts, and refactor as block graph transaction action. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 79 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 59 insertions(+), 20 deletions(-) diff --git a/block.c b/block.c index fd621f0403..0ee0c2f29a 100644 --- a/block.c +++ b/block.c @@ -49,6 +49,7 @@ #include "qemu/timer.h" #include "qemu/cutils.h" #include "qemu/id.h" +#include "qemu/transactions.h" #include "block/coroutines.h" =20 #ifdef CONFIG_BSD @@ -2093,6 +2094,61 @@ static void bdrv_child_perm(BlockDriverState *bs, Bl= ockDriverState *child_bs, } } =20 +static void bdrv_child_set_perm_commit(void *opaque) +{ + BdrvChild *c =3D opaque; + + c->has_backup_perm =3D false; +} + +static void bdrv_child_set_perm_abort(void *opaque) +{ + BdrvChild *c =3D opaque; + /* + * We may have child->has_backup_perm unset at this point, as in case = of + * _check_ stage of permission update failure we may _check_ not the w= hole + * subtree. Still, _abort_ is called on the whole subtree anyway. + */ + if (c->has_backup_perm) { + c->perm =3D c->backup_perm; + c->shared_perm =3D c->backup_shared_perm; + c->has_backup_perm =3D false; + } +} + +static TransactionActionDrv bdrv_child_set_pem_drv =3D { + .abort =3D bdrv_child_set_perm_abort, + .commit =3D bdrv_child_set_perm_commit, +}; + +/* + * With tran=3DNULL needs to be followed by direct call to either + * bdrv_child_set_perm_commit() or bdrv_child_set_perm_abort(). + * + * With non-NULL tran needs to be followed by tran_abort() or tran_commit() + * instead. + */ +static void bdrv_child_set_perm_safe(BdrvChild *c, uint64_t perm, + uint64_t shared, Transaction *tran) +{ + if (!c->has_backup_perm) { + c->has_backup_perm =3D true; + c->backup_perm =3D c->perm; + c->backup_shared_perm =3D c->shared_perm; + } + /* + * Note: it's OK if c->has_backup_perm was already set, as we can find= the + * same c twice during check_perm procedure + */ + + c->perm =3D perm; + c->shared_perm =3D shared; + + if (tran) { + tran_add(tran, &bdrv_child_set_pem_drv, c); + } +} + /* * Check whether permissions on this node can be changed in a way that * @cumulative_perms and @cumulative_shared_perms are the new cumulative @@ -2358,37 +2414,20 @@ static int bdrv_child_check_perm(BdrvChild *c, Bloc= kReopenQueue *q, return ret; } =20 - if (!c->has_backup_perm) { - c->has_backup_perm =3D true; - c->backup_perm =3D c->perm; - c->backup_shared_perm =3D c->shared_perm; - } - /* - * Note: it's OK if c->has_backup_perm was already set, as we can find= the - * same child twice during check_perm procedure - */ - - c->perm =3D perm; - c->shared_perm =3D shared; + bdrv_child_set_perm_safe(c, perm, shared, NULL); =20 return 0; } =20 static void bdrv_child_set_perm(BdrvChild *c) { - c->has_backup_perm =3D false; - + bdrv_child_set_perm_commit(c); bdrv_set_perm(c->bs); } =20 static void bdrv_child_abort_perm_update(BdrvChild *c) { - if (c->has_backup_perm) { - c->perm =3D c->backup_perm; - c->shared_perm =3D c->backup_shared_perm; - c->has_backup_perm =3D false; - } - + bdrv_child_set_perm_abort(c); bdrv_abort_perm_update(c->bs); } =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624955; cv=pass; d=zohomail.com; s=zohoarc; b=TxM5QANaBjFYW9GrYkGzS6gQtp7anxIBBsuKmTEmiXDJm3sDWvlYFohssOcto+mTCxITU62Oe61qCCXiQ56QdKmi45GKJgEhH+09O33PIssyJ7rDh8v26MOPr5l47Jfo4a34dK8iJ0wn857hWJvqhMqMGk1nbywqYZw5aR9jFus= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624955; 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=QbinJFaHHP8iAfVJeQiHl9LV8EcflIj71RoQkOzFFco=; b=N1+AnDfl1C2Nh1Lbg7SY1aVqS+s4iSFNsSbV+E08IjWvYCIvRJ0M7G1/5sjU1EBgtDsUombv+Wa015Arvy/Csr6hyX2mqIUHeCw6RX/So2vV+ZLSZwgLv79P4EGILRA/dnwSLluvnbq9Yfo66FAewW9vAYL5iPXpE23/M03YP0w= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624955494559.0674700027186; Wed, 28 Apr 2021 08:49:15 -0700 (PDT) Received: from localhost ([::1]:51210 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmR8-000799-EY for importer@patchew.org; Wed, 28 Apr 2021 11:49:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyP-0005tI-U2; Wed, 28 Apr 2021 11:19:34 -0400 Received: from mail-db8eur05on2106.outbound.protection.outlook.com ([40.107.20.106]:17025 helo=EUR05-DB8-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 1lbly4-0001uP-VF; Wed, 28 Apr 2021 11:19:32 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB5909.eurprd08.prod.outlook.com (2603:10a6:20b:297::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:34 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:34 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CkW9uVakDmbnuF6oRObCbKgMhrZKioHMqdvqwc3LITLkcrvaeGuXwfStHI3gAxvTGqBboQM5abBEkqdDNsjsLI2ZmUvcH0a/eadZcHMRjdTru+WmDBhIzsPiC66jtmabzdNJRtdQrbhFiELg/5yflNg6QIJYhEDUuOaSabukpboG2kjxto/9ggeA4XAVI5PcZjTGk52sU6t4+tNjCpNv4lJdJxKQ5iis17RFsfaZL46/d10kM4BdmrqIeHIPs6HJXEqJrAGYePDyQ6zFoA6jq72312aJ8uq0PJ5qS6dVbgLLXQayM3PzhZkKXjGWi7S7QuIaRK56w+kZd9p+5gYuDg== 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=QbinJFaHHP8iAfVJeQiHl9LV8EcflIj71RoQkOzFFco=; b=iyRpySMnwCiq4MjmptCyOd2JiaRSUq+9MlggluGWCa5otP2L5Xiniq/9FGGJoCrEaLMdSXaigAd0D/p02IZxAGpzc7noXiI5+DLCarzxIOCwoVEncVAhSSRjk/Xewx4CqONsoYLm+FjxO1W0ZNFEDgvazwB8yKeezcds4Sztu9nlBkys4CBiCd33Z8Vxkq197SHLAch2vkHad8JVruyYQb4rVvTUDz0MWeENHOHpH/pbUwIOhojAar0InsylUtFXxe3IEaRvSul1p9LVT+rWf83FwfKswdFcpR7CEj5+UZqGJwgs/OIdVJ9mb4M38gOkMQtvpJLOOAQf2JCHkSyzcA== 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=QbinJFaHHP8iAfVJeQiHl9LV8EcflIj71RoQkOzFFco=; b=c1iDWaVgxeo7C24HdRuMC1zKplRWfDF9XR8IelJLyIbD0aEHoEDegZjCEYRtYRMsHwNzub8rGREyFfpJO7NJ2OigYVFW09fczx3MRSt5e/XLkAGX+Kic+VVtmk/UIirb+X15Sbd+FTWlRsWtEt1hYf/Rg1asQGyziiJnTL66SEI= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 11/36] block: rewrite bdrv_child_try_set_perm() using bdrv_refresh_perms() Date: Wed, 28 Apr 2021 18:17:39 +0300 Message-Id: <20210428151804.439460-12-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 8860e4f2-eeb3-4b37-f690-08d90a58e3d1 X-MS-TrafficTypeDiagnostic: AS8PR08MB5909: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:243; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: s13VsuG4nMUfv0o1ccE5JcR+P0+91Zh5YZqfB0A5Ry97k1yWSaTv/U1fVkPn4QXIL4TuCkPfuhk1ky6xzUpDLJ50rD/l9p+vWiME20jNGOUHereda6AKpgxKrZNhNQjJMAG3ucih6XQsjXWUbiuDIk8yaEJ1UVF+S4cbKaXp1mKD8mVb3XzI5SmfVnVVy8kzPV9SGPXCPhXF59CZ3Q0YFoeHY8aThU0LVayL4igypnK9+/DR0imjf2VKT1Amm+EtI2MiJBVM7OSsJ7WkFRXD3F9PogTNjkS8/3vPQoah3y35TBODp+XmOgYP4/WZbB6iASU7rBTQ7TpvGv8bDWivi3K3Ip/08XaS/RS0iJqi6jWOAMzx/IZjVvMG6G4k3AA5qhg3IW++xOTgnFabZr2KtEA7jlmGrBFCYsDGHu/vNXdrtWJkzZ4eutQ4Hp/zn+d1R9hVyYOuQDxUmKcEdYXMklvP5vtdsyY0jTjl9TeTdwPwFQxKW9z9ywfb51Q1efAd50X/MWT9SSWTTvP7dOWEbFZ1KM40Vv+pRS/XZtraGicsR64+AdPfeJymR1F3IVyvnlO4/Xk8FNXAR0xCbSCcPqzy9f4QbSWRrd5c9MAt7GFLf11GYY05Ki2Tyoz9um3zYWsAlJYXOp25YpEFWIHrt2yvQt2qI7yhO25mLY3je+k4iQhobIfF4HEwQF6hB47g 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)(39840400004)(346002)(376002)(396003)(366004)(136003)(8676002)(478600001)(83380400001)(8936002)(36756003)(5660300002)(4326008)(6486002)(52116002)(6512007)(2906002)(6506007)(66946007)(26005)(86362001)(38100700002)(186003)(16526019)(6916009)(38350700002)(66556008)(66476007)(316002)(956004)(2616005)(1076003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?5omNQSG0JhgSoiK9clexR9OtrgAdWD5lcy7NVvwClcfa//fir1+FuzCEHCge?= =?us-ascii?Q?ppT5GHcUi/z7fUrPFkJ89wJyl36iSwRNU6cHV4T4o8VT3Jh7Np5f1EMt94pW?= =?us-ascii?Q?0LkwuxzltrXroOwkwecea/upFboKnZ97Vc9kZiqi+GbW2m7EgdahTjXX0OM1?= =?us-ascii?Q?ltCCD3jbtqS7NCIgjWa6pWfoBtwJLzGtHv4Bj9b2khPYMgroJszXv1LwJTLc?= =?us-ascii?Q?0eL26UJ4Lnp3ovCe+d/v8XKBEhjyXm/+hJnG38iyPydOALSpdyO9v3i5Qak/?= =?us-ascii?Q?tMo9vVOMWSrsIGdlcuU3v5yIdRLeekUT/CTIwErRVDXDGsMeAVA6pcgkoTXv?= =?us-ascii?Q?SQ8M3VM8EqhbCLUStMI/4CVv00WAl18jpeq1eEW8sMGNWk9rBmutfOiRiGDO?= =?us-ascii?Q?wb42iNDhIizVl/ZC4iHzRbVtonPyOww2sSiu9pY8wCyAE9mSrxaq7WOxrWWs?= =?us-ascii?Q?tg5IyKCbskqyzkFQR57s2/gfE9uq/d73Uz0fYGUHT1wr1owi5ElKSlL7tKAL?= =?us-ascii?Q?gsqwV8ljvR/Y7NdYIFY3m81aJk86TjQCSEvv/FOxmt1zMAdeQmkz5/o1sp0V?= =?us-ascii?Q?qygCbg0ENyNzE9T9DrtqavmyCYkcMvTdAXrMG2Yh8P67v7k1mjzhB8uBEf7k?= =?us-ascii?Q?ckf+Wh1wEfOHQ6IFqeANxPZEv2FQAzKdozgn7PZoeoevn1n2BfC9Z47fHIa7?= =?us-ascii?Q?b13yyywJedxk9r5g7Jql/evtm3VDrFT8paReImZzMgvaPsEJjzU4Q7AlBAY3?= =?us-ascii?Q?yTdLVHA0Q2e18QX5ak3LY3hiqC3UjiPCd1YtqRfo3+Y5gX45g2qNWjYZ3FRe?= =?us-ascii?Q?iFnuvLiL4wiTKrRnUWcB09bAm8pUd9zgINrQ5yAgH0T8aI4xYQ0P1PKg8bOo?= =?us-ascii?Q?EfCLsLeEKB1O3RsvktfRHsv31hP7QY2O6IGlLyd/Rdk6e4YLRbeTpvleWFq7?= =?us-ascii?Q?MJQ3B+EL2XlO53+mLHC3Ev/jkPCLwli+yBZeR5IkCxCIdlUuWpWncNOH05q7?= =?us-ascii?Q?TRCB4AJDAKPajXQpOajMxjOqBsfrLlnc9mtMCQUO6Rl0CpLMmSmxfk4MHMGb?= =?us-ascii?Q?aIA3X02BoIn6sEbQMkAGtK3zuzyE1Q74Pn5+HHdlzaRr3z1YUnlQ6TN22tPX?= =?us-ascii?Q?RisKdvzxB6lSvHScSdHDF0Fs5POqcbnx9hfJOnyZgLdiCNtTIzndyu/im0Pv?= =?us-ascii?Q?Nf38mQV0dee28f5mdR7TF89sLWSyVx5fuWLDNzZPPbgayitGIKGAFEsCKcph?= =?us-ascii?Q?ZxDBPlXD5NhlgOm6MkKzomSk1JJaMDmCdfyMtzAHWSHBxZ7gIyH6Yh9yMMAx?= =?us-ascii?Q?5EnL4DdEdZfFI6mHhkNwu875?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8860e4f2-eeb3-4b37-f690-08d90a58e3d1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:34.6503 (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: 49d42HJPdJccUG68TuMt1WI/bL5YTJhnJXRXvmVCvpTFGRfcmLxTBDZfn3eIbtB5MQQZ2nheCmOk40XtqN3bBfEjE/33+y6W2TFJTUYzLm4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5909 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.20.106; envelope-from=vsementsov@virtuozzo.com; helo=EUR05-DB8-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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We are going to drop recursive bdrv_child_* functions, so stop use them in bdrv_child_try_set_perm() as a first step. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/block.c b/block.c index 0ee0c2f29a..4511766825 100644 --- a/block.c +++ b/block.c @@ -2454,11 +2454,16 @@ int bdrv_child_try_set_perm(BdrvChild *c, uint64_t = perm, uint64_t shared, Error **errp) { Error *local_err =3D NULL; + Transaction *tran =3D tran_new(); int ret; =20 - ret =3D bdrv_child_check_perm(c, NULL, perm, shared, NULL, &local_err); + bdrv_child_set_perm_safe(c, perm, shared, tran); + + ret =3D bdrv_refresh_perms(c->bs, &local_err); + + tran_finalize(tran, ret); + if (ret < 0) { - bdrv_child_abort_perm_update(c); if ((perm & ~c->perm) || (c->shared_perm & ~shared)) { /* tighten permissions */ error_propagate(errp, local_err); @@ -2472,12 +2477,9 @@ int bdrv_child_try_set_perm(BdrvChild *c, uint64_t p= erm, uint64_t shared, error_free(local_err); ret =3D 0; } - return ret; } =20 - bdrv_child_set_perm(c); - - return 0; + return ret; } =20 int bdrv_child_refresh_perms(BlockDriverState *bs, BdrvChild *c, Error **e= rrp) --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623768; cv=pass; d=zohomail.com; s=zohoarc; b=GZenh3kD+TfkEM/k4W0t5T5HuXNor3YlUIPw0Ij4GGry3msuN0p1DG7Vgxyd+o3TtJ4LvMKryCJhKh4YvJf85JyVNUWbDzpz1aYr/Tbf63vJm7TfiOjWqo01x2wbjFSGC+Lnr6rQXPZ5pCbcfA6THWd5knlljD1kHvBge3AmJAE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623768; 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=5OZ03eK7yF2VPdbxRI1X8bZWX8vB0DuxkCNnLTEorQ4=; b=RY0Mg+fCg1HcELdrvrgX45SLSBec9H36QSr7LF9DQJW4xcnwAXivP7pSdCdz4/YYCIMfS2/fHeOpT0Eg2DpAhozvqajxpBWVUBPPOGA6tNhMfLD40tRcOQ5GNH07rqW2MKYYTndCKyt41/XWeT95E4h7IoFFtgdG6lDdkQGP1k8= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623768053532.433999859604; Wed, 28 Apr 2021 08:29:28 -0700 (PDT) Received: from localhost ([::1]:37598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm7v-0005wr-Rn for importer@patchew.org; Wed, 28 Apr 2021 11:29:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58434) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxe-0005dn-I1; Wed, 28 Apr 2021 11:18:46 -0400 Received: from mail-eopbgr00101.outbound.protection.outlook.com ([40.107.0.101]:18563 helo=EUR02-AM5-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 1lblxZ-0001u5-L1; Wed, 28 Apr 2021 11:18:46 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6357.eurprd08.prod.outlook.com (2603:10a6:20b:31b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.23; Wed, 28 Apr 2021 15:18:35 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:35 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XrmMiPFZmBqQ2XpV9MmUKSyc+NtOW8qCL+DjiOS8C7/CxalnDCdKIatsDEUPAfLwt6hK2eppFmPCKLhLwVqOaoMTyo46YNFHeISxjRMMHM8iA3+0afuySplHjwdpAPPS6d/UWPrUWPWZTHlD533+WiZmnvfORFKnzJrQlSmkk/BLusp+Iqxv6MaLeDjVxVeHxWcRE2OawsHFJ/Z2YuQiLyDW5m/o84KznHNQQ8rb75B1c6kFPJU3ImIeokHS4vUm6W6+9g81dflNT18HyyowpSBbyMa9zXJMLTUtO+ZhTl68i44jJqV4wY3SF08M6uxI/Se3h1xdZgdlHNWGMIz4Iw== 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=5OZ03eK7yF2VPdbxRI1X8bZWX8vB0DuxkCNnLTEorQ4=; b=hi3IdBgH0Z7wjTQyIZic1O+BFpZp+X7mHZ+zg9BoXoYn6BMRoOhVtchjCeL5MV7b1wEiMg7R61dhk6PqLretabCA+ZrlDoBpfv6vW+WEW25XlLwxqvM3am4ZyM0toW104MK3AU0Uc7ULzfR6nqdBqtnKoP6CZ005nIQU8T7rtNRnPVfpQf/NwZojZDovxbA9uIWnFkz8DlzpfBgWg3YJF2N5+W7iu7aq/gGjqtTJ6j00ZuUsya4KioY9aEnLQ+nuM2zw1NBBxSNmwvGVOQ8rBN5VB5/OmcGbcxJpX9maRHkNLGJXz44TOaMAJSBtOsWoJYoA4ln9/AVQRhbS0albuA== 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=5OZ03eK7yF2VPdbxRI1X8bZWX8vB0DuxkCNnLTEorQ4=; b=OlBMKpzREb2tJAx16ZBYU3QkCQlG0YrXuPgsvkbwOSNfa8LINViw0AHF/7mEynKY7h1cO9+7tJ55bxavx8BSOEa5DLUEs8APyBDbDCWTY8izRICDwaywLMGyIXhUEKP/A9EPewGr9Wfk7yMcEmNlAoWoKbk+4zvhCg6WOsav/J8= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com, Alberto Garcia Subject: [PATCH v4 12/36] block: inline bdrv_child_*() permission functions calls Date: Wed, 28 Apr 2021 18:17:40 +0300 Message-Id: <20210428151804.439460-13-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 48806cb0-87c4-4010-f041-08d90a58e483 X-MS-TrafficTypeDiagnostic: AS8PR08MB6357: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:45; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ht4tIhgwWSBt/RFXkxk6w79e+EsWrrn0S1qVa8Tq9RvnyIvJzqkvGZ0OQ/HeAhUoVfdOLQBAXvW2Bjt4RAJK569yYDa8r/hgOTPa0xkJTjyAV3ysanrXagzvwj1VLjHMOlKL6QKbZcwPzEFkcX/EiCEiDkQp9PywiJfOhl8BB5eqJg296ef1974982fbjkw7QDy+t/uUu+W9F0PWX/pYWd9s+mNrH5NBpP01qvyAjcISLIMNCIjuUncpSZyMmtsypX2DI6Z7dWFvk6blP2+UC+P5TOaajtiYIZBgUAq6xBDUr6T8JfVERNpfXqVIKMO9jHCEEf5gquPzUWvQHk6j2f9STB8ve25t1I+wii4RTWt1YDVpJmOWXiexlEvSUjhCO0mimHursFbTxrGbUDdGbfb+ga/NG/jqVvv3o3ZX96kN1E35wicCTp1ua80KARUmZImEPJZ1Ka9Hz5To7YN2y49aUX0sf8iFalwlPKp48MVgh3/nb00XrATlmHkRXdYsozGqjWHc8aWj/1ELvVSiIQ48xGCg7a5fUAa/epwOlLgXXhL+4J4FS9zzU6pqX/IkLsI5vSBR+V0p1gD2295eKF/WQMZwky6V47daeTQokd9MMbvRwf97/adRN4G6+ZQdCMi8TrnMnbtu/09cxQmHVnGvzlTSrcnyWJw4/OikrBB+Q4FfXKsvd14H9seHh8nE 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)(39830400003)(396003)(376002)(136003)(366004)(16526019)(38100700002)(186003)(66946007)(26005)(5660300002)(316002)(38350700002)(6486002)(66556008)(6506007)(6666004)(83380400001)(66476007)(36756003)(478600001)(86362001)(52116002)(6512007)(2616005)(1076003)(2906002)(8936002)(4326008)(8676002)(6916009)(956004)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?sHZrlW0D8na64hWKZTziCN1c0CKJM//cZtppd5rNq4a7RLMPvjybEvmxp35p?= =?us-ascii?Q?sAYWGgmz4F1L7QoolBeCJBp5O26/Ikug4c2z/qMxYTidtg+KXm53AByWgQqC?= =?us-ascii?Q?3UyRhEszwbObRyCdF4FJr1OjSu8x6lFaHPZtkw/i7Jho7rP1T4W9X8andAl/?= =?us-ascii?Q?nRhC669QX5CGN8DDz2S/J1C4+24u04Fv3lAkDOB75F2RZmlISlSA8O7y4SnC?= =?us-ascii?Q?Mt3jIBEoo1ZsgYNgljEiCyo1wlv/wbBpgi9TfOzMvK8D6PfRMfOh5RBecyQb?= =?us-ascii?Q?ZkeeTyW+zBquF4aotDkU7BHBHkHjwxCRYWeO2EdcX2m3lyxhLkFx1BD1ezzQ?= =?us-ascii?Q?HutGLF2qCaE5U9puxlHZeHaN2H20chHP1vvfKqSMYkpfU2y1Huzg2Xx5PAci?= =?us-ascii?Q?OeBNvjZCKlAOFyEG+ff4f5ro6wKNEnIhXD2DjmQW67ZLu02ChQH7x9OBZXHx?= =?us-ascii?Q?/DLw0uWo2agEFoUCm76NeyPNqqQtNAkCghAnih+4oEheEwGYWQzdb+IdUgC3?= =?us-ascii?Q?xT2MOD8kHB8942YCj5gyhV0ZWJ1Rc7Jd0rh1woqvxlnUBZVJl0oJCUCShikH?= =?us-ascii?Q?dL08R6MEXxXx3eGP2gfXANKcA2dF+nCwRjOOGF041BdwfF5GHkNhGz/VsnVE?= =?us-ascii?Q?pbgVrXHloJvNRMGOZ45HUeY6Vpzy6UgIfE7Fn7QMXclHNf/qg9+m5ve77/xQ?= =?us-ascii?Q?axVjt+gB1ZxiE1pTdLCi4xv3wQUfJlQo+zdyvGomzX3zVmLCVv5cg3A3o8EL?= =?us-ascii?Q?EklUqbaLSWGpBDWjqzhbQicks0YdyfyCy8IxhPSOSDPuAKrOuVL01YVtNzSN?= =?us-ascii?Q?zEKMEFhVlgWt5ydMclEf7WK9Y2mj2UVjQ+gwPJcGwVLcsROT5fRRaDE+M6Rn?= =?us-ascii?Q?7WpeSQ8wUViMQKKtM4GNe2+dX2FPIbhtgbl+E+VNWF8HctMYx3NhehkFIfwD?= =?us-ascii?Q?B5YJbvUIR3yeaP4jjemt/+KCFTApil9B5loOfRoUMw84V6/kNTRU6ixJDgOB?= =?us-ascii?Q?SEa1qzspUv+o8p7aiehTi9LoVZCZ98hnlviPfEN4dvlNZY7Gfr8V3F7PpCHX?= =?us-ascii?Q?NEP9OTR2xX62wb0s9m/hlZhGKRXS5cwv5LVnhUd++Ev99WedpiXhj8noBsbV?= =?us-ascii?Q?JGmKIzALwW2yDqeKSnksrnfIXA/lbARTpKRacR1nQdhUJJr9Vd16/IeGLtoh?= =?us-ascii?Q?dmhkCbWj9muCN+zvpo+NEYnfrE3l3sAMpncNG61aPUe/juFXWC+DVPFa26L7?= =?us-ascii?Q?3OOQSbYYfhguboq0sj7L6As5pK90SRGjbkfC6FTNDCw9h81Oe8i3+7qLQvX6?= =?us-ascii?Q?6n6eVyJ5uFdRmzyU2mYGQwZQ?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48806cb0-87c4-4010-f041-08d90a58e483 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:35.8500 (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: roksWajSZysqpeJqB9JHp2oUEGhqqc7dEcGcdPIhT/B8akzen00oOBvDX2K8Ll7KgN6Q1Rl/uPCHGujV2TvgkViEmM1sEF8Lbcr8uijkWv4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6357 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.0.101; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Each of them has only one caller. Open-coding simplifies further pemission-update system changes. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Alberto Garcia Reviewed-by: Kevin Wolf --- block.c | 59 +++++++++++++++++---------------------------------------- 1 file changed, 17 insertions(+), 42 deletions(-) diff --git a/block.c b/block.c index 4511766825..e5af4cdae9 100644 --- a/block.c +++ b/block.c @@ -1974,11 +1974,11 @@ static int bdrv_fill_options(QDict **options, const= char *filename, return 0; } =20 -static int bdrv_child_check_perm(BdrvChild *c, BlockReopenQueue *q, - uint64_t perm, uint64_t shared, - GSList *ignore_children, Error **errp); -static void bdrv_child_abort_perm_update(BdrvChild *c); -static void bdrv_child_set_perm(BdrvChild *c); +static int bdrv_check_update_perm(BlockDriverState *bs, BlockReopenQueue *= q, + uint64_t new_used_perm, + uint64_t new_shared_perm, + GSList *ignore_children, + Error **errp); =20 typedef struct BlockReopenQueueEntry { bool prepared; @@ -2226,15 +2226,21 @@ static int bdrv_check_perm(BlockDriverState *bs, Bl= ockReopenQueue *q, /* Check all children */ QLIST_FOREACH(c, &bs->children, next) { uint64_t cur_perm, cur_shared; + GSList *cur_ignore_children; =20 bdrv_child_perm(bs, c->bs, c, c->role, q, cumulative_perms, cumulative_shared_perms, &cur_perm, &cur_shared); - ret =3D bdrv_child_check_perm(c, q, cur_perm, cur_shared, ignore_c= hildren, - errp); + + cur_ignore_children =3D g_slist_prepend(g_slist_copy(ignore_childr= en), c); + ret =3D bdrv_check_update_perm(c->bs, q, cur_perm, cur_shared, + cur_ignore_children, errp); + g_slist_free(cur_ignore_children); if (ret < 0) { return ret; } + + bdrv_child_set_perm_safe(c, cur_perm, cur_shared, NULL); } =20 return 0; @@ -2261,7 +2267,8 @@ static void bdrv_abort_perm_update(BlockDriverState *= bs) } =20 QLIST_FOREACH(c, &bs->children, next) { - bdrv_child_abort_perm_update(c); + bdrv_child_set_perm_abort(c); + bdrv_abort_perm_update(c->bs); } } =20 @@ -2290,7 +2297,8 @@ static void bdrv_set_perm(BlockDriverState *bs) =20 /* Update all children */ QLIST_FOREACH(c, &bs->children, next) { - bdrv_child_set_perm(c); + bdrv_child_set_perm_commit(c); + bdrv_set_perm(c->bs); } } =20 @@ -2398,39 +2406,6 @@ static int bdrv_check_update_perm(BlockDriverState *= bs, BlockReopenQueue *q, ignore_children, errp); } =20 -/* Needs to be followed by a call to either bdrv_child_set_perm() or - * bdrv_child_abort_perm_update(). */ -static int bdrv_child_check_perm(BdrvChild *c, BlockReopenQueue *q, - uint64_t perm, uint64_t shared, - GSList *ignore_children, Error **errp) -{ - int ret; - - ignore_children =3D g_slist_prepend(g_slist_copy(ignore_children), c); - ret =3D bdrv_check_update_perm(c->bs, q, perm, shared, ignore_children= , errp); - g_slist_free(ignore_children); - - if (ret < 0) { - return ret; - } - - bdrv_child_set_perm_safe(c, perm, shared, NULL); - - return 0; -} - -static void bdrv_child_set_perm(BdrvChild *c) -{ - bdrv_child_set_perm_commit(c); - bdrv_set_perm(c->bs); -} - -static void bdrv_child_abort_perm_update(BdrvChild *c) -{ - bdrv_child_set_perm_abort(c); - bdrv_abort_perm_update(c->bs); -} - static int bdrv_refresh_perms(BlockDriverState *bs, Error **errp) { int ret; --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624006; cv=pass; d=zohomail.com; s=zohoarc; b=WJF/pY4OXL0Z0dribFqQxluXtkyYU/qicz5Q0Vvme8TSicAfxhf12LCy4qJg2+TFWKHFxf31nKGk1SVwnS9a2OEAANgPJTXaAm2qjKTQmci4MOCjDaRqTkD7c7Kgws3EhICLzIKTwOF6pMduqFb3u+fyWR0Aw2T11jrVjnu6BSo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624006; 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=c/kKSNrVyTUeFC37CEzyQXAAvLvTMbIY8j372SnKzG4=; b=BqiXFjjp78mbi5P11apekkwAe5gElXQglqqdW/EhcGQf2ZyiXYPR4GMZxyMy13sDcvWK8kX6Vlikis7cquCWjDpZCVE59XZ5G4m8eUGe70Foco8Pn9BEnHhoaMvNjbJu1HPLa66Cl6B670hVwMXvHfKPnYJXJkvfTBiv9taf+zc= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624006631518.0774811593428; Wed, 28 Apr 2021 08:33:26 -0700 (PDT) Received: from localhost ([::1]:46072 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmBp-0001Bb-SE for importer@patchew.org; Wed, 28 Apr 2021 11:33:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58440) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxf-0005ei-0T; Wed, 28 Apr 2021 11:18:47 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lblxZ-0001uH-Io; Wed, 28 Apr 2021 11:18:46 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:37 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:37 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZdUnDRm1QYvVYKaglQuYF7WYXAUOqjzfyCWStDAemN9Tn1wwNZMXE1FeD8z/MGouVqf/8lBSyaqigj6570aO3WNKLCd/CeLT4pWqWH7IgwfYxplUhy4KcVKNHPLZpLBIpMMteUYEJxlAfhuFsKTPhRHEfVaha8QyFndoENpt0FtVGTAGSa6lMo+LGrcHee9aVgKxn3ytFA19elIAUJQHeSIYfbXaRbsmQiNyPTpSFb7TCuJqQRxzW7jTkTnu4CETwYelDyJxnVPvtJqAKNW0vrtUiKWas+uqYMFeyFX5j6BL14vYq6V466J/b5Lst7PsA6MrYuEle7ZHCyG3xq14DA== 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=c/kKSNrVyTUeFC37CEzyQXAAvLvTMbIY8j372SnKzG4=; b=je91cgcaFhFhbyPCu0UtrSqdPgmxWZyYOYTHkxJHxHuVszMJ81IVXLHXZbT9BXYlVWW/7ekjtg2yb3ZhHvSm7ou/ogtC9rXOaMy3jHJ1pURGxofrciwVeObNzXvMEYPEN6ufvRdagg7gLdMqLIdY9tURUYenGiCQ3yKmaWIVhWzzVhzELa1vrZ0QZ7rH47PNePh5RNZ8n769bhPOtRBi64lvVB1l8AnIYyGYm2oIrpTMRmayjzBJEPi44vFCK+fF/t0nV3VUZlM4Hi4bUfvlKy+Mh5worwDrH82tChCXqmbG+kZy5ECPioLapD5O5fZrBcZQ1iWA5h7WduLZjinHUw== 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=c/kKSNrVyTUeFC37CEzyQXAAvLvTMbIY8j372SnKzG4=; b=Faeyxv64DToVpCNn4msc5zLTaWg4MRK3a0PsjYIDlKgdL+Bx0bc4o1LqZXx0/RncRVFSwBudL/oZjPp4Ut6YKM97n/fnvHvxI0fmQNXVzYjgMLZZ5ZlVfQ75Nox7b2M5yw+ij6R/pjV18QFs3hmA4q9TUV6+MRe23gFb0XV6WAo= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 13/36] block: use topological sort for permission update Date: Wed, 28 Apr 2021 18:17:41 +0300 Message-Id: <20210428151804.439460-14-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 60423c1c-0223-4bec-5e7b-08d90a58e530 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GIhwlRPWzvwb8AVmQMcFi0yn+WsUWtbkQYyVkz4j6p0G+U13Yx3flwgeYZbLrW8rFf2uJlpYhPTULier8pB895+TQsDzDG0DrWwuriHraLP1b8OogDWGJhj7MsnDsJ2rpXEplgjEo6Mo3RdX+82znG2auAgqsvCrHlsmXOz/ubAwCKx/3njztrhuwJ7alByzS3UqOxcCckpZCUareDhWWKVxAWOLN2FdqAu1YtRdpK2RNwNN7IfOab8zBUm68URKhDjZFmIL3KVmzNaJ8kfZ5QPYP3ig41CsB9zWAIawhYRS81G2Y82wsVTzDTPzpc7eRVgScciwH84rM2lQ93DZhwayxjOXZDvgMkfMfRkRleuc+cBtowaedKuxpJFRHmGWzpUGpnn6GQg3l5+ARWx+SJIRsloM9ZqEUMjGAuuzgWg0ghYrHzXTe6+GOIZ6VK9/74FNmqtyT6/wiV1DVo/vV4nBLOvxP3NSyXFVnmunmwt73TWFnsw9pJhxW/qwunoErY4xlZkHWXT3PlKCy/OFR1nbpgajXQ5aEZBfCpId0Q6iuWvIrcCdLA3QSB5ssq8ezORBQ1br1zeAUgzl92nLzqqSTTOLiBvaGrgAP+LCleFm0ULPztwC5b56y9A1M4fmfFJu/ZTEmAnoQr9KlgU/B0tuhWSZ+kfMnuDs0fFPpHBr9OuL0ijUftbjK6F7vfIz 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(15650500001)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?mLj3nwRVdTWPyD1HKiUvErRKlC+KyX52s+7/g00R1Ltj/Vs3lLiNISOQrKhb?= =?us-ascii?Q?aOy6L1dQas/G3MQAaLTc7UpS8gwxyGVOoTrv5dFik3ECLBXoQ1SI/DFGzDpI?= =?us-ascii?Q?8VWgR1A/m95206Pn3YMNcu9o2cYHq3acZaGj8fb2ahq+ZTR4m6vdlgry3sib?= =?us-ascii?Q?aegpymKXnPQCWLCGTwVPI94FGp5EVjmfjJFwOk2eIpM+QBbO8QChYkxQQoM5?= =?us-ascii?Q?DxtH2hkAAlVKhHrijwPw3bT6O1ScSkzUqVxlB/iO/kO/BopSGKY9Sgm5Wbzw?= =?us-ascii?Q?hs5DGTzL0/T2dtP17T5afuTn1cEPAatMdYXVokUVE868mn7DGDQYgzLsImxR?= =?us-ascii?Q?m18q1ivIRJrEYUlXUSVdxBI3z2dO92WmMeIQ5Vg/kWj7qKQkIwyAJiw4X1RM?= =?us-ascii?Q?1aN20z/Ppu0yAFFLx3OGaeCHYNlM3MPJENfYjfBG8VrlykSX1p7I0axQfbPb?= =?us-ascii?Q?yvjx3OV9EpvNTyXlWKTQv1OvJ1vvpw22qnnt9iKavp0aVcolfZqS/0WjDIb9?= =?us-ascii?Q?OY1eGxBSd9riiOhrCKiWdY9sRiO6XvEIQc14REbfEN6CQt8ehOiiEy2LlwBM?= =?us-ascii?Q?XnZYKXXaSeesbLW/8CU576oKBN+x00IRmyYJBgpRjVsLj8LMfZEy4i2fjnXn?= =?us-ascii?Q?NEuIM0AMW2CrBiOntu2aEahSLsTjzdRKf+KmQAeA9KiK5FF2UEUYeKX8OsAy?= =?us-ascii?Q?La+3TtCOs+dn5GQwuPGmS0q3vy3weMNkCraI/tD8Glr0vPtlXLVOaLriLckN?= =?us-ascii?Q?KfRYI7VBsQ2+bDjdplWVgba85nDihtGRCi7VBi/66WtJxOIu6QkvRF874Wxy?= =?us-ascii?Q?bAg7D17VZqvbQZZWvZRsQ63zI8YnIU+OA9mcHLhXWGntDoclIWWhZdQGhN8T?= =?us-ascii?Q?AVeN2vONpvCElNYtIz00hEbWKc3hyCzIIH8N/hroINL8S57tgNuPnM62zTgv?= =?us-ascii?Q?Q6kni/07I1clmU9vlOgiMM4x3OEhHafhkog8l2MxxYRK/oscHFVqKNXW1XhA?= =?us-ascii?Q?y1Eazh7/y11Uv+s3yONh3oy3EnXdTZ6MTRT4kMZibdfrDsrpc+kxTH3UczrH?= =?us-ascii?Q?GJXcsmk3Va5F/NjOsDy/per77CDn75zBnNDZUUTpnfiT2mWFj3pkIkBzWZQt?= =?us-ascii?Q?w1KJOO807JZ4smKK+bL5KWGk8FxR2tAgF8EdFcpoO7NbxSBszrZ75xYmxHwg?= =?us-ascii?Q?HEINFyKAqPHAy2oVY4v3tW1RynhwNKJ/SCxx7ZbRFexFQr8ltgDC/MZVd7i3?= =?us-ascii?Q?AaGOU51CPRXmlEPkaSP1PUddDDW40Gbq9PE0SJMjHfwiFf+IbCIdrp5INuTX?= =?us-ascii?Q?oyAXp7hiqQqoVlcpne11aT8n?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60423c1c-0223-4bec-5e7b-08d90a58e530 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:37.0428 (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: 07T1HDc8jUOToXzf+vuEDAwWtgdPh8oGhZUbiw2TXmVY8Ykt348yD2BmyMeHLMfHq2wxeT3jvroOEDbcv5lKsKqHWHrU2K4obey74Ey/5rI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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) Content-Type: text/plain; charset="utf-8" Rewrite bdrv_check_perm(), bdrv_abort_perm_update() and bdrv_set_perm() to update nodes in topological sort order instead of simple DFS. With topologically sorted nodes, we update a node only when all its parents already updated. With DFS it's not so. Consider the following example: A -+ | | | v | B | | v | C<-+ A is parent for B and C, B is parent for C. Obviously, to update permissions, we should go in order A B C, so, when we update C, all parent permissions already updated. But with current approach (simple recursion) we can update in sequence A C B C (C is updated twice). On first update of C, we consider old B permissions, so doing wrong thing. If it succeed, all is OK, on second C update we will finish with correct graph. But if the wrong thing failed, we break the whole process for no reason (it's possible that updated B permission will be less strict, but we will never check it). Also new approach gives a way to simultaneously and correctly update several nodes, we just need to run bdrv_topological_dfs() several times to add all nodes and their subtrees into one topologically sorted list (next patch will update bdrv_replace_node() in this manner). Test test_parallel_perm_update() is now passing, so move it out of debugging "if". We also need to support ignore_children in bdrv_parent_perms_conflict() For test 283 order of conflicting parents check is changed. Note also that in bdrv_check_perm() we don't check for parents conflict at root bs, as we may be in the middle of permission update in bdrv_reopen_multiple(). bdrv_reopen_multiple() will be updated soon. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 116 +++++++++++++++++++++++++------ tests/unit/test-bdrv-graph-mod.c | 4 +- tests/qemu-iotests/283.out | 2 +- 3 files changed, 99 insertions(+), 23 deletions(-) diff --git a/block.c b/block.c index e5af4cdae9..cbcc4c15a0 100644 --- a/block.c +++ b/block.c @@ -2054,7 +2054,9 @@ static bool bdrv_a_allow_b(BdrvChild *a, BdrvChild *b= , Error **errp) return false; } =20 -static bool bdrv_parent_perms_conflict(BlockDriverState *bs, Error **errp) +static bool bdrv_parent_perms_conflict(BlockDriverState *bs, + GSList *ignore_children, + Error **errp) { BdrvChild *a, *b; =20 @@ -2064,8 +2066,12 @@ static bool bdrv_parent_perms_conflict(BlockDriverSt= ate *bs, Error **errp) * directions. */ QLIST_FOREACH(a, &bs->parents, next_parent) { + if (g_slist_find(ignore_children, a)) { + continue; + } + QLIST_FOREACH(b, &bs->parents, next_parent) { - if (a =3D=3D b) { + if (a =3D=3D b || g_slist_find(ignore_children, b)) { continue; } =20 @@ -2094,6 +2100,40 @@ static void bdrv_child_perm(BlockDriverState *bs, Bl= ockDriverState *child_bs, } } =20 +/* + * Adds the whole subtree of @bs (including @bs itself) to the @list (exce= pt for + * nodes that are already in the @list, of course) so that final list is + * topologically sorted. Return the result (GSList @list object is updated= , so + * don't use old reference after function call). + * + * On function start @list must be already topologically sorted and for an= y node + * in the @list the whole subtree of the node must be in the @list as well= . The + * simplest way to satisfy this criteria: use only result of + * bdrv_topological_dfs() or NULL as @list parameter. + */ +static GSList *bdrv_topological_dfs(GSList *list, GHashTable *found, + BlockDriverState *bs) +{ + BdrvChild *child; + g_autoptr(GHashTable) local_found =3D NULL; + + if (!found) { + assert(!list); + found =3D local_found =3D g_hash_table_new(NULL, NULL); + } + + if (g_hash_table_contains(found, bs)) { + return list; + } + g_hash_table_add(found, bs); + + QLIST_FOREACH(child, &bs->children, next) { + list =3D bdrv_topological_dfs(list, found, child->bs); + } + + return g_slist_prepend(list, bs); +} + static void bdrv_child_set_perm_commit(void *opaque) { BdrvChild *c =3D opaque; @@ -2158,10 +2198,10 @@ static void bdrv_child_set_perm_safe(BdrvChild *c, = uint64_t perm, * A call to this function must always be followed by a call to bdrv_set_p= erm() * or bdrv_abort_perm_update(). */ -static int bdrv_check_perm(BlockDriverState *bs, BlockReopenQueue *q, - uint64_t cumulative_perms, - uint64_t cumulative_shared_perms, - GSList *ignore_children, Error **errp) +static int bdrv_node_check_perm(BlockDriverState *bs, BlockReopenQueue *q, + uint64_t cumulative_perms, + uint64_t cumulative_shared_perms, + GSList *ignore_children, Error **errp) { BlockDriver *drv =3D bs->drv; BdrvChild *c; @@ -2226,21 +2266,43 @@ static int bdrv_check_perm(BlockDriverState *bs, Bl= ockReopenQueue *q, /* Check all children */ QLIST_FOREACH(c, &bs->children, next) { uint64_t cur_perm, cur_shared; - GSList *cur_ignore_children; =20 bdrv_child_perm(bs, c->bs, c, c->role, q, cumulative_perms, cumulative_shared_perms, &cur_perm, &cur_shared); + bdrv_child_set_perm_safe(c, cur_perm, cur_shared, NULL); + } + + return 0; +} + +static int bdrv_check_perm(BlockDriverState *bs, BlockReopenQueue *q, + uint64_t cumulative_perms, + uint64_t cumulative_shared_perms, + GSList *ignore_children, Error **errp) +{ + int ret; + BlockDriverState *root =3D bs; + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, root); =20 - cur_ignore_children =3D g_slist_prepend(g_slist_copy(ignore_childr= en), c); - ret =3D bdrv_check_update_perm(c->bs, q, cur_perm, cur_shared, - cur_ignore_children, errp); - g_slist_free(cur_ignore_children); + for ( ; list; list =3D list->next) { + bs =3D list->data; + + if (bs !=3D root) { + if (bdrv_parent_perms_conflict(bs, ignore_children, errp)) { + return -EINVAL; + } + + bdrv_get_cumulative_perm(bs, &cumulative_perms, + &cumulative_shared_perms); + } + + ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, + cumulative_shared_perms, + ignore_children, errp); if (ret < 0) { return ret; } - - bdrv_child_set_perm_safe(c, cur_perm, cur_shared, NULL); } =20 return 0; @@ -2250,10 +2312,8 @@ static int bdrv_check_perm(BlockDriverState *bs, Blo= ckReopenQueue *q, * Notifies drivers that after a previous bdrv_check_perm() call, the * permission update is not performed and any preparations made for it (e.= g. * taken file locks) need to be undone. - * - * This function recursively notifies all child nodes. */ -static void bdrv_abort_perm_update(BlockDriverState *bs) +static void bdrv_node_abort_perm_update(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; BdrvChild *c; @@ -2268,11 +2328,19 @@ static void bdrv_abort_perm_update(BlockDriverState= *bs) =20 QLIST_FOREACH(c, &bs->children, next) { bdrv_child_set_perm_abort(c); - bdrv_abort_perm_update(c->bs); } } =20 -static void bdrv_set_perm(BlockDriverState *bs) +static void bdrv_abort_perm_update(BlockDriverState *bs) +{ + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); + + for ( ; list; list =3D list->next) { + bdrv_node_abort_perm_update((BlockDriverState *)list->data); + } +} + +static void bdrv_node_set_perm(BlockDriverState *bs) { uint64_t cumulative_perms, cumulative_shared_perms; BlockDriver *drv =3D bs->drv; @@ -2298,7 +2366,15 @@ static void bdrv_set_perm(BlockDriverState *bs) /* Update all children */ QLIST_FOREACH(c, &bs->children, next) { bdrv_child_set_perm_commit(c); - bdrv_set_perm(c->bs); + } +} + +static void bdrv_set_perm(BlockDriverState *bs) +{ + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); + + for ( ; list; list =3D list->next) { + bdrv_node_set_perm((BlockDriverState *)list->data); } } =20 @@ -2411,7 +2487,7 @@ static int bdrv_refresh_perms(BlockDriverState *bs, E= rror **errp) int ret; uint64_t perm, shared_perm; =20 - if (bdrv_parent_perms_conflict(bs, errp)) { + if (bdrv_parent_perms_conflict(bs, NULL, errp)) { return -EPERM; } bdrv_get_cumulative_perm(bs, &perm, &shared_perm); diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index a6064b1863..e64e81a07c 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -406,12 +406,12 @@ int main(int argc, char *argv[]) g_test_add_func("/bdrv-graph-mod/update-perm-tree", test_update_perm_t= ree); g_test_add_func("/bdrv-graph-mod/should-update-child", test_should_update_child); + g_test_add_func("/bdrv-graph-mod/parallel-perm-update", + test_parallel_perm_update); =20 if (debug) { g_test_add_func("/bdrv-graph-mod/parallel-exclusive-write", test_parallel_exclusive_write); - g_test_add_func("/bdrv-graph-mod/parallel-perm-update", - test_parallel_perm_update); g_test_add_func("/bdrv-graph-mod/append-greedy-filter", test_append_greedy_filter); } diff --git a/tests/qemu-iotests/283.out b/tests/qemu-iotests/283.out index 37c35058ae..73eb75102f 100644 --- a/tests/qemu-iotests/283.out +++ b/tests/qemu-iotests/283.out @@ -5,7 +5,7 @@ {"execute": "blockdev-add", "arguments": {"driver": "blkdebug", "image": "= base", "node-name": "other", "take-child-perms": ["write"]}} {"return": {}} {"execute": "blockdev-backup", "arguments": {"device": "source", "sync": "= full", "target": "target"}} -{"error": {"class": "GenericError", "desc": "Cannot set permissions for ba= ckup-top filter: Conflicts with use by other as 'image', which uses 'write'= on base"}} +{"error": {"class": "GenericError", "desc": "Cannot set permissions for ba= ckup-top filter: Conflicts with use by source as 'image', which does not al= low 'write' on base"}} =20 =3D=3D=3D backup-top should be gone after job-finalize =3D=3D=3D =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623803; cv=pass; d=zohomail.com; s=zohoarc; b=M43yGWfnBmL+YV6m1s4Gvt+bB/gGZmycNg6HRmK3mCKWCn/T0im4unF5HV9vzUbOTlroaYhQa3hjw37vF8/iphjfm1COTfNsxRBwe0G6dRyRxY9HEAyquWGlaTlUkSqeqotp9Eyo6hSxlf4jgjYbnAGuQMtvW6YKZ/vZ4vMu75I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623803; 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=7QXKGVpfRYcqNcIy6bSc75QNsedk461mvwoGSuttgi8=; b=UAsCaPqsoB6wBJ1as/YDE5XxTmgIuoACHshGKCi/bNqdT5tirLyeIrNzl27QstdV/Yyo/rz7xFXIjr6qWrDEGJrTtvxDLaOLxAa7RDsDHgQ2E9tabxGGu1Yr8p5XT+t/43GhRK25G59eiW2vhg0MegKKm7AP4mLJU4Wc/YKEs+4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623802914209.4642918926096; Wed, 28 Apr 2021 08:30:02 -0700 (PDT) Received: from localhost ([::1]:35142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm6c-0004xV-RA for importer@patchew.org; Wed, 28 Apr 2021 11:28:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58520) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxi-0005lS-IJ; Wed, 28 Apr 2021 11:18:50 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lblxf-0001uH-Jy; Wed, 28 Apr 2021 11:18:50 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:38 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:38 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y4wXxFuItarID0qckwmkBIj1g9e3JEKmo0FkYSna2r/g0NTYATzydCvIdh7TlvrDk2aEUk4UKqIJ7SzD/tJJxh020jjn9K6iiaCdGk8+YoujsXXZf4I2dOjZ0BdZeJch7jtqN1Qtw9PYid1OWek/Exs9d0BBIIKQBXvmhQqwGyZ8Hbzt1qt3tV3qWJ9HNhWyTcHyxXkK0WUsJu4hW76hpDAUP8l6fV0l8JPnGK9VckfgfKUQtJHkMeDBEavZAOljcn5oNIpTC5Jl+/IWfmRdeB+bSFk0Qot1XXYFxiWQmRPE7Qk0/yHGzsS+drzsD4/fO9xmGZyd5kK6yINR13c02A== 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=7QXKGVpfRYcqNcIy6bSc75QNsedk461mvwoGSuttgi8=; b=Znjn8UlfC3vg2hU4ZHxrmH180zkJpNBQwSn8eU3akdYUml3pESqVQ+ThbLrOTCp7jVlBZeR1ambQN+nR9RZ7/bB4Z6FKbhFhYnvbiF6L/pe0wf4pjAD6MzHoQuQnz1OCWWn2CNFW1+2HEEF2BEV4SUQVbesN27pgUVYKIKYGm18HifvEY64AKYnVCEbSc/TTcDrfDLzRLkSg5uALJKlJze5u21b3hkE2D8W9gDedXWnvlX65VLlrV+T8Zj+kgonekdEC9yNQldCU8mdTcvzs+nswD+Bvx9wFu8/dl9Jrx0JXFnWUDXnp4WtryM+LP0QZtOOIwtLhGl1fR61eqNAldQ== 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=7QXKGVpfRYcqNcIy6bSc75QNsedk461mvwoGSuttgi8=; b=G8L596Z/mSfvfAJoQAmVrZ9+mCAF7fmJdBxpmr6RefjGHEutuA//xIck98uT09sgu2TFJ8xQ+Hg/XXuxi2euOkaBhjfutQseXqPezjvvaggi9bCgPJSZwCsRruky2N6aS5CRW/V2lsY7Aj8LKUH7BOyq5AU0FkvsutlWrmqKbsc= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 14/36] block: add bdrv_drv_set_perm transaction action Date: Wed, 28 Apr 2021 18:17:42 +0300 Message-Id: <20210428151804.439460-15-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: bfa1331a-63fb-41da-17af-08d90a58e5ea X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:175; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Zz0AEXEeBSYPOEiPChNMcPiCr6qymlazrKd9g6t78K2RR2MqLxRuXG0cF3r+u4VEhVR2N/xGLX8X5uQpQwk1oXHktkw1j/tTZH7W55v+TdlsKGdHBSaCFRJsDtFnTape+JUdqw+IA8/IcNIgfiTIk7r41M267u1864Hw3+Yh86Xop/COP5zR+vpAF3+SnM8Ht2grQOGhRLR1XhPRYm1Nu3FjBOI2GSyN7Tih9tn/iTRwBXUtNbUWRU1e4qyVTglGjmKbJM+xnk29ieHZzzYsAhL8hIfBibgZ+PVO+H9mKziZ6UwXfAJYR2E8a1yihXc2uLULGM8JhhPReczVXLRD8v4vHqTmCDlA+k9brvAMgZMgzOsBqPPwwoxkwhARH7htdqMX0KHEVk23YdvhrIelpeiqqL95K9uYBjvnzEzIpnaNMpIbFf4OaCqJn3xx8LPUbQo2qG+KQAODd1d8NcdPLmB1pNwHu+KRHz83O5JlN09mt088wEoOt8jZ5tIKXZAfE9/ic2QUVa49DgM85sWZ2QFkVzX0SkZg/KliozBcmNSBkt2twSXnNgYWHqs2v/AhHDG1W+IegJs3D/G4mIyw996mlMWhMSLsbDbpwBBmu5YHBstcKb4jeJ50mxRhpKM9yTDZ+68BQ1ftgssjr3LWabIp0B6qJZj8iB70fEaUFZGRZYPiQU1Cdwg5rEwIHCes 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?LOoTXKalzX0pCfa1L/XByTtSA36BBc8+dhKUO9lhd2vz/T6E4m1HJx3sc0p3?= =?us-ascii?Q?kcJMrtdtxUWA1i00rOVcbBTLGELOj63oOFLGoQqFqaJBzsvaeirmo7HlA6l4?= =?us-ascii?Q?s6jKD6Hh0d3orbyuVJLspNAAayZFdsEqn+xn0BdUI3icWYHdTWnRWS3Z+F9U?= =?us-ascii?Q?X5zPxkmnL5GYw6MqnRVFLcFL2qPQUkbfTCzIHAG+c7ti5pdJoiEfZ2f9r1sF?= =?us-ascii?Q?R73Kee86+oKuI5CWo1SZPg00E5dyW/NaNZimf3oiSK0j2a9JrxduYeygdnhZ?= =?us-ascii?Q?qn9l3GShvQJ1NA3jjxbIet6oqcUgFoqYVtBBlWiNVmwc4wXk+0xOLeNRr7vA?= =?us-ascii?Q?wV70PkCo/YoOKdGYJtO9Y0tsZmhC1W3GoGRMs44tcvIHjpMiPXXG8xwEgnoM?= =?us-ascii?Q?O7iSWu7Xz1+aQkx7O4RZ/uNvsSOVhd2VsCQx3q1mqAbo0H3DUxwZKI6VyVu5?= =?us-ascii?Q?y8H7itd0snBOClZhpijPBsdZLDwn0gGMhw45JHnpH+4j5UDPiv3Iy7Ho3AD1?= =?us-ascii?Q?8Ipiy6iD6lbrtN4q91aWY/DhHLloK/FIU5XkAnb68dVzNtCJj4vf8a49D+KQ?= =?us-ascii?Q?XPnqmVzJ1u95dJABFO2rQyVhRhJcndwRq8Yd92sZVEcLZRlvq8BxDNCqyT9x?= =?us-ascii?Q?bjETIn8vDJfP5bR8lfxk5uzFdZDLy+iejAGOx5rzVDKOJ1yK7K7cnpxaEM7L?= =?us-ascii?Q?lir7THdn8W/yaEmJ5DvcM3p0LjHd3+jAB5cptu39jOr4VpcSFFWWmWbponGf?= =?us-ascii?Q?rWEdRAQgxHvPqg5SwqibMZbo7sDx6sRpsfKb6UEty4LMlksxOEOUmDeX15Z+?= =?us-ascii?Q?6URlLAbk2jR8Xd6iR3fqzumUQEqMnuQdIbwDsg6FABB7w7qTQ9sELGNBvEBb?= =?us-ascii?Q?7F6UwfF2BIQx6H/ZMj6IoLgMlEowVfZ5JahBygeZFraERUlJf2RUkbkdEpCA?= =?us-ascii?Q?aytIar0obE1I8eGTc/i4mwDCKG0QiKIiR6FeldkGuvxQuT5HmdPMEnTMPWCv?= =?us-ascii?Q?A4z43i5+iQNCmyiZQXpKmRcNnzV8ORImorfhilyMns30U9wvkExwMhROIVhJ?= =?us-ascii?Q?SBh/BwBV/unD2DoxXUIpmVb4GpKFs1ddLwFhQPFFUWNh8HBmp20o+BGIeX/H?= =?us-ascii?Q?/3eCDJLHx65jFfypJojbDfW8vLCWnkKxLy+WkUE+miOdadFL10yHwPvXumeJ?= =?us-ascii?Q?e7e2IzMPK1cmOw5r8kjyh82BXY9hDTv+TdyMEtNq6o4NUNDKbYLwuZTf1TUu?= =?us-ascii?Q?brGWMbsxAVu0BmL/7xB/5fTvuGtNwQfcxtR/56GRkzU/arI2AB2qzmZAUiiR?= =?us-ascii?Q?irWCsldNw+Tgu3z8MOr3SwZc?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfa1331a-63fb-41da-17af-08d90a58e5ea X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:38.4844 (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: TBMz4LvzfB5LdOn9n0f4/bQVdlCBqPvL05CReD4mNx4qJaGX0Jz9cjDr1e1t5izwRX3wZCw3QhyuY8vrNHqsvv1XVQOP8+qkK6aSE6sn92o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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) Content-Type: text/plain; charset="utf-8" Refactor calling driver callbacks to a separate transaction action to be used later. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 70 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 16 deletions(-) diff --git a/block.c b/block.c index cbcc4c15a0..ab7a4d13d8 100644 --- a/block.c +++ b/block.c @@ -2189,6 +2189,54 @@ static void bdrv_child_set_perm_safe(BdrvChild *c, u= int64_t perm, } } =20 +static void bdrv_drv_set_perm_commit(void *opaque) +{ + BlockDriverState *bs =3D opaque; + uint64_t cumulative_perms, cumulative_shared_perms; + + if (bs->drv->bdrv_set_perm) { + bdrv_get_cumulative_perm(bs, &cumulative_perms, + &cumulative_shared_perms); + bs->drv->bdrv_set_perm(bs, cumulative_perms, cumulative_shared_per= ms); + } +} + +static void bdrv_drv_set_perm_abort(void *opaque) +{ + BlockDriverState *bs =3D opaque; + + if (bs->drv->bdrv_abort_perm_update) { + bs->drv->bdrv_abort_perm_update(bs); + } +} + +TransactionActionDrv bdrv_drv_set_perm_drv =3D { + .abort =3D bdrv_drv_set_perm_abort, + .commit =3D bdrv_drv_set_perm_commit, +}; + +static int bdrv_drv_set_perm(BlockDriverState *bs, uint64_t perm, + uint64_t shared_perm, Transaction *tran, + Error **errp) +{ + if (!bs->drv) { + return 0; + } + + if (bs->drv->bdrv_check_perm) { + int ret =3D bs->drv->bdrv_check_perm(bs, perm, shared_perm, errp); + if (ret < 0) { + return ret; + } + } + + if (tran) { + tran_add(tran, &bdrv_drv_set_perm_drv, bs); + } + + return 0; +} + /* * Check whether permissions on this node can be changed in a way that * @cumulative_perms and @cumulative_shared_perms are the new cumulative @@ -2249,12 +2297,10 @@ static int bdrv_node_check_perm(BlockDriverState *b= s, BlockReopenQueue *q, return 0; } =20 - if (drv->bdrv_check_perm) { - ret =3D drv->bdrv_check_perm(bs, cumulative_perms, - cumulative_shared_perms, errp); - if (ret < 0) { - return ret; - } + ret =3D bdrv_drv_set_perm(bs, cumulative_perms, cumulative_shared_perm= s, NULL, + errp); + if (ret < 0) { + return ret; } =20 /* Drivers that never have children can omit .bdrv_child_perm() */ @@ -2322,9 +2368,7 @@ static void bdrv_node_abort_perm_update(BlockDriverSt= ate *bs) return; } =20 - if (drv->bdrv_abort_perm_update) { - drv->bdrv_abort_perm_update(bs); - } + bdrv_drv_set_perm_abort(bs); =20 QLIST_FOREACH(c, &bs->children, next) { bdrv_child_set_perm_abort(c); @@ -2342,7 +2386,6 @@ static void bdrv_abort_perm_update(BlockDriverState *= bs) =20 static void bdrv_node_set_perm(BlockDriverState *bs) { - uint64_t cumulative_perms, cumulative_shared_perms; BlockDriver *drv =3D bs->drv; BdrvChild *c; =20 @@ -2350,12 +2393,7 @@ static void bdrv_node_set_perm(BlockDriverState *bs) return; } =20 - bdrv_get_cumulative_perm(bs, &cumulative_perms, &cumulative_shared_per= ms); - - /* Update this node */ - if (drv->bdrv_set_perm) { - drv->bdrv_set_perm(bs, cumulative_perms, cumulative_shared_perms); - } + bdrv_drv_set_perm_commit(bs); =20 /* Drivers that never have children can omit .bdrv_child_perm() */ if (!drv->bdrv_child_perm) { --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623379; cv=pass; d=zohomail.com; s=zohoarc; b=VgJeuskqYuIvEaM35wMimC0Q7qwdDahdiBc8+8xtsy9t+9IUjT9ODJIdBU/H5B2ZZIn+Pm3L5MGjvEjtPU3g56hWo4kFJ+hj4Al1T9YIwMrd0uY93kAuxdga05CJVnW3n88A1st1F+p8FCqflhxy3N9btM+rfbH/xfN28o/tff0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623379; 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=rbyITUVuwJ87BW9lZ1LfGdOE7xlaCRRV8Nn7wWjOdwQ=; b=O/dBrSrPdFMiB6kE9Rcy1fa05dStvUkdd19ZyaF+mybbmKPeF9cSlKhHU8u09x9i6uQSk8C75jWuo7eu8wkF91c894njnLNm7WHezHMymOw0bXNBUcjMWr+blaAbp8hKADmsj9d28QTe4hrpdUMMoROZiX4QUoXGZnOB9kDMFh4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623379726485.0775742946812; Wed, 28 Apr 2021 08:22:59 -0700 (PDT) Received: from localhost ([::1]:51372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm1i-0008PI-1j for importer@patchew.org; Wed, 28 Apr 2021 11:22:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58566) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxk-0005mr-HV; Wed, 28 Apr 2021 11:18:52 -0400 Received: from mail-eopbgr00103.outbound.protection.outlook.com ([40.107.0.103]:52805 helo=EUR02-AM5-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 1lblxi-0001yK-5s; Wed, 28 Apr 2021 11:18:52 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:39 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:39 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EZnmPNpUmEvk5qZYWGegZJiEE+o8iT7V8I7CAR72emzMmUDPbLOpoCLePV44RCE2//d4nCITxlAYS3N+tTMa1mNB5LBDkC4wNKZOrEr6LLbifp1q3F78emhMv5bwxlhiCt5Fldq719adEAChNj7fjhnSTb7ouZNVUYY4EshzQ4+SLtz0YXlX47qLTn6HIB1rXHuGH7x3SKczFtLUw36heSDrCS2rf9cL/V6/6exuIMRSYx6zVJrrjwM6DOMTeQlFJ6Nt0fdPQt9GOdiK5Xprs5NROu0d7pgNOWRcN4x74/JD8NZ85UvlgCBU4ILsJzemovgqY3PQ3kjRWblZETPTWg== 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=rbyITUVuwJ87BW9lZ1LfGdOE7xlaCRRV8Nn7wWjOdwQ=; b=E0gMxOgmsX8d8w0gSvt/OdfZXPz00t/dffiJTbi62tlrg8ZNAgtQBjQhF2tFagc4yx/4fa8UxtdWf9z/Yw6mfaZNYh0C2FWH9uJcpmrNG862AXF/6l5IbWkz00IUomyrtXAzjItcDSiAsmDImi+OMzYs3Mqj5o4wRjgdLYiqn1NDNdkLyU7CwG/STkgQ+w+5sBTdWyxZHVzm8F6/pn6iwbicqOPxzT01IA1Tf4Dfq5eTSQXTk26YyuGa9cE7EQ3n47T48BK643ZDI2bHxGkaS/vOI8+bI8ACsLwWvkcqAw9f/RAa66XskHRkKEKwE3j4V03trzSNfkosrsGH2Kn8wA== 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=rbyITUVuwJ87BW9lZ1LfGdOE7xlaCRRV8Nn7wWjOdwQ=; b=G1XliAplOMAPT/ztY4td8L/CFaYqMRBXcFE+0BinkeXhQHMTeN6cOH+EbCgWG3rdpy2Bu6ie/dvOs+g5KxZFZZ4J4azAM79dwEmHaCvCDCB9nRuge/WnMN9Zg1Kg6kKUxsQkuTHhOYZknkdfsvka1ILukTq1QrZ6g0S5a+XzWeo= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 15/36] block: add bdrv_list_* permission update functions Date: Wed, 28 Apr 2021 18:17:43 +0300 Message-Id: <20210428151804.439460-16-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 1996a4f4-df6c-4277-ec11-08d90a58e6c5 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:334; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MZVlviMMDLxbJEYsv7Khsz2Hv3SHWeNG7g0xfmJsXqiKwF+Mp8uOSoJYnAq7gXPF9qhihuJVaHfLxI4UPLFyKE08t5FsKlIouIqVm5kfw7MGkVZcZ6vHQk+FiFzAsDZEzc5LlMXWbPxQXoAItyXTYdWNluq/YelihAZwaBQ3Fu9Sb7RZnC2i6KdgKC5sJv7hWaSmEJjo+c44Zvemc0uvtRB6dlinh9M3dmyD9x7avLQUI2il8MYd3Yy5KXMtxMT3MKPTSKU1FLEWQZeKDWAWHOXpMZvNFri/c/eg8u3vec8f98WOc6OY+4wlcfriODVufvP6w+8wAm7L30gWzJ6m0yZ3nRPMV/OwAeFr/aSzVRRVnS/hDXfpvR5nbm+tcUljLiCn8lbdu9w29CY37JUjwb2UVbKLiTwIXnqa+QLOLDJZgzQXyqF6oRPqrAa1QlhYsd8npbqNODj2xTB6SbK95yamB9NwVt0miHIAWhInt0eXos4r6MB6esbprF1oFeXckt3x/HIYF5i0Zl+5oIDhIsi7rUibI89CyP3xdZPd6blOrObejLKEdoPnI0c46cc9QVuAY4jtmOXBFdee3A5gbkLcC4IVLrGl0ZsCdZtKDW7cnJNht9gg9gFpPc70KrRYTHqQ8gQUMikclVj6d/PQ6vPre/4wSSJSo/VwvgsNkg73w3oC/wOeXIkkbzZps88M 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(15650500001)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?oDb4+dijJdZjd0kHX15e9Eob/9R6V1vrbQ/4d/nBLsEJVZObLfRcjypVh3m9?= =?us-ascii?Q?xQr/EqZvPZsiusTs8wqptJC3Ydx+vNU8lp9mduHKnJs0JbKDlbG76CuLNzw8?= =?us-ascii?Q?JSLpf7/LKjLsmv9lEQI02eXIrxpsZGuPZbyO6fnVpGaXvh+74kQyXXchO6zX?= =?us-ascii?Q?o2PaOgunCxBY3vnGWPOOuRt8rnwnPuHa6wggBuQwGt3rvRxdTxkF6HY93SXt?= =?us-ascii?Q?iK0hP1x1F+hTXL7n0QRAOArTpf9y1s33xrFD/Ufma07ezJLAqdOttpZVYX9j?= =?us-ascii?Q?sLZRwfcSHxYuFRQQtPmLL4K8IBQ3xN0Pd9FQD8Tir8DiAK/kD0jeE3H/8kxy?= =?us-ascii?Q?VDkIL/hUDf7gPoGgoU1suOL5otm1JdWPHXldDGJMgjo0YIypAkAYxxAk6AXc?= =?us-ascii?Q?h1sHSEbc0lW46uFSObZqdQwdu0NiB8/AnxVTXwwAz/J222M3w0sjK4NMoli5?= =?us-ascii?Q?Cmc2LCFGsg3m3Fnl0ErJ8SJvsGS75jx3QBmgF/EkNfnGZcimOmxvLTNGtrhD?= =?us-ascii?Q?CuGOQk4Mp8o8T/vWzhWEKi2HyV+HN39NhVKjp0LWwrp3KZenkek22CvWiEKP?= =?us-ascii?Q?oBcnq/PA41mafRm/ZKcm/eSLuu+F9bp8BE+LYfweW8mNk5Lwb2s996NmHc2v?= =?us-ascii?Q?2u5b7B438UhvxUJ3OXbfaiTvEvvjrk0avsS5pEUU7uQsZ0+pKXo1KkAQIEtp?= =?us-ascii?Q?SuTGe1yhU/sU+BkLjrKTegYTvsJKl5f2FNwGiy7WR0WeeiWP2MOcaO3slj7u?= =?us-ascii?Q?GScc9xZp+IB0EGb8/ihnrcLsjscuZ3XcNQ5Mj78HvzC/3a4kSX5ORW7VW3sZ?= =?us-ascii?Q?CxnHzA9WGTcFPGTCFLxsuS86fWCxxELMXCDWN0c7zzyv8BAH3tNwEwE68rX/?= =?us-ascii?Q?RT2ttI+MhOeT+ywj0kbRa3ukQiQ3gttsweln8bsEd6JxfoBBNnYZxHQITy0q?= =?us-ascii?Q?yYaCn8yKhjlLvzXG6LWvWhtOL2lWJRKKWDHSKJhGjKafbggGlM2JnUAatYYb?= =?us-ascii?Q?O9Nd4m9wAJobHQCv6rwhjtj8Bu9vjT3dDYKHTDqIKLyqOnGrQKn8KbdM/zG/?= =?us-ascii?Q?ph8JvIJYpNaJ9CH658pogvjAythPkaOFSLipFky7+0YU9E5uJ1ZXtUIDakMp?= =?us-ascii?Q?qw5yvlkBByy1oXFFZCYnklHeozgwatxcP80gKIzcaPxz80XHKzPGI+pV2+nH?= =?us-ascii?Q?CBFc4BAvKpXqqc40oAtcDx8mmP8K0ASCgAAkS6OQ0eXyQrO5qsMMHnl7NKcU?= =?us-ascii?Q?cdsDifIhjh6184jzidYJaXkUbYSxaeCMbIfsSV8Aaz+DLRO1beHlp0zHJs/I?= =?us-ascii?Q?PPnLJW8fMAnHbqdrgArB77pO?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1996a4f4-df6c-4277-ec11-08d90a58e6c5 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:39.6274 (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: Zf7JiNFmsZH/XPW/RI1xj6hjP2WfPhtbx6qlNNJn74xjNrF+3vAJ4sOuDMGPdvokQKqEn8CSWjuqQ6/Hc6Yco0NZyn02Yao4jw8WOqBB3rM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" Add new interface, allowing use of existing node list. It will be used to fix bdrv_replace_node() in the further commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 106 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 35 deletions(-) diff --git a/block.c b/block.c index ab7a4d13d8..98b7bc179c 100644 --- a/block.c +++ b/block.c @@ -2249,7 +2249,8 @@ static int bdrv_drv_set_perm(BlockDriverState *bs, ui= nt64_t perm, static int bdrv_node_check_perm(BlockDriverState *bs, BlockReopenQueue *q, uint64_t cumulative_perms, uint64_t cumulative_shared_perms, - GSList *ignore_children, Error **errp) + GSList *ignore_children, + Transaction *tran, Error **errp) { BlockDriver *drv =3D bs->drv; BdrvChild *c; @@ -2297,7 +2298,7 @@ static int bdrv_node_check_perm(BlockDriverState *bs,= BlockReopenQueue *q, return 0; } =20 - ret =3D bdrv_drv_set_perm(bs, cumulative_perms, cumulative_shared_perm= s, NULL, + ret =3D bdrv_drv_set_perm(bs, cumulative_perms, cumulative_shared_perm= s, tran, errp); if (ret < 0) { return ret; @@ -2316,36 +2317,53 @@ static int bdrv_node_check_perm(BlockDriverState *b= s, BlockReopenQueue *q, bdrv_child_perm(bs, c->bs, c, c->role, q, cumulative_perms, cumulative_shared_perms, &cur_perm, &cur_shared); - bdrv_child_set_perm_safe(c, cur_perm, cur_shared, NULL); + bdrv_child_set_perm_safe(c, cur_perm, cur_shared, tran); } =20 return 0; } =20 -static int bdrv_check_perm(BlockDriverState *bs, BlockReopenQueue *q, - uint64_t cumulative_perms, - uint64_t cumulative_shared_perms, - GSList *ignore_children, Error **errp) +/* + * If use_cumulative_perms is true, use cumulative_perms and + * cumulative_shared_perms for first element of the list. Otherwise just r= efresh + * all permissions. + */ +static int bdrv_check_perm_common(GSList *list, BlockReopenQueue *q, + bool use_cumulative_perms, + uint64_t cumulative_perms, + uint64_t cumulative_shared_perms, + GSList *ignore_children, + Transaction *tran, Error **errp) { int ret; - BlockDriverState *root =3D bs; - g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, root); + BlockDriverState *bs; =20 - for ( ; list; list =3D list->next) { + if (use_cumulative_perms) { bs =3D list->data; =20 - if (bs !=3D root) { - if (bdrv_parent_perms_conflict(bs, ignore_children, errp)) { - return -EINVAL; - } + ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, + cumulative_shared_perms, + ignore_children, tran, errp); + if (ret < 0) { + return ret; + } =20 - bdrv_get_cumulative_perm(bs, &cumulative_perms, - &cumulative_shared_perms); + list =3D list->next; + } + + for ( ; list; list =3D list->next) { + bs =3D list->data; + + if (bdrv_parent_perms_conflict(bs, ignore_children, errp)) { + return -EINVAL; } =20 + bdrv_get_cumulative_perm(bs, &cumulative_perms, + &cumulative_shared_perms); + ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, cumulative_shared_perms, - ignore_children, errp); + ignore_children, tran, errp); if (ret < 0) { return ret; } @@ -2354,6 +2372,23 @@ static int bdrv_check_perm(BlockDriverState *bs, Blo= ckReopenQueue *q, return 0; } =20 +static int bdrv_check_perm(BlockDriverState *bs, BlockReopenQueue *q, + uint64_t cumulative_perms, + uint64_t cumulative_shared_perms, + GSList *ignore_children, Error **errp) +{ + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); + return bdrv_check_perm_common(list, q, true, cumulative_perms, + cumulative_shared_perms, ignore_children, + NULL, errp); +} + +static int bdrv_list_refresh_perms(GSList *list, BlockReopenQueue *q, + Transaction *tran, Error **errp) +{ + return bdrv_check_perm_common(list, q, false, 0, 0, NULL, tran, errp); +} + /* * Notifies drivers that after a previous bdrv_check_perm() call, the * permission update is not performed and any preparations made for it (e.= g. @@ -2375,15 +2410,19 @@ static void bdrv_node_abort_perm_update(BlockDriver= State *bs) } } =20 -static void bdrv_abort_perm_update(BlockDriverState *bs) +static void bdrv_list_abort_perm_update(GSList *list) { - g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); - for ( ; list; list =3D list->next) { bdrv_node_abort_perm_update((BlockDriverState *)list->data); } } =20 +static void bdrv_abort_perm_update(BlockDriverState *bs) +{ + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); + return bdrv_list_abort_perm_update(list); +} + static void bdrv_node_set_perm(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; @@ -2407,15 +2446,19 @@ static void bdrv_node_set_perm(BlockDriverState *bs) } } =20 -static void bdrv_set_perm(BlockDriverState *bs) +static void bdrv_list_set_perm(GSList *list) { - g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); - for ( ; list; list =3D list->next) { bdrv_node_set_perm((BlockDriverState *)list->data); } } =20 +static void bdrv_set_perm(BlockDriverState *bs) +{ + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); + return bdrv_list_set_perm(list); +} + void bdrv_get_cumulative_perm(BlockDriverState *bs, uint64_t *perm, uint64_t *shared_perm) { @@ -2523,20 +2566,13 @@ static int bdrv_check_update_perm(BlockDriverState = *bs, BlockReopenQueue *q, static int bdrv_refresh_perms(BlockDriverState *bs, Error **errp) { int ret; - uint64_t perm, shared_perm; + Transaction *tran =3D tran_new(); + g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); =20 - if (bdrv_parent_perms_conflict(bs, NULL, errp)) { - return -EPERM; - } - bdrv_get_cumulative_perm(bs, &perm, &shared_perm); - ret =3D bdrv_check_perm(bs, NULL, perm, shared_perm, NULL, errp); - if (ret < 0) { - bdrv_abort_perm_update(bs); - return ret; - } - bdrv_set_perm(bs); + ret =3D bdrv_list_refresh_perms(list, NULL, tran, errp); + tran_finalize(tran, ret); =20 - return 0; + return ret; } =20 int bdrv_child_try_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared, --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623866; cv=pass; d=zohomail.com; s=zohoarc; b=MHUs7mfzYkFJHAvNySx++IFaGI/EyH1W+3gua+czPpAEzCOjk9+LfV2qxsbfGZvlNjElIsD8aVrEG+dyzNlcYp+XAPrd7srU3vpEQtFRKYyBDDDgKZuG2LKnaEqTWsA2LKybZ0A+htEvKL/NVBVMgrp6QaGtyX10gQxjKapHnyM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623866; 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=d2+tV2FMrGSSkzrYmtyH9O+NsjPqNwLzweJ4ff+SUuo=; b=ao2DGz0TAUbW7F0lm7qU5QEOE6T5JYliZvTjbKesceqETldDy+NUjpFCbxVrjzfpTp84Bnd+8EGbUbF4NtPurMu2WJW2oL6d7iVMuDrF/pqWfSH/xb/5H5ymwELKH08NN6LNo9BwD6Ngpzee1/F5Ok257HewOCiJ1Q0iMkkYnPo= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623866956242.3301296535834; Wed, 28 Apr 2021 08:31:06 -0700 (PDT) Received: from localhost ([::1]:40962 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm9Z-0007Lo-Ra for importer@patchew.org; Wed, 28 Apr 2021 11:31:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58612) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxw-0005nu-F7; Wed, 28 Apr 2021 11:19:13 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lblxj-0001uH-5D; Wed, 28 Apr 2021 11:19:00 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:40 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:40 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FkU4EZt+Ys1BTnRLEmBgcwZZ3+1sLGPMEM6jawxl7iFTwg/Z6imkC21GlA6czN71navtHknwVziJsuRXP/cPBVV5NmOBD0XUEhK2bIcyrCcljCA61AAC3B5lo+gn6bZgS1R+6UZK233suhlwzdKIqe0lxc2wjkUeM1ijc7e8QWno7eceuYi02ZUiFJ4i6ppgkBpf86Wdq41rEh2IcaEOhbiR2rY373iEr769Lfmk5hn+SvxpSqB8VpoLcYdK6ta5fp/pGMesBSNHGiT4aD2UsA6wGZaUK/LPKQdSsaGm/6N5Ro1XC4C8EwE86z5P5QIEaFLI/gI0qDVnPTIY1phDtA== 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=d2+tV2FMrGSSkzrYmtyH9O+NsjPqNwLzweJ4ff+SUuo=; b=OttzcHgpli19GC6+knyXIRwlPNczIxPex/oK1BUsSTQKDKcbWG8c1+W1j1rwh7Qv5qozCqTWCzlUcQ4/BxgrhKiajYLm2H5deYbysoOIy3++TViS7e5rK1zBYfI7K35oLCEoFAw1OArE0vlvtNbdCA8/3e+0UYupJPQtKQTY/kRUDGaWb8RPiJPVSYKWiLtH9vEiS2WUKZ4ytoKlGxg2fk/9LQMyu2NXyG78pMyHpUbfj46AHni73yceeagBXvW+r9ILQ4CYJxZUlAt7ZdgCjiFu+Ix5v+g3SUEStYoqQ4ykrZAqzfqNASq2YAC8R+Mrtk2mYnQh1g4xQhGgWfzSVA== 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=d2+tV2FMrGSSkzrYmtyH9O+NsjPqNwLzweJ4ff+SUuo=; b=lW2AyFDg+FG45TpPL40K7TQ7I3f9pPe/HYs/s0mOggP9LUPXaKoX9LQYaVkmxVT6kqM++Bjs7hlgbmL7nJJyY3c8JsFc9TPGOlNwPOW2gtDyX1r+nft3KZDJgpWGr3h8sSoKFuM6xGsYwKhoEQgfM2iuEdsck9CZ+e7GW+HB9sk= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 16/36] block: add bdrv_replace_child_safe() transaction action Date: Wed, 28 Apr 2021 18:17:44 +0300 Message-Id: <20210428151804.439460-17-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 94d6f3b8-3a99-4256-5398-08d90a58e76e X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:159; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ds3gWjRsrkv2v7QQiFFnwi6aGH0gg6n1PkXQxvx4Ze24GRawBqBNkSrc0bkOm6e2V2uQEKbREGrQ8A1MRPnkaibbxV57hR1u3ttEhlsZgq/xvNf5Wa+07bx6l7UDpXIShHUEn1JLaCACWmpJrQ0iQd+caueg+UgqELkUz5XWDvH6ZtEvd/Y1JMdva4EnqDDV9ai4LNUw6d/21QM6Sl0QC70e27g+2c6snGeFiLsrzE7tOoUgg1LdGKsLNcl+c10DFxD4j2NuVDQAyfjWvozaheXhGUeIvhyYSSw8YyPdc/dUS3QX3jGajsamhjPwo0SLZYbqAbFIwYstlrgNuBgk66fpOjglbwnF35y+unTRpOVONSoSezuT7woY3CrCmQmIV5lB+jkBSH66iX7IR2JRF1jheLy4y5yIqeaYj9DFppp+GwSuZJnUGcejJhapEMCaHi8zcXoo8OWHOnF1pxUYlFoRKCzAf3hUPp31dj5lUURzPC4ZR+gnnX6csUBX7xVhRPeEPe5mK9RGQzt7e8g0nIzIe9z0fI7qOU1YMVlC+bO6ajnAHqYHfryQ1eolm762Pzh/mreYpmVCRZEguyz6nmilvPxfBMCs1fv+MIN/rGiWb4pIAJjN7cR2lOc94eZ/hNWKRPJzUR5zPkrUKHQNwx0h4oPqlrIkw0J2ipz6x7IYTOfnbjhsVm/ktCK5IMkM 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?4OZ0RWdQjBqdU1gIxlZ+dQRyPrm6dNEWXX/bJaIBya5ADdkoKTBDUIFN5gkI?= =?us-ascii?Q?T0Rrqn9VrlYrycF1H2bq/BCocQGJQ7cpI3l5eMNZz+fD073S7eWHilfIRDFm?= =?us-ascii?Q?THyS9G7vItLWuAQoMNTl/EMMS39aptelSE9R88HRm2DN8FbbcnMLf7D3XwaA?= =?us-ascii?Q?+2fS+NdSSxbNLuoMvl6A9Ml2TUFHw+MZ7jTewSCXrRVsTTuQ3KjZft18rDns?= =?us-ascii?Q?gdUx1HmXpt0M7YGPpECgdezZYv3mIhh8FOLIE11XhX9Ua4IjDWu56pnGJog9?= =?us-ascii?Q?fWpu+EtDOudk5mWSMEsdJ0dp4YCYZqYMLKYdOw1NXpaA0uU1Naxqap8iS33p?= =?us-ascii?Q?7/iNrL2KJHH0xNmz+5xHX97z7VdkLa/DUXRkReciWkXu4LePE19LVjgtraxg?= =?us-ascii?Q?BRuNXN53YEoy2tc8ciDGJjNGEiAWZETzCHphJgVFcHWNsal94WL0V60rdLGJ?= =?us-ascii?Q?QAefywQgSO64j+l/64u21l+b6ytUEiOMax2KsegG0NBs1gkunYOWvMSdXqan?= =?us-ascii?Q?35/EgksnFzriKzAlaqTgr3mk2O6CnNdPIeQEkwjRScHOi2iaOcs05g+/0Clh?= =?us-ascii?Q?3J7iVozVc9BVqsxqH6pEdi+hS1VZ2Um1/DovgaxORSd7/DldDda52+4o6t8z?= =?us-ascii?Q?VGsiCXpe3z4k1eWZ8zl9r3DYl7OTVn+iDgXzzKcb27MexkyamxHoJvXL1kWM?= =?us-ascii?Q?LRHljhg7sXpmsaB0YhOn9jWdZMERijh3eio2Lmv7S8hZhKazwjAl/pQqiCtu?= =?us-ascii?Q?izUQfFrbnWbc1x01ii8Sv+hv+fUiqTaoBllxKjoihJssmHdeGrxTKt6q1Q5X?= =?us-ascii?Q?+9bmMJs/ymbJm/d++5L97TPq4y7+5Lmgowle9lCJ7iK6sJIq32Cf9B6Bprvl?= =?us-ascii?Q?uY4sgjeY/MioW/04TGTZzS+GRv0U80wOMD5y+GO9jKba0WqHj6Ep/VFrN2hM?= =?us-ascii?Q?QjHsArut2lh+dmjlyd1sDM1D0AhNENEQKHoR7XkAurjmoZOM2LZLhicn63PV?= =?us-ascii?Q?kgo/hiB0Kv2+Vz7h/pe47iCevVrjhYqsQa6GOJsLvK6Ig6LB329Yw7bO7qXe?= =?us-ascii?Q?Xr9/7ZnDCTRowtpiQEYK4fy4X1NBc8s0alW2/OsOPWtjcnAzzozaxWvdvzH/?= =?us-ascii?Q?DRo4QEHD9Y/SSnzVjTcvwrs4FHDjNurvdsZ/eMVffAG58AhCzC51gQhofWFo?= =?us-ascii?Q?0+lyoS0ZelLVkXTlp5ux7uDEoPuYcpnlKPaVFu4a7MWQvSFa+G9GlKzEkQ9D?= =?us-ascii?Q?lIlY3bAgp2xlLvApkP3P1Q82461pO5JHvvUG6M6FIWeoM1EBVOOQY8eswq5N?= =?us-ascii?Q?I7eaV2yzlKRWSP3u0MWdj8eS?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94d6f3b8-3a99-4256-5398-08d90a58e76e X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:40.7087 (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: NfrtrmweCXOhcWy5x/+1CRDLd1/kuM0goKjca/PUC7I2CabD8Z1KdmGirESzHWrUWjeKEfc6EqN5p404Q7oNfjaFSKq+z7rkLmY5Vl0MpOY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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=unavailable 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) Content-Type: text/plain; charset="utf-8" To be used in the following commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/block.c b/block.c index 98b7bc179c..a5305662dc 100644 --- a/block.c +++ b/block.c @@ -83,6 +83,9 @@ static BlockDriverState *bdrv_open_inherit(const char *fi= lename, BdrvChildRole child_role, Error **errp); =20 +static void bdrv_replace_child_noperm(BdrvChild *child, + BlockDriverState *new_bs); + static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQ= ueue *queue, Error **errp); static void bdrv_reopen_commit(BDRVReopenState *reopen_state); @@ -2237,6 +2240,57 @@ static int bdrv_drv_set_perm(BlockDriverState *bs, u= int64_t perm, return 0; } =20 +typedef struct BdrvReplaceChildState { + BdrvChild *child; + BlockDriverState *old_bs; +} BdrvReplaceChildState; + +static void bdrv_replace_child_commit(void *opaque) +{ + BdrvReplaceChildState *s =3D opaque; + + bdrv_unref(s->old_bs); +} + +static void bdrv_replace_child_abort(void *opaque) +{ + BdrvReplaceChildState *s =3D opaque; + BlockDriverState *new_bs =3D s->child->bs; + + /* old_bs reference is transparently moved from @s to @s->child */ + bdrv_replace_child_noperm(s->child, s->old_bs); + bdrv_unref(new_bs); +} + +static TransactionActionDrv bdrv_replace_child_drv =3D { + .commit =3D bdrv_replace_child_commit, + .abort =3D bdrv_replace_child_abort, + .clean =3D g_free, +}; + +/* + * bdrv_replace_child_safe + * + * Note: real unref of old_bs is done only on commit. + */ +__attribute__((unused)) +static void bdrv_replace_child_safe(BdrvChild *child, BlockDriverState *ne= w_bs, + Transaction *tran) +{ + BdrvReplaceChildState *s =3D g_new(BdrvReplaceChildState, 1); + *s =3D (BdrvReplaceChildState) { + .child =3D child, + .old_bs =3D child->bs, + }; + tran_add(tran, &bdrv_replace_child_drv, s); + + if (new_bs) { + bdrv_ref(new_bs); + } + bdrv_replace_child_noperm(child, new_bs); + /* old_bs reference is transparently moved from @child to @s */ +} + /* * Check whether permissions on this node can be changed in a way that * @cumulative_perms and @cumulative_shared_perms are the new cumulative --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624863; cv=pass; d=zohomail.com; s=zohoarc; b=SMyaasPzPlsAqFypNTcRKmOECYiS9GTLjzscjgMO1nX2vYV0fbvowXGc3eCtA1QJ37dl9QJbf7kjcMI5ljQozbbjuw4VAesGEEs0GwNabQ27Pvm5aiutihGg3b5Kdhi3v0Z1w5uatEuUBcAfWm4c9mAcpooZuvsioQ92A72rNPc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624863; 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=6+x9m+EDn0dnT0qYqjHjJC6p9yPVH0tlnWLSqDYQ4/Y=; b=QnmgT/thj4IWW03X+1M/HaSRneiau3y0X+hA9FDiP42lGaq2gHoAoQ8MN1GqM+1Kff5FCKt5Ofu5MUCLtH4+uZRD8o0FuNHD2agpApqgjTMWJFAZ4Zw8MPNP5JMzOBNc6Yp7bu9yWCOCbGbR2Iy3E0uXnC4O7w3NOUxbGZuFlhM= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624863336213.10017800828018; Wed, 28 Apr 2021 08:47:43 -0700 (PDT) Received: from localhost ([::1]:47288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmPd-0005Wl-Vx for importer@patchew.org; Wed, 28 Apr 2021 11:47:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58632) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblxy-0005oY-2J; Wed, 28 Apr 2021 11:19:13 -0400 Received: from mail-eopbgr00103.outbound.protection.outlook.com ([40.107.0.103]:52805 helo=EUR02-AM5-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 1lblxl-0001yK-6g; Wed, 28 Apr 2021 11:19:05 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:41 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:41 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j6BKqWOXC0xqLKBtgw3Ma89STzaeqTClX6rUAAaocXRk/XbwB22K285VhLXfK/XRsIk2QcluNZxV9kxIsKwcQL9pNbZ6wvpvxf3nKNfrtP4nR4j2SNJum3D4IzvltvTnmyb3/X1IRPeP7tZEi+Zy/SQ/HYMbOh7chvtt2MBB5mTF3ht06g6FoZmRFFUYYqM0eWGiJNYwjdPSj8Y3lyT4TI5Skss4mOIBZctgi5mbzl09iVCzlVs0NOXEEBo/F5lMqMHY1ym5XDYQkIE8n1Yp95kFA3fif0sOLch665d9H1otdaBv8Nh9N+yJJlc58RL+PfIVuNtY+Zubv096LWr1bA== 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=6+x9m+EDn0dnT0qYqjHjJC6p9yPVH0tlnWLSqDYQ4/Y=; b=X3Y2ekriu1otONVdC+euHql3J39Cbh5wT4JZi7jeUHOD7GxCkq7gz4cVjWZnCupPJlI6RtvJuUWF1u8+kaJgH9EE1M6hiC+WPnBP/B67C58dAzmOu6taXl83wFz17nXDba4OeD1bbmTV7mxxqOiV76FeWDrLclVR/Y2dElriPZraeYrEJl4q9IFfnLRv4pCMWbmbRRH8nRE8EqUxVI9Ra4Fnb/oBoCIDcqwlwe0DJ45/IM4ysva6j1lKAiODHKgSA7BpPkpQQNko91V0QMEHtPzoEvP38n/nLs+TXzyN1rJFIiL8/L4jYlX2KPA79DmFwngVXSHPfcKhMXO/HshDAg== 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=6+x9m+EDn0dnT0qYqjHjJC6p9yPVH0tlnWLSqDYQ4/Y=; b=d+ln8Wt0gPCR/kjbCX9+QuXB4qlWQjVKNUx3kcx228k2ETpQUmvnQDpLHm1/0vFsRNAEC98YhA680KF+eWiWgkyRk40pfIrUUUWF6402YGb13rCg/KAwfvdWABnxpV+19mK16Hy1AxXs1GpkdT7O1MQTp8dO1Wfd4qPBhqrtUao= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 17/36] block: fix bdrv_replace_node_common Date: Wed, 28 Apr 2021 18:17:45 +0300 Message-Id: <20210428151804.439460-18-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 37af1231-b0a9-4db4-e870-08d90a58e814 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2399; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: n7U0qsR9E57u5NeonG15ZHb0+qQuOq1EheMobsgFClKDH6lMicJ9MlWoh7EkoCi7Ay1aKi9km9xwgucyDzh+a0FuSsJUFzT64+DnCwcVa2UDWWMQoKjKGXjgYQy5ZLqWJjeRVrrCF6pN9RyalqFtQctd1D2yJdTsdyt6Us5vEID3q9k+i4VGrXwkSpFTWc+ya233/aBWfCiZoiAonny+LxmuLhXEsIF1B0z0cOS3jDfqPZIH/71MDhoMQPwx50g88bKGh7/YP0V/Fv0RavDrVZL0fu3eAANf9arcTCijMcruT7ydWuND4ioKzrWu1Qnsc8jkl1uZ/BX6ToxzEcq8bGYJ1mfZbUZMftMtz+na7h4zADuwJSdPu8S66mdJUGyF8nfMqlEla2yPuMbYIaslGL29btH46XxJcVGTKFslRFzs1NOe+3uVEEbe1dvayI/9hVnOohCnbEy/TFr3WGLLEIG/4cOICSqVZpjdgPI0xB1UVsj8XGf8QLY8Tz7TgFNHaa5bFea+TnjY0nRDhkXyXVU1k/62u3HAaEGOxTzFKVV9KouH4P7ttP9LN9M/mitLGiJlaynUZnLfYaZJ+BnXAYV5O0k0t6QZM2EYH95RjZR/jEIMEQxAyLnsl/jTQh8FgkV5OWaCq/frGoqd9uoNDvXdAKC0JXubgOMsDKxzgkZnGF1y69TbZkSEbiLlDt87 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?au2rL9dW4MRTtbQw64hLqy//xHEIhfNlhnINCgougPA2xSL4q0u16EsWxo16?= =?us-ascii?Q?40wjluwQCXcNiiMBCa/O6On5TGeZmt9dCHbMj+eI2Jp71gYw96eLkOFM1wvd?= =?us-ascii?Q?EAlR1gNtblKZTvRHlnG/yKzv9MZAHt3/8G06C0Olb+HPRsDSm1hlaf/sRKzm?= =?us-ascii?Q?j2p/OSgaUN7LuKTMbKmCOQamOT7WqLmD5MmBncdBEzf5BZqjyyVZPUTkbV36?= =?us-ascii?Q?Z/9D0Pxm2FItbASxWIKxvjYSGnKj1T3XTxR9vVmum8fPk7/ISGZTMSVThGoQ?= =?us-ascii?Q?+oIZLRttWJOpC6bN3S9kgf9yvTru3QK+xhV7D3ASmtdJjVN/y0FXHG715c8h?= =?us-ascii?Q?fHqlCKhTXDWMmfPiGq8tNzvltdYDPs8PkbQgJ08xmo4RDP/uLUu8+xlqECwM?= =?us-ascii?Q?a77P6+e746rxx6/i0reYm3GOF23JhyxdvGm/btTJS2VITZEmmJ0ENfeg0W0M?= =?us-ascii?Q?X6zs/knuDwc4vbixZryHC3FDQu7f192m9Nuosas4r9ssnfqCTz+04H4KIvlX?= =?us-ascii?Q?qWqLs6+JSkR9Rso1SqpPGnO3x7eLJgZl7GT/9lbacQtymxn5cOPeea8aGk4p?= =?us-ascii?Q?6UPUbW+q3KaKwHMiGPsmMlBuLmdSvTAdeijQLhjhnU5kQR3qrHEBIvLsPjUg?= =?us-ascii?Q?HRY4ncqA5lwn4naU8Casyx1dXJrBYlriK6SOBvwLSPIzLVrDSaQnGEQ0FUqg?= =?us-ascii?Q?gxh6ffeTsIhW+xBob9Sttd0noYaj/5BCj2WLdMH2By/e8vHHrkfayCZZ425h?= =?us-ascii?Q?KqzGK+2LApAcd51R1GZ6SdrIQC6niQlBfxZvzuUlED3bpnQlmbdBKDzgDlWY?= =?us-ascii?Q?S9QLTR2sr/Jz3oZeO3rBCeJVLF9BAO/0/IhHQZWCHd75u30rjb8zQw91SV0h?= =?us-ascii?Q?f3UPJBUF3Kr7hBvrAaRGecJRLjzr2wtzPgLHwxa4ct9vTDyeoQ5asw6BQZCO?= =?us-ascii?Q?d9/49T2qbMxlO/Ra2Y5atzXc2+0jyQCZvrTQbQU35RWLDaLTTU0TN/6pgLpP?= =?us-ascii?Q?YUJhlBUQ9m6gtEEqR3SyZKkyFsGNgBkc1CFh4AABu8ztMvXdEAhYUZ96nz1V?= =?us-ascii?Q?4U9qKLyo0ElZM150HIfv4uEaDObhdv2AlHJH0vHIWke8417I5SdLlYdIphjW?= =?us-ascii?Q?wAS2cKbSm918RjNbDN5Hm7hSHPE0MNNGRcSx1mTm02N+XwCbM1KBNxTMh6ry?= =?us-ascii?Q?YXFPWDmUAl+2d65eds9n6fKNvpEWJfyyHU1XcRCPY36Y//Ap/9geogvOdsfq?= =?us-ascii?Q?SaWuaS43YZLKEYHSax4DbZt1tFBV/cJqj3ZaBS71N1klLRyfLgpyE+wa1u3g?= =?us-ascii?Q?FVGQkaXwF+oR4FYTelmJ4Ht4?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37af1231-b0a9-4db4-e870-08d90a58e814 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:41.7909 (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: JI7YhoRwyybQwEdqybgslYFcFA2uqZC5qxZlDavFhWIquhSTu05zGC6DgzP6/T0J53Pf2K6urjx/6xO58a/HBKPAzA+VbTUlmJ6UDEDeIwQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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=unavailable 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) Content-Type: text/plain; charset="utf-8" inore_children thing doesn't help to track all propagated permissions of children we want to ignore. The simplest way to correctly update permissions is update graph first and then do permission update. In this case we just referesh permissions for the whole subgraph (in topological-sort defined order) and everything is correctly calculated automatically without any ignore_children. So, refactor bdrv_replace_node_common to first do graph update and then refresh the permissions. Test test_parallel_exclusive_write() now pass, so move it out of debugging "if". Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 43 +++++++++++++------------------- tests/unit/test-bdrv-graph-mod.c | 4 +-- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/block.c b/block.c index a5305662dc..6040b9dea0 100644 --- a/block.c +++ b/block.c @@ -2273,7 +2273,6 @@ static TransactionActionDrv bdrv_replace_child_drv = =3D { * * Note: real unref of old_bs is done only on commit. */ -__attribute__((unused)) static void bdrv_replace_child_safe(BdrvChild *child, BlockDriverState *ne= w_bs, Transaction *tran) { @@ -4877,8 +4876,9 @@ static int bdrv_replace_node_common(BlockDriverState = *from, bool auto_skip, Error **errp) { BdrvChild *c, *next; - GSList *list =3D NULL, *p; - uint64_t perm =3D 0, shared =3D BLK_PERM_ALL; + Transaction *tran =3D tran_new(); + g_autoptr(GHashTable) found =3D NULL; + g_autoptr(GSList) refresh_list =3D NULL; int ret; =20 /* Make sure that @from doesn't go away until we have successfully att= ached @@ -4889,7 +4889,12 @@ static int bdrv_replace_node_common(BlockDriverState= *from, assert(bdrv_get_aio_context(from) =3D=3D bdrv_get_aio_context(to)); bdrv_drained_begin(from); =20 - /* Put all parents into @list and calculate their cumulative permissio= ns */ + /* + * Do the replacement without permission update. + * Replacement may influence the permissions, we should calculate new + * permissions based on new graph. If we fail, we'll roll-back the + * replacement. + */ QLIST_FOREACH_SAFE(c, &from->parents, next_parent, next) { assert(c->bs =3D=3D from); if (!should_update_child(c, to)) { @@ -4907,36 +4912,24 @@ static int bdrv_replace_node_common(BlockDriverStat= e *from, c->name, from->node_name); goto out; } - list =3D g_slist_prepend(list, c); - perm |=3D c->perm; - shared &=3D c->shared_perm; + bdrv_replace_child_safe(c, to, tran); } =20 - /* Check whether the required permissions can be granted on @to, ignor= ing - * all BdrvChild in @list so that they can't block themselves. */ - ret =3D bdrv_check_update_perm(to, NULL, perm, shared, list, errp); - if (ret < 0) { - bdrv_abort_perm_update(to); - goto out; - } + found =3D g_hash_table_new(NULL, NULL); =20 - /* Now actually perform the change. We performed the permission check = for - * all elements of @list at once, so set the permissions all at once a= t the - * very end. */ - for (p =3D list; p !=3D NULL; p =3D p->next) { - c =3D p->data; + refresh_list =3D bdrv_topological_dfs(refresh_list, found, to); + refresh_list =3D bdrv_topological_dfs(refresh_list, found, from); =20 - bdrv_ref(to); - bdrv_replace_child_noperm(c, to); - bdrv_unref(from); + ret =3D bdrv_list_refresh_perms(refresh_list, NULL, tran, errp); + if (ret < 0) { + goto out; } =20 - bdrv_set_perm(to); - ret =3D 0; =20 out: - g_slist_free(list); + tran_finalize(tran, ret); + bdrv_drained_end(from); bdrv_unref(from); =20 diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index e64e81a07c..7b3c8b437a 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -408,10 +408,10 @@ int main(int argc, char *argv[]) test_should_update_child); g_test_add_func("/bdrv-graph-mod/parallel-perm-update", test_parallel_perm_update); + g_test_add_func("/bdrv-graph-mod/parallel-exclusive-write", + test_parallel_exclusive_write); =20 if (debug) { - g_test_add_func("/bdrv-graph-mod/parallel-exclusive-write", - test_parallel_exclusive_write); g_test_add_func("/bdrv-graph-mod/append-greedy-filter", test_append_greedy_filter); } --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623635; cv=pass; d=zohomail.com; s=zohoarc; b=KtZSD+Kzf/ZlvoHq6LqJ9Lbs5xV75YImWORzUCC4WR0TdNjAEglrCpYKIqQwY7a1ZvvCHsYU8nAnJlO64Dx+uiOaIS+leq4jCdWB9qCT230DwU2vAJzOUMgunrIvyk7Xxcp8R96rttzObmt8DIyI0Yz3XGGrXGuHAc8NYtW91Jk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623635; 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=poJvTxiIQmarTZSzrE9CsjRXbs8JYbvVG6G9cOdnK78=; b=ZQL9TuUtL7/TJIL3X2XoFix8puuqmoZy/Gig4VTFVg6dl+6qnBXhzzpdmwURjgw2TvdnBT3jzk4VSSslcWFVdkLxsvfJE/vGXFTGtNsGAMWzpen3TYa4Jv+QEY3HHbVgZaH0c6wU7nzOm0Bwa1EbHOcBEjYYQTnndhLAHHfEDwQ= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623635914639.3587491116691; Wed, 28 Apr 2021 08:27:15 -0700 (PDT) Received: from localhost ([::1]:60844 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbm5q-0003wi-Pu for importer@patchew.org; Wed, 28 Apr 2021 11:27:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58742) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyF-0005qP-PU; Wed, 28 Apr 2021 11:19:25 -0400 Received: from mail-eopbgr00117.outbound.protection.outlook.com ([40.107.0.117]:54347 helo=EUR02-AM5-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 1lbly1-00021X-EH; Wed, 28 Apr 2021 11:19:21 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:42 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:42 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mCee0sQgSHh/DqVj26VjXarY4EJP/SSWNGWNhGJdsyO6wvfboXtIYNxGYnkCj+uND50UhmULNxoloBwZHkU/+EN7Pjav7X2hOdz/2WOhs23fA5pDUizewvaG1fLGZvOJ2UvaOv0QcrH4YLAZZH1EGGgLEvq8Lb6svun9qwubK3fsoE/G8Py+hH5+Q1t5QySHOkolKnv9mBn7f79ok+ZunUqsk/t0mrKqFUnjEhqpENQYbyMrwDTZDJKi3tu2CAiPnnfF61SG3x1A+BTl5EL+7/W6S5IphlEmbw2eIg0y0kY1GAlbDDk4LYw9jTNLUzvfog23/XKoBuy8KXcYGLz9yA== 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=poJvTxiIQmarTZSzrE9CsjRXbs8JYbvVG6G9cOdnK78=; b=O/sVgx/spkFRD8KHtd2h5Fp62IX6naeb9YVzq9ETiXBrLb0tQ1QUpD7s61SWZGh7AnjLtgwZNglQwbw0/n/3MICyclFlgzjmxtZ/9vz43MoasX5HgdrSDMriET52jUHOVEy05uchJmLJ5Y8oA2d+x3Tn7FO1yXtN5zGjroJ98SFLGcvCU6/0FLwB2BSclm33OskZ6zUx7EWz9u7CP4sQsHnBn3epD/K9bH36l3D63qa65Zqs6gOnB4tLr6MOBN/Bu1NBNnLfwfdx6QIuv+Wghwqv1HAkzpLSqm6k4pD+NnAbOR391NqOMsD7FF8k5UGQZuoyTzIChn3CUlqN1SQSlg== 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=poJvTxiIQmarTZSzrE9CsjRXbs8JYbvVG6G9cOdnK78=; b=jhPeG43bzYcWI5Pgx9PQ58Y5e77Kj7u/sIZRggxDCUazkidfvfrtommAp9jM8slqhryjAeYxr55s4hFU1n9btcHPs5YmJ7OuBPya+rfCMk2dgVuqj2D8cdbRU4OqRp2xP7zwYfIAtIuawCFDceogqiWglOAM4b59Sh4p5gD13Hw= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 18/36] block: add bdrv_attach_child_common() transaction action Date: Wed, 28 Apr 2021 18:17:46 +0300 Message-Id: <20210428151804.439460-19-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: ad2ecb31-3431-406b-1c0e-08d90a58e8bb X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: 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: t4pihkdJVpgy2G848wL4Wder2gQkOd2Mq8w6/Y8WQ7lMn4tSMpIS1KHFqrAvQejCNlCH7XhyPEWZtw3uIQrHg0Z75q3Oa1URZMhg1GzoCEYj7g29E9kNwof9NCuuh8P9s8yk6mqxNIgpit0fNySaQVMQjj9N+qCpK3FN0GrpEDrUU/EcIeRsXpg3h7SVuV6wRy7bB2sviLgnJa9Wao468Jsj3SvcFmaUr6AZ6Ytm/AR/5Gydu3FTuK/L2O79fjmUtMSnnXuwhNsxc+rjI9ZFj9eu8R6tUK/KH5NlDJ1EfDVBA0F88VX6jmzWdb3DxPaEEhXH2P3YbwE+YvYVxpe/fEVYcQioc2gANWUAmmfU3YgRMzkfDDOqK8yeBzJZbqirOMMRTFWPDeTBVdS0yzU6fN/sRA8mAbb05OrU/eXVIFA+RfXqMKGuMczuy1G6eqfDLjO+LRr0BUy9vL1hgbxA3lTuWCkcWdGqP3o1pz0ecPa2k2/VrNKFLrIQjGqfiFNN/6W3D7yoI7vP/xE6TAVutNURsU1+qgjULmQ0j+8Txge1nhlu3aPEqbP9aLMqLZuLWkx4vcK3lCHz7D0j7xJLen2eBfGoiNnazNsH3uMdvVZN6GG0rIdXQssromk8vv/dHO+CwM96ycKx0zTUoAC7oys9AJjWh0Y2E8UuI0X4INR2ug9W7Aay5/uhYiYiNo07 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?ECHraDMK22/hxaMN4vbtxiopYLf/w9x5+9O5gMwOZmgRklNYUEPNdnTFT/4h?= =?us-ascii?Q?I6oz6edBi9kExWN1JTLAVs18NICKtbT0i/NIhGM8RIfx9J8R4cMUNG4ff/tm?= =?us-ascii?Q?Fcvf1FLRP+7tknJ8m+xjykN8TeKgDOVRr6Lm4zmdlyhSnIvW/j/X1zARGccD?= =?us-ascii?Q?TOeB0IpqYx/H71a0lqaMzIduPg/f+8qObw1AdndBEXpaCRIdDRk2BQvUzTzc?= =?us-ascii?Q?ev3sElPLWlENIbG6TJBPl3jbS+x4ovhIHWIq/FcXxlGB15MLeigasiD9Pg4V?= =?us-ascii?Q?FdJ76ExKCg1jBneTGDmOeJd6KJgTM7NyM/jGIAu65bYt3LJuFxgxS4kaNDlB?= =?us-ascii?Q?9/n8nxz/OjeIb6z55S+J+1FcThfSqztyA6QFrMhVhI8345BzuGoxnooJaXq5?= =?us-ascii?Q?c9qlt6MITt3EenZNhfzAUSYqfaU2Zs6vc14gEBZ2orbWMGwZFWRxBcrUh8Od?= =?us-ascii?Q?8XSmcW8Y2YK7wiLhMFkpIbib0Mqh2bfxEXaNMqQUwEgMOtw7YICnNFHZB5yf?= =?us-ascii?Q?f1mJqYv+H8vCGfJWzXLzZyhMZyjWUcI+tSCV+XIaqxOKdEWxeB8D6EQMItTB?= =?us-ascii?Q?X5hEDEkQdjRKxL2Rk8ocetr1P0dCHiyMmkIsxWGr+6Vl01oCJECb7yglF62N?= =?us-ascii?Q?zBztkv9yPqgN1kLgW2s6RRjmXgggvT60LoH9pt0qJhmjOaU+Ib1gwm9qaic1?= =?us-ascii?Q?rf/n7T2f1PLj1Omd8Qdu23JcLk2TGJB/01Q8g0etNWXSMuHp0iL9nKv3IHVI?= =?us-ascii?Q?FH5+3x+k2p1zmIM8dg2jD7x17vUOr6p344UJTdaurh9gTSBgcCVYTUfKBWEH?= =?us-ascii?Q?ZN9ZwVa5MYiElSEzKc4/IBmjBPTYbkBBEj3gkkglbjY0XL7uqqr+/kZfmta+?= =?us-ascii?Q?+OFt2lm4LGc+5x1Z0pxDZZjFHlPVpOA8/aFIKxqo0+JcCqHEoR/oGv/49MPA?= =?us-ascii?Q?1bPsT689mhS9IWmPxHN6C0o/sfbOlXqBpFnNnpe5XUM/xgE8oWMKrFJuJ0S+?= =?us-ascii?Q?YMsf76umNIBWE7WNj6EO7MN1WSptyCDHlwLWRLJq+ra8E3G2DS2ADyzU+cGK?= =?us-ascii?Q?xb/YBDtTl6OxwMwuYLgAPPjiJ7EDKeIX0mZeur9TprWssFELAH6MxlVoK7Xf?= =?us-ascii?Q?ubZUsXZiVmZvRTJmNnScs1F3R4Bp6H+uw5hPhUpAeH9Ku07R55jUQzlV8y7t?= =?us-ascii?Q?UmF3lcSfGmgGxIhVyUIbMRteMmLqvQg6nPllNiGE4L5dXHl6zzLK/g9Mn8BY?= =?us-ascii?Q?4f8Eb645wc0LK1Vh6i/lVG1KorD1Nl3PSyzq1glxWPXt0XvH4gelF8YZIVlS?= =?us-ascii?Q?MZDhyzoEmFZKpHSt0SoJitGQ?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad2ecb31-3431-406b-1c0e-08d90a58e8bb X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:42.8806 (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: XEXrSSpiJFWFgbNHU28rhTdNDvjhhRF2WqXBgVeXif8vuZo4MApPmWbYCeKFHKGfpkkhVre+7SF+TQuReZr/A9TVOxgdwsEVbjhy22xpSqQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.117; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" Split out no-perm part of bdrv_root_attach_child() into separate transaction action. bdrv_root_attach_child() now moves to new permission update paradigm: first update graph relations then update permissions. qsd-jobs test output updated. Seems now permission update goes in another order. Still, the test comment say that we only want to check that command doesn't crash, and it's still so. Error message is a bit misleading as it looks like job was added first. But actually in new paradigm of graph update we can't distinguish such things. We should update the error message, but let's not do it now. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 190 ++++++++++++++++++-------- tests/qemu-iotests/tests/qsd-jobs.out | 2 +- 2 files changed, 137 insertions(+), 55 deletions(-) diff --git a/block.c b/block.c index 6040b9dea0..4d5c60f2ae 100644 --- a/block.c +++ b/block.c @@ -2955,37 +2955,74 @@ static void bdrv_replace_child(BdrvChild *child, Bl= ockDriverState *new_bs) } } =20 -/* - * This function steals the reference to child_bs from the caller. - * That reference is later dropped by bdrv_root_unref_child(). - * - * On failure NULL is returned, errp is set and the reference to - * child_bs is also dropped. - * - * The caller must hold the AioContext lock @child_bs, but not that of @ctx - * (unless @child_bs is already in @ctx). - */ -BdrvChild *bdrv_root_attach_child(BlockDriverState *child_bs, - const char *child_name, - const BdrvChildClass *child_class, - BdrvChildRole child_role, - uint64_t perm, uint64_t shared_perm, - void *opaque, Error **errp) +static void bdrv_remove_empty_child(BdrvChild *child) { - BdrvChild *child; - Error *local_err =3D NULL; - int ret; - AioContext *ctx; + assert(!child->bs); + QLIST_SAFE_REMOVE(child, next); + g_free(child->name); + g_free(child); +} =20 - ret =3D bdrv_check_update_perm(child_bs, NULL, perm, shared_perm, NULL= , errp); - if (ret < 0) { - bdrv_abort_perm_update(child_bs); - bdrv_unref(child_bs); - return NULL; +typedef struct BdrvAttachChildCommonState { + BdrvChild **child; + AioContext *old_parent_ctx; + AioContext *old_child_ctx; +} BdrvAttachChildCommonState; + +static void bdrv_attach_child_common_abort(void *opaque) +{ + BdrvAttachChildCommonState *s =3D opaque; + BdrvChild *child =3D *s->child; + BlockDriverState *bs =3D child->bs; + + bdrv_replace_child_noperm(child, NULL); + + if (bdrv_get_aio_context(bs) !=3D s->old_child_ctx) { + bdrv_try_set_aio_context(bs, s->old_child_ctx, &error_abort); } =20 - child =3D g_new(BdrvChild, 1); - *child =3D (BdrvChild) { + if (bdrv_child_get_parent_aio_context(child) !=3D s->old_parent_ctx) { + GSList *ignore =3D g_slist_prepend(NULL, child); + + child->klass->can_set_aio_ctx(child, s->old_parent_ctx, &ignore, + &error_abort); + g_slist_free(ignore); + ignore =3D g_slist_prepend(NULL, child); + child->klass->set_aio_ctx(child, s->old_parent_ctx, &ignore); + + g_slist_free(ignore); + } + + bdrv_unref(bs); + bdrv_remove_empty_child(child); + *s->child =3D NULL; +} + +static TransactionActionDrv bdrv_attach_child_common_drv =3D { + .abort =3D bdrv_attach_child_common_abort, + .clean =3D g_free, +}; + +/* + * Common part of attaching bdrv child to bs or to blk or to job + */ +static int bdrv_attach_child_common(BlockDriverState *child_bs, + const char *child_name, + const BdrvChildClass *child_class, + BdrvChildRole child_role, + uint64_t perm, uint64_t shared_perm, + void *opaque, BdrvChild **child, + Transaction *tran, Error **errp) +{ + BdrvChild *new_child; + AioContext *parent_ctx; + AioContext *child_ctx =3D bdrv_get_aio_context(child_bs); + + assert(child); + assert(*child =3D=3D NULL); + + new_child =3D g_new(BdrvChild, 1); + *new_child =3D (BdrvChild) { .bs =3D NULL, .name =3D g_strdup(child_name), .klass =3D child_class, @@ -2995,37 +3032,92 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState = *child_bs, .opaque =3D opaque, }; =20 - ctx =3D bdrv_child_get_parent_aio_context(child); - - /* If the AioContexts don't match, first try to move the subtree of + /* + * If the AioContexts don't match, first try to move the subtree of * child_bs into the AioContext of the new parent. If this doesn't wor= k, - * try moving the parent into the AioContext of child_bs instead. */ - if (bdrv_get_aio_context(child_bs) !=3D ctx) { - ret =3D bdrv_try_set_aio_context(child_bs, ctx, &local_err); + * try moving the parent into the AioContext of child_bs instead. + */ + parent_ctx =3D bdrv_child_get_parent_aio_context(new_child); + if (child_ctx !=3D parent_ctx) { + Error *local_err =3D NULL; + int ret =3D bdrv_try_set_aio_context(child_bs, parent_ctx, &local_= err); + if (ret < 0 && child_class->can_set_aio_ctx) { - GSList *ignore =3D g_slist_prepend(NULL, child); - ctx =3D bdrv_get_aio_context(child_bs); - if (child_class->can_set_aio_ctx(child, ctx, &ignore, NULL)) { + GSList *ignore =3D g_slist_prepend(NULL, new_child); + if (child_class->can_set_aio_ctx(new_child, child_ctx, &ignore, + NULL)) + { error_free(local_err); ret =3D 0; g_slist_free(ignore); - ignore =3D g_slist_prepend(NULL, child); - child_class->set_aio_ctx(child, ctx, &ignore); + ignore =3D g_slist_prepend(NULL, new_child); + child_class->set_aio_ctx(new_child, child_ctx, &ignore); } g_slist_free(ignore); } + if (ret < 0) { error_propagate(errp, local_err); - g_free(child); - bdrv_abort_perm_update(child_bs); - bdrv_unref(child_bs); - return NULL; + bdrv_remove_empty_child(new_child); + return ret; } } =20 - /* This performs the matching bdrv_set_perm() for the above check. */ - bdrv_replace_child(child, child_bs); + bdrv_ref(child_bs); + bdrv_replace_child_noperm(new_child, child_bs); =20 + *child =3D new_child; + + BdrvAttachChildCommonState *s =3D g_new(BdrvAttachChildCommonState, 1); + *s =3D (BdrvAttachChildCommonState) { + .child =3D child, + .old_parent_ctx =3D parent_ctx, + .old_child_ctx =3D child_ctx, + }; + tran_add(tran, &bdrv_attach_child_common_drv, s); + + return 0; +} + +static void bdrv_detach_child(BdrvChild *child) +{ + bdrv_replace_child(child, NULL); + bdrv_remove_empty_child(child); +} + +/* + * This function steals the reference to child_bs from the caller. + * That reference is later dropped by bdrv_root_unref_child(). + * + * On failure NULL is returned, errp is set and the reference to + * child_bs is also dropped. + * + * The caller must hold the AioContext lock @child_bs, but not that of @ctx + * (unless @child_bs is already in @ctx). + */ +BdrvChild *bdrv_root_attach_child(BlockDriverState *child_bs, + const char *child_name, + const BdrvChildClass *child_class, + BdrvChildRole child_role, + uint64_t perm, uint64_t shared_perm, + void *opaque, Error **errp) +{ + int ret; + BdrvChild *child =3D NULL; + Transaction *tran =3D tran_new(); + + ret =3D bdrv_attach_child_common(child_bs, child_name, child_class, + child_role, perm, shared_perm, opaque, + &child, tran, errp); + if (ret < 0) { + bdrv_unref(child_bs); + return NULL; + } + + ret =3D bdrv_refresh_perms(child_bs, errp); + tran_finalize(tran, ret); + + bdrv_unref(child_bs); return child; } =20 @@ -3067,16 +3159,6 @@ BdrvChild *bdrv_attach_child(BlockDriverState *paren= t_bs, return child; } =20 -static void bdrv_detach_child(BdrvChild *child) -{ - QLIST_SAFE_REMOVE(child, next); - - bdrv_replace_child(child, NULL); - - g_free(child->name); - g_free(child); -} - /* Callers must ensure that child->frozen is false. */ void bdrv_root_unref_child(BdrvChild *child) { diff --git a/tests/qemu-iotests/tests/qsd-jobs.out b/tests/qemu-iotests/tes= ts/qsd-jobs.out index 5f41491e05..9f52255da8 100644 --- a/tests/qemu-iotests/tests/qsd-jobs.out +++ b/tests/qemu-iotests/tests/qsd-jobs.out @@ -16,7 +16,7 @@ QMP_VERSION {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} -{"error": {"class": "GenericError", "desc": "Conflicts with use by a block= device as 'root', which uses 'write' on fmt_base"}} +{"error": {"class": "GenericError", "desc": "Conflicts with use by stream = job 'job0' as 'intermediate node', which does not allow 'write' on fmt_base= "}} {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_EXPORT_DELETED", "data": {"id": "export1"}} *** done --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624445; cv=pass; d=zohomail.com; s=zohoarc; b=X/RanJg0RvspulBGi5xtmi5tjbLqI9zHkv6ytyOHnYlgjZNwmNeyWDS52QrkcMlwB5Tb/xKP3GPGoh1NDoz4sC9HC0dyW9UNB9NUYljPGvWSTn7Zmu18Bt/En3VXzY1rZ8bPU2IX1nCJopJ4NdIVDuNPtBt6vOgtVBYnUvCAu4Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624445; 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=2/opdM+2EjB91gHAiFYBXDAsXHoG1SMM8aWWllXuo/g=; b=gzYKmw5M0U7WlV1S8K1XtRoJfs0ihDKe0Avo2kxdat9R3mRup+2vrQ4ky9DEbxijJVkyLPsiC1Uy4ggcyJZD2e8k0HGCMU4C3WAAzX2sW1MJof+9pgKbV7snTWRn9QiKE1FJqnMXPQMunpa85JO8F6fGFNakl6l+JvlQHzpfXK8= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624445709455.4085590348974; Wed, 28 Apr 2021 08:40:45 -0700 (PDT) Received: from localhost ([::1]:33366 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmIu-0007rt-Ps for importer@patchew.org; Wed, 28 Apr 2021 11:40:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58788) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyK-0005si-FN; Wed, 28 Apr 2021 11:19:32 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lbly4-0001uH-V1; Wed, 28 Apr 2021 11:19:28 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:44 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:44 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VdM5A9GjTtOLmDtSJm7pmDzBc2Jk3pGyQvZHnhc9c0/wplesbWyI9VuNx1E4lTYgXiu0OaIzEz87FTFFNwHgsTnKi+iN+fGxQm5izUQw0x0iXj02xcL7VIvMON/SnU0hGnuoW/aDlC9190US6m8MhKnnpYFVgSS7MeTVqfIb3tjgL2t3gHa1UsMgzBrobH74JPWrmZdBhRUeOLo/zOXyVUJOIUbNAn7lfQhNJuGvPuAnjJT3J9LpM90uLypumCVpL60B62CzeJD+M++a7KvohciRI4EtNZFJePDpB8M6pp7BXes4UHuBhBHl3eIyeo7/sHC6RjdoXG83HbOkVAbfsg== 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=2/opdM+2EjB91gHAiFYBXDAsXHoG1SMM8aWWllXuo/g=; b=h/ha5gxKDbU3lmlwd42xZEAbjmfvYC4gM7L8P7dYfAehojSLfbncHR9K1859RwbuOFgczG0WzQhYaDu+SCICPUXKYwYUyR626JtCH59ofNiKhUzymrEgkrso3NUbANHHnEhSkFUL/YrkmrNxdvm7IGH8GmWcMr9AbheZfeGfR+6KHZrx05gAuasfhrqTagNtLkgZ7Jk8fid+jd6Z37IfktGqMeN7YajGU1uP3y/+ceENj709EBXuRBo6ETL1Riemb7mlPz++IVSx0NLlrrt1EqlcVtzoaqnvdFCmlJIWuA7eCu0S7BdRqCYKZHFxkfzTQLY7uiF0Q+wMegA0HpKBAA== 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=2/opdM+2EjB91gHAiFYBXDAsXHoG1SMM8aWWllXuo/g=; b=WYwcW0FE+ii4H7W8uuxGJIJizeujfuGb8FUqKsqiDCEzUz1iW5svL93qtmBmR7AwInYkyBb103l79TX32TlmyelkXpmGXQOqc4kbKCKzDEhP50AXTdAx7qX5+pUUhqJypoWGOOKC3UC5DhIZaDQxXjxN0unu+ZVEetpke5zincM= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 19/36] block: add bdrv_attach_child_noperm() transaction action Date: Wed, 28 Apr 2021 18:17:47 +0300 Message-Id: <20210428151804.439460-20-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: ec2d00bd-d607-4e64-caff-08d90a58e965 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2512; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gKRqPl/dB6QtcsmwRqzip62vkfi92cLuRIRrgGH7qtVuZGgw9cycBBxRcKxWMqF8c8NNl4yhI7E4kD5ZgAEMeOgqQam15ruIgsxsCyPJ2xXWRBHrffN79AsAK5k5HPR6VybbB6GTA3M1r3s/DNipAe5vhcFDRCqZghcWvieQOebKgbTmVO0vzQ1lBnQLNat/PTc4jeocYPxBiuhZnt49DIvoCC7WeckhGr9TpOCcKPXyZq1tvRr2mekv8Ik+5IrnWjVYKIrIcNa7jTt/hP6w9JjxZr04MfE0+7vhuETq5kbAGutf2sVqXAhyQzdj87NdKA2h8lbvDpsh1M8XRfHK2Ui8/t9GQBQBrP3kFJQizAxYrmjcr4YGPo+bKNmVT+WKwmJiHIY8uoBwGuG/mXwuSvqnGUFuVZLT8Pb0hz7kE/Ev4pHHu72B+0ttLCFBO+PMK5ychyJhtEGC3w42dtrIH4oNWC+9clFj5veVmpm3QETmYcpThrPUwBPfqmVSVcaIqgGt5m8tI83NXSls9pwZ9BZ6ZrgtxvE0TkfF+c0ALBj90BINboYEV/OWcDckxWQuFZaLKv2aNjKdL4GTyGOuoCw166MQWz6iTX3xPOZ4t9GTrJx0VtCu8Ps4oUYZ98yOoJnjpFleVuKY1AQH9CYsEsI2u4j3mTcPjXBrkKc4aqtSzodL/bpXMm0ca4G82UA2 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?bsOyldFqh3TJTjAQON/ZHOkjJz0G2iUwYJwExTTpGuBTuvtPtM5jEYrO+ft0?= =?us-ascii?Q?yYkn8PkBXmM7S0wUwj3QcUmC7uxVITsfuIP48q8kfUwfagBHkWpJAEdftQUc?= =?us-ascii?Q?FLC+0cx5cqmjRoPJ0qTIsDoMPRv01GzA47bpKkxqBaEe654VZE6n57L8mrkT?= =?us-ascii?Q?oRn6Y2PnDG/6LFisFFNV1ufPP0/pPMhfanfsq4sZDWGjEiJSqtQhRGcnvp20?= =?us-ascii?Q?sgNghBJ2rVCE5eSXg6ww/AxDIUT1kUl66f7UoSsPgEjxsjM20mrZZjV+0wFD?= =?us-ascii?Q?e2gvdfQbp0q8KsxInsb+Va920EXVdYCjls31Hq9kzHyLxcWtegU0abzg29x6?= =?us-ascii?Q?QrxG1gMJHDlnFX4lw8Ub7G8wcTQrpEFwv1PP0BvOgVZGeXawemYcvXb1v2fG?= =?us-ascii?Q?W2alCsTDGkwsrGFZKyljgBVi0czInADTl2djjF5OWUmJpTPjENZnYVENoEtR?= =?us-ascii?Q?tS7c3qrTNRpbiZvzUwh7mWvgfVsXbt1oZOg7ifH8qHq1XC3FCLILRrvgGuiE?= =?us-ascii?Q?eswuFNn5Tb3mfBNEdtO0Ptcp2XUiFhiQRPjEseJqnSt87jJAy4VY0mjZLY1N?= =?us-ascii?Q?HudmBc3IXz8Gwj/CouGMkza0S2CU+CZ21S/4WEqqlWtCsXA7HQzLkYp5zJkK?= =?us-ascii?Q?DYhQWag9PF7nEt0tncmCoVrmQPpq/cb2ppuE66+R2hfKlH5JT+iFdR5DCTIE?= =?us-ascii?Q?R2U2b4q1Fqwb/5FsM/nHDTOy6ajDXWSasH2bJKkeKu26XtSgAK8I1d3+ze5i?= =?us-ascii?Q?dus2VVhxrmAUsSsZMka5atC/1NaSllgFh2La68L6Bg+x+kmG5aTFtfOa79bG?= =?us-ascii?Q?a2xXQUBwo4I7I841NOrG4SJssg2h45/uKlyDyQiyi6nfrCJhoIjvPAaonl9p?= =?us-ascii?Q?RRzxmQPBLzIV7mJI7vApirf3VfxJGt11ybMqI7OfqHOuuaDpKzcIJapaqPuD?= =?us-ascii?Q?hoccTaZCRguI1ngdvp9f0i0U7q9E9W4FXSx8tVdCXoT0K8GY+6swWmwebnUx?= =?us-ascii?Q?yWpyqcpjw0MdEOm2ds2WPGt05B3aCsodR5IpI5c9Xt3Fj7TucGXfDURxzR9u?= =?us-ascii?Q?1652DN6CCud49gw395aqfebQKFEULW2u0dAKNjybLxby1QVosdZXgwCgp55/?= =?us-ascii?Q?D/NMQrT0pUOQ6lGYcCbXu/NzjfzSec/Uvm8miRdnLk+Uc/X6A5Wcn1/GnAJo?= =?us-ascii?Q?yAnRIImfyR+KkNG5VrPgjXGbqCYwdyz0PQ3wqkiNu23V8NbKPFogyqmezqaM?= =?us-ascii?Q?b6eMplIaVivxr+FRKPYRwCK//QAb3D9zquBDBBj2+MuzdrQZmSUHXfKGoAVZ?= =?us-ascii?Q?iK+m3JSjPlHYquEBQLlm/ylV?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec2d00bd-d607-4e64-caff-08d90a58e965 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:43.9943 (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: tr0ZfVI/81PGmhsAnuYc9Xs1W1l70rn9rO24OeyKjMAeYNt1AaMj/Gx9k2wInd2uMoWMc+8UrctqiQemQ7nsbeI6WlltSWP/Ml92XlZWfvY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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) Content-Type: text/plain; charset="utf-8" Split no-perm part of bdrv_attach_child as separate transaction action. It will be used in later commits. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/block.c b/block.c index 4d5c60f2ae..c74e6e7cc1 100644 --- a/block.c +++ b/block.c @@ -85,6 +85,14 @@ static BlockDriverState *bdrv_open_inherit(const char *f= ilename, =20 static void bdrv_replace_child_noperm(BdrvChild *child, BlockDriverState *new_bs); +static int bdrv_attach_child_noperm(BlockDriverState *parent_bs, + BlockDriverState *child_bs, + const char *child_name, + const BdrvChildClass *child_class, + BdrvChildRole child_role, + BdrvChild **child, + Transaction *tran, + Error **errp); =20 static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQ= ueue *queue, Error **errp); @@ -3079,6 +3087,40 @@ static int bdrv_attach_child_common(BlockDriverState= *child_bs, return 0; } =20 +static int bdrv_attach_child_noperm(BlockDriverState *parent_bs, + BlockDriverState *child_bs, + const char *child_name, + const BdrvChildClass *child_class, + BdrvChildRole child_role, + BdrvChild **child, + Transaction *tran, + Error **errp) +{ + int ret; + uint64_t perm, shared_perm; + + assert(parent_bs->drv); + + bdrv_get_cumulative_perm(parent_bs, &perm, &shared_perm); + bdrv_child_perm(parent_bs, child_bs, NULL, child_role, NULL, + perm, shared_perm, &perm, &shared_perm); + + ret =3D bdrv_attach_child_common(child_bs, child_name, child_class, + child_role, perm, shared_perm, parent_b= s, + child, tran, errp); + if (ret < 0) { + return ret; + } + + QLIST_INSERT_HEAD(&parent_bs->children, *child, next); + /* + * child is removed in bdrv_attach_child_common_abort(), so don't care= to + * abort this change separately. + */ + + return 0; +} + static void bdrv_detach_child(BdrvChild *child) { bdrv_replace_child(child, NULL); @@ -3139,23 +3181,26 @@ BdrvChild *bdrv_attach_child(BlockDriverState *pare= nt_bs, BdrvChildRole child_role, Error **errp) { - BdrvChild *child; - uint64_t perm, shared_perm; - - bdrv_get_cumulative_perm(parent_bs, &perm, &shared_perm); + int ret; + BdrvChild *child =3D NULL; + Transaction *tran =3D tran_new(); =20 - assert(parent_bs->drv); - bdrv_child_perm(parent_bs, child_bs, NULL, child_role, NULL, - perm, shared_perm, &perm, &shared_perm); + ret =3D bdrv_attach_child_noperm(parent_bs, child_bs, child_name, chil= d_class, + child_role, &child, tran, errp); + if (ret < 0) { + goto out; + } =20 - child =3D bdrv_root_attach_child(child_bs, child_name, child_class, - child_role, perm, shared_perm, parent_b= s, - errp); - if (child =3D=3D NULL) { - return NULL; + ret =3D bdrv_refresh_perms(parent_bs, errp); + if (ret < 0) { + goto out; } =20 - QLIST_INSERT_HEAD(&parent_bs->children, child, next); +out: + tran_finalize(tran, ret); + + bdrv_unref(child_bs); + return child; } =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624679; cv=pass; d=zohomail.com; s=zohoarc; b=d0+TKzSbfqepecLMuSw6z8S20+ddgKNeYJlTP2BnIwww7KXpj2xaj08hZc9TlWI4MOB3jk54OcCuM7UbLsZZPnEhUSY/ozQwrGNvnHACpqCPaDTOFSsqIVbCESVhExyozevDsj1CA/G4O/kI23Bwr8llZQLbPumZ0InbLOFbJ8A= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624679; 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=gsHmWo3F0UdqxtzaO97RkxUrfH3slXbquvVxC86SmdM=; b=DwrcXhXACR6Pv+C+uX4VxCxYjtH8akqkL8yPWym908i8jp65UGg4O2UGlTrSDzEic9Ag+NhBMmiY7QDoo/c6yb5r0rh5pKUDSnKCdrWkqgqKR61lR7/mmfTMW/XgxjOwe8tDUeEoZDzr2hLlrrAfvvP3ruIsW2pILRzcOA4FNFM= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624679869827.4913258253528; Wed, 28 Apr 2021 08:44:39 -0700 (PDT) Received: from localhost ([::1]:42694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmMh-0003RB-2X for importer@patchew.org; Wed, 28 Apr 2021 11:44:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58808) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyP-0005t7-Nm; Wed, 28 Apr 2021 11:19:33 -0400 Received: from mail-eopbgr00103.outbound.protection.outlook.com ([40.107.0.103]:52805 helo=EUR02-AM5-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 1lbly5-0001yK-4g; Wed, 28 Apr 2021 11:19:30 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:45 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:45 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WUM3a4MIqTgUBr2rkYVKIiH+vju2YKOfnBQ2gMxepNF9iVljk37vR8aiMLYfjKyq1obi0u5ik3jZvlLP6UZ78aol1Zlnbe9GsTxGacIRb5qm6YRXSoBfFk29Dbid7vEr7Janb61pIOb9wPU2KjNIO8dNbS2nm9YSvakT7KrLwZkH7gDwZj40NztpX5yqo0ggRRB5gVzcxX+CjV64hN90seg03xj/Y5A9JcxVqImiSw8Y1TBZ1ocdQE4LxjLs8gMrWVUMpdJcbbIRY5TXJF5Lb/XelU4H9QUh6cmTkz45ww9OObTQGJXADg8Cc93TNISEFBhiBKFD+oxQiTRilPpUiA== 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=gsHmWo3F0UdqxtzaO97RkxUrfH3slXbquvVxC86SmdM=; b=GrhT3ZxssHTgxtI6FzhT7EzqxVxOORCkkN6932+lwpUQz3DEw3aervVnyO4xoDdOcrkTl4gAUTfqvDnyLk2StlL/XqEt1dRfroNDZcQK1aOI4aWXe/T7R2X5s9BDpy4/4FEjPVZh8cqi/K5N8o3XF7DvVZuLDxAuFBN+MveTFw5XGuTkP89cT+ZktUcQGq9uKLUvsG2BzonwbP8X7ICqQZKjprX0hiYSMkNaxx8hrb1P/3I7pRV8ISE0QOkTeTbE/RpJ+KCiKnQzgdL0c1+ehn5jzjJbvXJtiyLWSDdbzXXkaNdsrXn3Aqeu+cNjmBRA4/2UYP58JjU7OV8QNUV4Aw== 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=gsHmWo3F0UdqxtzaO97RkxUrfH3slXbquvVxC86SmdM=; b=LBxU6+UDBo/OrkFOY9jUs1U17IbKRky0qrJXNXgXeR5d+YAW7X6ao6exI5j1XDLFENKxgUWCYXcU9beN3vVKQnvi9dhc398bQghM/LG+Hileye/r4vMV1eyWuW9wnZRgapWcPqCTJvu4pPp4WGqj7CTGv0+R5DQ4pOHTA4rKH6s= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 20/36] block: split out bdrv_replace_node_noperm() Date: Wed, 28 Apr 2021 18:17:48 +0300 Message-Id: <20210428151804.439460-21-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: ade0501c-835d-48df-eb1f-08d90a58ea0b X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:175; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6rrLHrbvvorXuKreDIkxpvvHFyxVJBuftRgSpWD3Hvi2zGLYwmY2f5rD8/GLBN3XoU0oRtDA5nrwQXnzUnyZKIVqRKxr/bF+H0RtHReHAU7szpSaIqnarrNWZD14qrt58WTfS1X1hQxpZWOPGAKippgzpshL4Yzj9nuIugcW/n/f58p9zD5rDuYp5vDXJ9CTb57oDnhpBN6TChHdxjRUAa9KQdCPwiWuM5vpuhUnERxQw+IdDtO054GYPuGj73JZxdzcnoOpoNKAoxq3i7iLAC72j2zReCSKJd+6YoZm/2bKTjQ+tqL+hWpIAxeOl+BbgGYGaLTeOruZGp/n91pRz89xPNsPWJ5PPy9ll9/y0MuHwedFBq68t+XMWeNgsgD5qbG3HxjUv27zt5I5x6VhAup0rBTipRooeq22YHgGzs3Ff32E2PazyhsmXao9ZH552QOX9n7rki7zmfT9/wl0k8nQOm2MLZySTn0EgwiiOp5BMLUMyN2SEKAUPgtWO96hyhkoIxCffUuzJ2OqmJ8S2OnCBZFXHCoGoQH8XuzNUhrFmIf4/Ixt5NMisDqMukxuUV3r5ck1P2rIM9JCD0LAze3MVv9pdq+kyeZJv6Y4JUtXB5FgIUizqmW5UJ3k+WVDgqLBG1qGVPXSsefbo9UNxUr3hAvXnyzVWnG1TRdTTIYbe6LecBvYJb0ttTs6Gg7g 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?bSnpOTudwRYerXQ640G4bg8pfUpExlSCQoSxOiLpMDhsCU3euJX8unNDi3ey?= =?us-ascii?Q?FYvzQO3o6xDoWLXEaziwg+9i1Gl9NVhrJu4uBtilYAfjyzHCheHEvQnH4+cT?= =?us-ascii?Q?bSr0pcTkwC8mULqB+Y4YPZLAahykJ8hU7FFy+RtMpBh1ZsZmoGvKexG3E+t2?= =?us-ascii?Q?Mx0XcLBvryM8EJXo2oAgCgbrfwvis4iyBXDqWZDy2xl4OOHpy+Qv7ykH5zgA?= =?us-ascii?Q?RsCs2c9M8r6PAeo58lmrS3R1b0mBy0YjhLQz53hj6wnR8UP3+c2kOoe5jR0i?= =?us-ascii?Q?LbRY0Jw8fEgiewZ/M2xf8BGyixQ6gh9+e1rX54Ds9rvWyfADCZAanZGcP5R1?= =?us-ascii?Q?EoyAS0rkU6ZuC1cauZfRnTCp08TeHSjcm0im6awHR7TBRqs036zv/We7em8N?= =?us-ascii?Q?MjnIuET30+pCGmwqeKzlycchf8v3oaKP5JALO9gwSj48xjTrO4aCOFKvNJJo?= =?us-ascii?Q?7D52i2Jf8eFz2ME733AQcHFzJBBpw+TMOiS6p6D+zHPGiWiTjfJ3xkpA2Rt2?= =?us-ascii?Q?S7Ds4urdzKBRqtHdLMs9gmG5SXZs2fy0sd3u3h3rGrHAA7OSSP6YQwI8THr4?= =?us-ascii?Q?Fy5c7H0Ofh5ySCfWLRB21XAonjDL0g4JFbn83M6RYCeWcFftRbNani27qzOU?= =?us-ascii?Q?3Ta925+rpIkw0BnJucjzYDBCqibhqw+P4nJGG+MMt78WAysaxQFd84xnH7RX?= =?us-ascii?Q?Un/LF/ApLUBdBUz3NPoMzBcxTLgXv22a7L3HUCYe496UC19wmnIg2k5T0yMF?= =?us-ascii?Q?N4xcxDvD5/h2lZZvCSvVxbBW2EiwCuPr4McBwQ5sb/SIyWGfYDTJ1/urAD8U?= =?us-ascii?Q?uI7/a8TnKbC7wUKUepv6YmKc1KNpv0tx7HM9EAfFHkKAC2xrFVAX+LfRJYZT?= =?us-ascii?Q?3tIsHLl0Z5q+gbuZgzMonhOpxL/MCk6w6xqpXdrLrLjbUK9Iob4poYiF6Bma?= =?us-ascii?Q?HPcuZeknP5dcSWJd63PyBGQ0gtNaIfaLAzON+5uE/lFpusOYsvyRcZi+BhD8?= =?us-ascii?Q?+5uBYk5sOBTXr0jEzw6/Oo6tun+CJMrMnA8coa4zlz67oMxr3MUNn+Ja6GMw?= =?us-ascii?Q?lelUs6iduOMX+n9frd9hIjfkgThQYH7DuqvqmojOEWRUQmV1hyKye80tkKap?= =?us-ascii?Q?LoNzqCH56wgHrPdk7VnMeGJ1l0IPbWhZVtyHQ6yzlzpzifhRZyDrS49P5c0g?= =?us-ascii?Q?A9gwUbnFVhaGvDjXXyKOnOCF9ZDa34JoKYkQW18izvzCXxgF5vN2OiOeleQ4?= =?us-ascii?Q?gKmvH/igj6weYmaq/gOIpBOQttQ4jbF2j8swoyli44YJnZP9poqdmUZkxlMC?= =?us-ascii?Q?7Io0oDN5cQBSNhEXKGn/8RVS?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ade0501c-835d-48df-eb1f-08d90a58ea0b X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:45.0999 (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: lhJVaN8N6C5LeY8A8CtW493qVodvQu5cpZTicEeDVk0EgQyUqk7Kqg1wQiz3kn3Wm6UGrkJSKFWHuyuokYHUfgMVOO0R2ucU95qrz1AssdQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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=unavailable 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) Content-Type: text/plain; charset="utf-8" Split part of bdrv_replace_node_common() to be used separately. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 50 +++++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/block.c b/block.c index c74e6e7cc1..9283c8d97b 100644 --- a/block.c +++ b/block.c @@ -4991,6 +4991,34 @@ static bool should_update_child(BdrvChild *c, BlockD= riverState *to) return ret; } =20 +static int bdrv_replace_node_noperm(BlockDriverState *from, + BlockDriverState *to, + bool auto_skip, Transaction *tran, + Error **errp) +{ + BdrvChild *c, *next; + + QLIST_FOREACH_SAFE(c, &from->parents, next_parent, next) { + assert(c->bs =3D=3D from); + if (!should_update_child(c, to)) { + if (auto_skip) { + continue; + } + error_setg(errp, "Should not change '%s' link to '%s'", + c->name, from->node_name); + return -EINVAL; + } + if (c->frozen) { + error_setg(errp, "Cannot change '%s' link to '%s'", + c->name, from->node_name); + return -EPERM; + } + bdrv_replace_child_safe(c, to, tran); + } + + return 0; +} + /* * With auto_skip=3Dtrue bdrv_replace_node_common skips updating from pare= nts * if it creates a parent-child relation loop or if parent is block-job. @@ -5002,7 +5030,6 @@ static int bdrv_replace_node_common(BlockDriverState = *from, BlockDriverState *to, bool auto_skip, Error **errp) { - BdrvChild *c, *next; Transaction *tran =3D tran_new(); g_autoptr(GHashTable) found =3D NULL; g_autoptr(GSList) refresh_list =3D NULL; @@ -5022,24 +5049,9 @@ static int bdrv_replace_node_common(BlockDriverState= *from, * permissions based on new graph. If we fail, we'll roll-back the * replacement. */ - QLIST_FOREACH_SAFE(c, &from->parents, next_parent, next) { - assert(c->bs =3D=3D from); - if (!should_update_child(c, to)) { - if (auto_skip) { - continue; - } - ret =3D -EINVAL; - error_setg(errp, "Should not change '%s' link to '%s'", - c->name, from->node_name); - goto out; - } - if (c->frozen) { - ret =3D -EPERM; - error_setg(errp, "Cannot change '%s' link to '%s'", - c->name, from->node_name); - goto out; - } - bdrv_replace_child_safe(c, to, tran); + ret =3D bdrv_replace_node_noperm(from, to, auto_skip, tran, errp); + if (ret < 0) { + goto out; } =20 found =3D g_hash_table_new(NULL, NULL); --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619623939; cv=pass; d=zohomail.com; s=zohoarc; b=fChkXInZZbWQHB1HgctsuWJi3kTTr4m0m3gMZIMTXqzJDudxO2AXK+X7SRxrMPyYiqwfhX1DTfWdjlNCEMQ8N37KArtsJWKK+8epKRlJTSqtI00hqiJohoxXwI8DcS16ljjrpYkTu8tALChYqMvBbbHHtJL/32sVV8Adf6sujKM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619623939; 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=c4Hhb+EKNCpg9gh9eSFoazzT7ocW2ZXLvMOlyOx3YOc=; b=dsMHyv7D2NuxBjfeNoVZZkv7AWHDkRY32E27mh+6lhQ6ox/7avj8NOzi9ZzRkJsc37y6fiUF6oXNe0Elk/TiQRcePoQU9k7P+pUPQgC7/X4nOK5TxSpyxkoKNJfu2Jq+CFRU1FfxHM8DqZuFJW1qZQjIl49cJfxWy8VCfpX1dfU= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619623939392939.1117786794471; Wed, 28 Apr 2021 08:32:19 -0700 (PDT) Received: from localhost ([::1]:42614 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmAk-00084U-JG for importer@patchew.org; Wed, 28 Apr 2021 11:32:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58814) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyQ-0005u5-MP; Wed, 28 Apr 2021 11:19:34 -0400 Received: from mail-eopbgr00117.outbound.protection.outlook.com ([40.107.0.117]:54347 helo=EUR02-AM5-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 1lblyH-00021X-Sn; Wed, 28 Apr 2021 11:19:33 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:46 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:46 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hd5Hd+kLPV27FYjJJcfa4GkLYzGpviFw+gAALlnkrB2Nom1zWtTSm2cHU9/TTQ/brC77+lAsLIiNADZkfIrQ6r7fTKIhpXO+qF1x9qI4D6cVUkyqBxDMyiVJ98qtMziw+hlnFfE7ZBIxdGSjPv20hDuNXpKwmLypXzui1wAWvFPwWneHUD+2026pdC7vq/2obPDjxtMpW+WqkEIOTbpQ5Xw9sMG6yUOhY1uclrQyR0RPHVCveyhn75iaukd+rJlCohFXYIIgg+te2aoriLhl+tlGMubtMi8gDayjcNqRb6emIecrkVTbWbE7EYwXawFbOkSXhPe+XGAgEArxT8ch2A== 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=c4Hhb+EKNCpg9gh9eSFoazzT7ocW2ZXLvMOlyOx3YOc=; b=BlGFujPegZNmU3nAbAJIJBstMe9UCQyTl19r0nwCEZxTWZD8McgHK+vWiOhqYR1pOlc+jgu2qB/dPkdUgILcL2Mb3zfPcA0tbvyS54K7yoiocm6iUM4BZwNx1/yl89H2Ub5HbtUwzmA4BqoA77e8J/gBk+f3Zy5LuWbeXgCVWT9EqyLtoclXBhooh8PYdt3q/iIooCxZs6wtSywmb2RZY0E4pzFdpzb0gO5jL4Td6ScucEy2LT4AhUpOCWHUb4XQ1dU+9HxGMGR9VgHnrtzadHdo9Wulm0vfDMG3yXc7F7LkMgxwxdVczuRJZNg2GZyQgTnIretru/WJ9kf4o+bmTA== 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=c4Hhb+EKNCpg9gh9eSFoazzT7ocW2ZXLvMOlyOx3YOc=; b=CKOk7uPP/SOoHKitWnb8HiwdgTWgeKCvSE3vu7USOldmsa1bD7DebUy/ybCau4Ix+yB6eTX3Lj6SUFMxordCKkJtosmFTXdJu6/JJ5L+OqnPU2NcShVl3EQ976fHqv4Sysoke7VkJxJngcXQUuHUT8CobrySVOsdhRILilCtM0c= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 21/36] block: adapt bdrv_append() for inserting filters Date: Wed, 28 Apr 2021 18:17:49 +0300 Message-Id: <20210428151804.439460-22-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: b897bac2-efd1-4659-8699-08d90a58eab6 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yKO68srXQXDVfkY1KuHWhJVmlSj7IDJmudbWuIAgbcHC9fcxUBn2WfHMv6LIAdcJ0Z7OBKrU1ZtsDed7/bNsrM7kDDWdurBk9ocjRgKyLmC/pwi8zLisQ+w8PopCIL1TCI3/INApG8AiPw5OAjHzxgHki5eeNmuEkOArjya0RTx0i23L+LlgGpLXyWY9OZS2CkVUPCGiVXsrl2DU7gQQn0LHBbm2FmV/5TLC+7eHEdyOo48OHSP4hbjxPWAzW1Ctj0ATLhuEJ/zBzMonOBx2at+l2K1c8jXYnvV/R76vLhg7HkGjg/6XOTjKsIL76TLA4ddym5cDkh4xlRXu3lclzITHNQbsUVj7iWlhNxSsLARADA8w0vDu29KYv/YjsqetMlvIvOryyCdBY50B0pwcXUIbfMxkoN52RzNrAEl81qmM5QwW8qIDlpLpazfdPUatPbrpnlvLlAEgiWnztV5MwJ0OUczxuHfSZW2jrsjXlcIS3rCYC7juCfLcqAJXgsAu1h9JVgK/ULwp8DjO5b2O8ZOYxO1xNMy2I55ydy4Ia4TBeBmOlpocFwq3jJUIYTC9fgUnyu0kvEf16d89y9DEdGv/buFkJ6l5ydr8c/h903s3LGQSLYTD7DZtZk8Z4wJGn4XCmSZLSNEtzsPeFD002qDccabAOl7/lg4f9k59Twzdyy+T6xZVa0WGm/sZ7Udb 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?g1gpBpdZuHH4TM37QqdF3/hKJnaVcXmGdyzvuh63uj1VNOkcICEVp8VUqfQJ?= =?us-ascii?Q?hbidUPtQh1qeXD2pJ0NX8+rK2MQuLADkmtlvSFegZpWdvCI7+Zq8ACuIkHQd?= =?us-ascii?Q?fb17iidkeVORKjmSDHqTLySmMQEtyPxo0JUlW8CUupjK7WQRKulK7kRp9s+L?= =?us-ascii?Q?3bBKXGIxm8PGJXRRUlj2lFdubok9tOvar+Hf/0v4UwZ6KZkroE8CIpOZ9407?= =?us-ascii?Q?JMsGet+IHf9KJhq0dg6IYKPWlWaKBZrwEz9HgAB316n1AcJUCYvOaKgV9ZrO?= =?us-ascii?Q?UNtOjEv2SZ0/ApjKPSGwnh6sVuUsOwerT4msepG/APOFvEjTsa/5VzrQD8Gm?= =?us-ascii?Q?a+fR4pPX4GE5XY/OB2TvSv6DDN2t2BvAlGGAMy99fhZZn8fhnafl5imm1YNl?= =?us-ascii?Q?nugSg0mIVS28TwWxPGqqCt0oeBaZL+oy9GXInhGr6zU8xOZ/qqW+/sxzbUFw?= =?us-ascii?Q?SNqFObQnWgEXqrx6FN2+rC1h1yPDoAA9hf/RoSW4n1fTvlkLWCPEbzxIjf9v?= =?us-ascii?Q?zlgVUQukEy26HDcrWwWW6fQaS8KnVBO7azaXStmf8N/msXt5H2JMhAGbjbbF?= =?us-ascii?Q?17G+UVtkq5vLtWu3dPi5XdU6hRafEFGjBx60jiJILEsPzflp9dyf5NuVvrpW?= =?us-ascii?Q?DAMYjXGSj5R/ykKEaxFveiK9Dql6XIkyKPVfdzomY+DHAXv6ksjgikFvJB3f?= =?us-ascii?Q?Qg2dSPeHvpMLigjJsRXPNP/hAFphu7VCaALkOe/zepfx7xzuR3+rC3VSvZOT?= =?us-ascii?Q?pYIooBR1Sw6Usqmqd7cuW/osGMDeEokx4gWEb6I7juHvEfPI4sXbOKu8FLgL?= =?us-ascii?Q?hDZA458+IL67OsHL6zvmg8WCzGkGDtqTtHrfJ9iQtKkwBkcY/tyCnHoHwA3k?= =?us-ascii?Q?0fnaDHPhYHpU14IKKhEIiHJ0zka5SzeOhJ7jqJbMDAm0sWcx+m1tddoYtkiv?= =?us-ascii?Q?fiQ+wx8lI0p4RAg7nMCk41yZbgT3PWThLxiyxSngSh8fMJKvgfiFdWy1lhMQ?= =?us-ascii?Q?Jp6x/1sBEYYDG3pl9LCeE2Dtjgoj85adYKJzgt/8uiszg1ZkZ+vA64trxbZ4?= =?us-ascii?Q?Tii4XmSUmZhYVcE8k/set0HxAK1GmgTUlQu6HzmDw0F0MJu/ix1GobAVqRRU?= =?us-ascii?Q?/am8SpGfaRwchogzdQdlgDOv+IqjihVeFS5ZchBQTUS597zhW66/cBWUFn3A?= =?us-ascii?Q?wV0hp/xsm7VtF7CdSzbyY8XoRap82lQsnErPy7Tvyc7wlBQI+LhuGDgG7g1l?= =?us-ascii?Q?O9MpA3PC5sSpBKdrGv+NDRLZnRJ1rQ4CbgIFKXFDbllFR9TeTuZI+bv7AtnS?= =?us-ascii?Q?jj4TZv/kqGQkG63gAl0cVeRx?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b897bac2-efd1-4659-8699-08d90a58eab6 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:46.1976 (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: sXBTSolHXafKIiXJJSLlMspd7ewBrgoWPh705T5KYnLXZhb4u/jUs41Il+dkY29Yn2j0s6u77kNdOheNmhcuYmC68G5s60oHAz7xjprRKD0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.117; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" bdrv_append is not very good for inserting filters: it does extra permission update as part of bdrv_set_backing_hd(). During this update filter may conflict with other parents of top_bs. Instead, let's first do all graph modifications and after it update permissions. append-greedy-filter test-case in test-bdrv-graph-mod is now works, so move it out of debug option. Note: bdrv_append() is still only works for backing-child based filters. It's something to improve later. Note2: we use the fact that bdrv_append() is used to append new nodes, without backing child, so we don't need frozen check and inherits_from logic from bdrv_set_backing_hd(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 27 ++++++++++++++++++++------- tests/unit/test-bdrv-graph-mod.c | 17 ++--------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/block.c b/block.c index 9283c8d97b..5bb6a2bef9 100644 --- a/block.c +++ b/block.c @@ -5088,25 +5088,38 @@ int bdrv_replace_node(BlockDriverState *from, Block= DriverState *to, * This will modify the BlockDriverState fields, and swap contents * between bs_new and bs_top. Both bs_new and bs_top are modified. * - * bs_new must not be attached to a BlockBackend. + * bs_new must not be attached to a BlockBackend and must not have backing + * child. * * This function does not create any image files. */ int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top, Error **errp) { - int ret =3D bdrv_set_backing_hd(bs_new, bs_top, errp); + int ret; + Transaction *tran =3D tran_new(); + + assert(!bs_new->backing); + + ret =3D bdrv_attach_child_noperm(bs_new, bs_top, "backing", + &child_of_bds, bdrv_backing_role(bs_new= ), + &bs_new->backing, tran, errp); if (ret < 0) { - return ret; + goto out; } =20 - ret =3D bdrv_replace_node(bs_top, bs_new, errp); + ret =3D bdrv_replace_node_noperm(bs_top, bs_new, true, tran, errp); if (ret < 0) { - bdrv_set_backing_hd(bs_new, NULL, &error_abort); - return ret; + goto out; } =20 - return 0; + ret =3D bdrv_refresh_perms(bs_new, errp); +out: + tran_finalize(tran, ret); + + bdrv_refresh_limits(bs_top, NULL); + + return ret; } =20 static void bdrv_delete(BlockDriverState *bs) diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index 7b3c8b437a..88f25c0cdb 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -388,16 +388,6 @@ static void test_append_greedy_filter(void) =20 int main(int argc, char *argv[]) { - int i; - bool debug =3D false; - - for (i =3D 1; i < argc; i++) { - if (!strcmp(argv[i], "-d")) { - debug =3D true; - break; - } - } - bdrv_init(); qemu_init_main_loop(&error_abort); =20 @@ -410,11 +400,8 @@ int main(int argc, char *argv[]) test_parallel_perm_update); g_test_add_func("/bdrv-graph-mod/parallel-exclusive-write", test_parallel_exclusive_write); - - if (debug) { - g_test_add_func("/bdrv-graph-mod/append-greedy-filter", - test_append_greedy_filter); - } + g_test_add_func("/bdrv-graph-mod/append-greedy-filter", + test_append_greedy_filter); =20 return g_test_run(); } --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625591; cv=pass; d=zohomail.com; s=zohoarc; b=FdWIXUE1zDbLR0F4BPy6+iEBfEQBuh7oGHNXKszOH4ZzeioXn5/Mitj4T1OWMcO+qP/nLF0rNJoocHdwPxrd2JH+KAq1/wXtmJDwYx1AdmNIybKAJZvtsGS7Rj+rDBthI9nBrYnz4Fo8918CgwfwsS87Swqdx6QgFJmeys7DK4Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625591; 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=lSAF2JTxyz/yuE1Q8hvqdw1EIBZji12opwAi9KUDIxU=; b=PBomDStQpEgCtrACtLF07+TcMhTacsUAT1+cq3IqBX3l6VSfb9OPEGq0hFx6oTiiJSrEJKnshCiuqSWmQ0TeWwa4lnQy+x4+cu+FkMIWGA6esIRzLmIliKXVafbhspFwh5n6KiiBXSRFuAqvgDh0JOa9XO8BM1I/5D3OCYlBsuk= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161962559126927.711983187939495; Wed, 28 Apr 2021 08:59:51 -0700 (PDT) Received: from localhost ([::1]:46456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmbN-0000Dd-HK for importer@patchew.org; Wed, 28 Apr 2021 11:59:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58854) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyT-00060o-UD; Wed, 28 Apr 2021 11:19:37 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lblyQ-0001uH-1i; Wed, 28 Apr 2021 11:19:37 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:47 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:47 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gs8CpNz0GG53KbBw5TGFcBDIfenJbYw58r8+g6G0bblHXeSLgFeQ3BxPtPCoBVj8F9RUiwO4Lj/RLDilbgG/h/1CX7IWqWTxvqPfYg8ZzH/escHSECNLSqj99MGaVjh4ypKlR4oZ6qCS68iNNJkWW8krf+al6kwxO/ftJW2bk1NvsXg4a8qZPN+jKubsAhdaJr1gEkgBH4BB5WxZ/RrH09IjzJce0G9mw5O6hJ6lXVsKXHXt1Q+6DcjzGrJ1DTD3iD6DMmgE0jBLZzEitkKi1+MF7euEOrbcCyHwUQZKFi3SEmk7sdQgUiuO+PdFa2+mh5okcMcxVNdSj6QOJTAEOQ== 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=lSAF2JTxyz/yuE1Q8hvqdw1EIBZji12opwAi9KUDIxU=; b=UUh8Ova/bedh0SuXwOJm09HkjLYXm88lwWjmpeVSAazWHPh0PUGGdnSHOYnftjEDVWnY4ycWA44ZBxsg4qmuDwi80Yu4kXNnfMZMGEPHLZvPjcija/jzTl9OUGXo6tgGCssPf78CDYTSHAK9WoaitA+1oFr4Zi4fOQA0t6m88bdzMjCIFDxUHam2NXgX00Ppuj9o5xqkNnLXHCycGRdD7ceuPZiuqxI0TSVXqhX4m0uSWuAfdXYfME1rbDnuY/I02w7ahP4tgQ3wCLGsSiuOgOhvOAGj7Urrnuj9R7yuAqKWMOXvrTRZ1LiejZut6SYjcEX/RUON7QtWnX/854pI7g== 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=lSAF2JTxyz/yuE1Q8hvqdw1EIBZji12opwAi9KUDIxU=; b=piF98tMe6NyXCitqcY0m/jsKm3+qBBxMqsfi9X2lMN45LwOuMPUA2UTbh3EtmbmTCVr4M70/RZufraVXtQi36133apd0hJhCKMv0oE9mo/MQEwCJFEdZXSnZkYeNdK72Jla/Noj/TzbDt24/HUXAuS749ECN95/0afaDehRMx3U= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 22/36] block: add bdrv_remove_filter_or_cow transaction action Date: Wed, 28 Apr 2021 18:17:50 +0300 Message-Id: <20210428151804.439460-23-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 64db106d-36a3-4b37-49dd-08d90a58eb79 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:22; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: utA2zFhJ/BEWimRQBaw8L54WjJ5alTTY3a0IWx7yZWPAUVyiT2KZdk8+zT5PKQDNR2u2m///Q6fwJHNSIlg5xe/HrypChRXPoa55OVV5vxHsqJN8/xg2ASlkfbI+uHo9SeOpamAuAWvrf119P6xn5KHWvouBzilmREsxzcTe5c5xs/xFzvzMq9BAHnbpjewgJLsy8bxk10Hch+3bAkIbw8HISuqn6T/jQ90fq4o35plNE0RpNKq9JoTqD3rb6XgWDxW0cIXBy3KN9pW1z+0Lc7tVi28gbnm4PP3tI8xCEOe8flsBOBd1reEZ9teU4b4EqmHkuzO3hG0XaRVjUX5c+kH/FOXni7EBVIDq0R8hslHeOLaaXN6GuC8yxqAGPHRDiJEqwqe7zahW7yk/Nv24VVdoHTaTgD1nCpyTjCn8Rfy9TEOmTndBzCKHKKDbcDBsutZBdvcdAeU5fR+YcwdSo/cxFth34LqaTbEsUfapTgplGxQeG9Z7DNQSPkr4G7cgg85JpNlFVlKnV98gJAAZH7XkT+503UHL7zFc+6bd5b6jf98Qis97oQ33Cy4+FRM6ijhKbKbUHKMdOEt+IS4Ad5WdyfEMfijM3g/G1D2YCqzx4YyMQEajzUDMyCmrjk6lj9qdTVjoS0oJ4PkZM3Lpv0D2fraS+3FCzl8yyrEHbYW2iyA1FMNBUW4KS1pJ1Lim 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?oBJ9FfJLuAN9kG99RRK2oYgdqDky3rgdoVtizYlzErjrGh88614BKw0Pxmag?= =?us-ascii?Q?1v6AFOKwfThir7x4RYZQ1J315PGBcfoH5wD2rY25J5fwllIFW5BaWUjmV3yj?= =?us-ascii?Q?jC3n5eqGiMONDjxcKJaFH+KvOfN5prFGOLrumsc07uJELFoRtc4W0OfAHV39?= =?us-ascii?Q?3Cb1u5f5i4UhhVhoWPJQeEkGttHIZdAOdAJIRSkJg+B/RK5enlYIeEg/zekI?= =?us-ascii?Q?NIWg3NGmBJ66PQlm/ndGuLEPHRxFjN0Zj5qcLgbooEbhn3jeJqp6y4fnxD/T?= =?us-ascii?Q?baEtu45YN0AM0f+iTUZQUE4PLsMVOxothnIbxEpxxT8BIdjv50RC7996rE5x?= =?us-ascii?Q?9rYd5i2jNQJCTJwgTqRADMlX0/ktYlsZf7Bzm6ZxIdvBdfu9OLaDzjK0DxId?= =?us-ascii?Q?ZlYVDf5UlYXzbhavrLiLR6Vhw3+k70/OkZw1hfahwDxFOj5dROdgZ3/l1Aek?= =?us-ascii?Q?WQNMvLvZ8hYo16XzTiQvB5I5KVXWdwCPTDRxjOCUFhzWWlkM51l/tTZp8tKw?= =?us-ascii?Q?oaIiysxHTQQW5nc8x9Q28kvL2gSIqljziJuO1tu9Wlb33T1wV/ev3fYHpo4w?= =?us-ascii?Q?Yc9yEy8Esp0cqhRt48/B755ndRq/Co1IZYFsdIly06iG4cK+tgVhbAbjVLdu?= =?us-ascii?Q?ri9t2xYJloKV3dJ38AlgcLd48cvQyIzcDD2fQjl2+7P++wQGr7LZJhps8cPx?= =?us-ascii?Q?DtidCt+zNqX1rm/2LBYcHZRPqZaWI7yD06M3OvOV/yGrOprLITL1ALvPIEuO?= =?us-ascii?Q?E4+pjyuX0WaMFCQpr8nhMn3EqrS03/S2B7xezPgat9k4awuK2HSgfRDYTOig?= =?us-ascii?Q?pZBPqZINyj0vkReVExm15YzIlXpjFQbpPvHICX8YyHjClzRpQKv7lCH3U2fu?= =?us-ascii?Q?3prhtsNPEmor8kJ78ZuMcJeTVr6NsUZ3AKFKfYHtj8l3tMshs4n9+RG1sV6Z?= =?us-ascii?Q?bg2n2+tPj1ZOrBKQZ7ZgRY3a0fAg37V9mktGLM5Qgdn3Jl14/YR/y9/B7QNe?= =?us-ascii?Q?Wdlh1yFZ5VC3Yk/At+haOxsaX8KGlHNJUVfdtCoAkWypDEsZHLVC5jIh687O?= =?us-ascii?Q?xgMNHsYN1i4eeJlIYw5wLn14BSEKfKdJeAPHhyS/GA//ZJ2C1fbmO6xM/7qO?= =?us-ascii?Q?OuQsH59xYKlr+y8eBkGm/QgvH5En6a5AiajHYdzhqBimli/XQZ5JtrRloa3O?= =?us-ascii?Q?kcDSKw81XHBjFUQHtHU2vZsueYbJwK7uKcRvl0Pr40xsQwnP9Pad7I9T/4SF?= =?us-ascii?Q?cNQUmjW4YGFnPqdiFZWkNDsMVjrmNw/Ew5HaoguqBC8w7QzvHd7b4YZ6e9Bw?= =?us-ascii?Q?GpY3C8SYS4VhqRcyp9w1Fr3P?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64db106d-36a3-4b37-49dd-08d90a58eb79 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:47.5193 (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: Dch2x7xdoTdRBEoZdgWvIA8RPIpN8vn9P4tC24E9p55Q6JtGnD56n4q5T+CBuE19A6sXm4wtYRInzhUaJGQjBUjFd/Y7WK4KU4BTkxMRyB8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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) Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index 5bb6a2bef9..2ea9cc110d 100644 --- a/block.c +++ b/block.c @@ -2963,12 +2963,19 @@ static void bdrv_replace_child(BdrvChild *child, Bl= ockDriverState *new_bs) } } =20 +static void bdrv_child_free(void *opaque) +{ + BdrvChild *c =3D opaque; + + g_free(c->name); + g_free(c); +} + static void bdrv_remove_empty_child(BdrvChild *child) { assert(!child->bs); QLIST_SAFE_REMOVE(child, next); - g_free(child->name); - g_free(child); + bdrv_child_free(child); } =20 typedef struct BdrvAttachChildCommonState { @@ -4991,6 +4998,79 @@ static bool should_update_child(BdrvChild *c, BlockD= riverState *to) return ret; } =20 +typedef struct BdrvRemoveFilterOrCowChild { + BdrvChild *child; + bool is_backing; +} BdrvRemoveFilterOrCowChild; + +static void bdrv_remove_filter_or_cow_child_abort(void *opaque) +{ + BdrvRemoveFilterOrCowChild *s =3D opaque; + BlockDriverState *parent_bs =3D s->child->opaque; + + QLIST_INSERT_HEAD(&parent_bs->children, s->child, next); + if (s->is_backing) { + parent_bs->backing =3D s->child; + } else { + parent_bs->file =3D s->child; + } + + /* + * We don't have to restore child->bs here to undo bdrv_replace_child() + * because that function is transactionable and it registered own comp= letion + * entries in @tran, so .abort() for bdrv_replace_child_safe() will be + * called automatically. + */ +} + +static void bdrv_remove_filter_or_cow_child_commit(void *opaque) +{ + BdrvRemoveFilterOrCowChild *s =3D opaque; + + bdrv_child_free(s->child); +} + +static TransactionActionDrv bdrv_remove_filter_or_cow_child_drv =3D { + .abort =3D bdrv_remove_filter_or_cow_child_abort, + .commit =3D bdrv_remove_filter_or_cow_child_commit, + .clean =3D g_free, +}; + +/* + * A function to remove backing-chain child of @bs if exists: cow child for + * format nodes (always .backing) and filter child for filters (may be .fi= le or + * .backing) + */ +__attribute__((unused)) +static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, + Transaction *tran) +{ + BdrvRemoveFilterOrCowChild *s; + BdrvChild *child =3D bdrv_filter_or_cow_child(bs); + + if (!child) { + return; + } + + if (child->bs) { + bdrv_replace_child_safe(child, NULL, tran); + } + + s =3D g_new(BdrvRemoveFilterOrCowChild, 1); + *s =3D (BdrvRemoveFilterOrCowChild) { + .child =3D child, + .is_backing =3D (child =3D=3D bs->backing), + }; + tran_add(tran, &bdrv_remove_filter_or_cow_child_drv, s); + + QLIST_SAFE_REMOVE(child, next); + if (s->is_backing) { + bs->backing =3D NULL; + } else { + bs->file =3D NULL; + } +} + static int bdrv_replace_node_noperm(BlockDriverState *from, BlockDriverState *to, bool auto_skip, Transaction *tran, --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624511; cv=pass; d=zohomail.com; s=zohoarc; b=apSilHR0QgzQ2aBPAO0qEhuEIfvXn70RtEZZwQDdN0+QvGEUBwqDNIXUDeI1eZzDS0bov2UnSz3/QszUsvAo9Tugj2GZALlxsijiPNRzv+FvazBUX6OJ3vJEOHXjhfxY1Ko4Wjc9O4oRozbQ4juuS+2rUdn+bmK3J4MuU0dEA3M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624511; 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=Pl8sILmQH9AKM6ypd9qNtoATqX1oWCZ00FmgPSosNrE=; b=J9zaa+uK6e8SGD4ROf8AqX6w/4wfP5cyz27jrFrPyzkE1WwB0jLWJCqcQm1gqGYutKZ1q/xLtjMvpmjxpT5QPdyn4guEC7YxDomKF5MbCircYNpzcuOFo6VG4NpakuO0oPHnvsgyKvOLwa7wHi4lgHFVYL5EkKbnrkZ9IuB5XhI= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624511873242.64405948335548; Wed, 28 Apr 2021 08:41:51 -0700 (PDT) Received: from localhost ([::1]:35568 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmJy-0000UG-SQ for importer@patchew.org; Wed, 28 Apr 2021 11:41:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58914) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyW-00066f-9h; Wed, 28 Apr 2021 11:19:40 -0400 Received: from mail-eopbgr00103.outbound.protection.outlook.com ([40.107.0.103]:52805 helo=EUR02-AM5-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 1lblyT-0001yK-5x; Wed, 28 Apr 2021 11:19:39 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:48 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:48 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cyOd5vWWCWt6LCEjE49fqZ3nPhBnqwESBzmyNrcbU+s/hBFjVWnCQqLEjNn7nFGD/BvWWa5XrWqvEF2AvkwpGa9BkVOMaHv67gU+43BI09fgLaW7oi1VaeTYuiv5AutzmD1PVxniMN2cc0fCEX6TqmZ5k3elrPKS5LtjVwzl8UYsL8ZGaSK5YGCBAV1YnGtbHt4K/nN1qw1NLxMnwJ8aZaZp4SDmbR8hTcXBFElBaAs0/IIoysUSdykkbWBBi1u09g9GRpCMZSPcwVper4T1mvNo8For2xHJtkATR5zmvK9qRF/fQYXDqAk9eW56vfOPrD0WzWvug3WKMX2kNUSOWA== 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=Pl8sILmQH9AKM6ypd9qNtoATqX1oWCZ00FmgPSosNrE=; b=aPbbwXHAddk8qao89aCu1Bfl0KmCuioJAsvKrQzo6GhzKMS0vMXOB7dCFu+BGPmRv6iFPgCuRcKSIojp7PIp/fdc5xuHtYQBVM0oKErIYHW09eV0ndg1qdVoGyttkeaBX6IiZ0KOAqP56Elu4EeEUAj5j7L28zd0jpv2ihB2GgX2J8wd/ijxg9zM8fe+MXNRWkUlMnCkpLkXKIxkuzwu3CLSVTxCnXHI5V6vFZm/kFLTlecT61TNcrlT+aJTwcpqty4Ccf45vwvrc0dGfDYI+aZIaqCN1hXJAAi5ltGQVZbuPD70yZT+/iLTjavreiVHHKNNWnBQBKnPCLoo16d2gA== 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=Pl8sILmQH9AKM6ypd9qNtoATqX1oWCZ00FmgPSosNrE=; b=GnAdobaFp2gEBTRPwGDyWug4VotIwLtaiKDe9qxE+Z5hqtAQxowFrerpbZ8rIABt9HRMRPguvA3R5kGbJi2kUlSj+vFF7iCoGm3dXZZKxw4k/fZnoHkohGXcPs0DVZJ09K9GNSTW2N7m93ktReEgnMw5fu1ElkvdKvgv0CEJ/x4= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 23/36] block: introduce bdrv_drop_filter() Date: Wed, 28 Apr 2021 18:17:51 +0300 Message-Id: <20210428151804.439460-24-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: f6cabb88-2098-4a7c-ab3e-08d90a58ec29 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: grTn+HDLnbzrutHSWoRAtN0K+stP8knG2aY6xPD/YxUHP7Yv3yFvSEczpdAakxFrujKOZdgPcyv8V1+BwvfY3p6AWQzR8+kuRoK2Z0prre9BeRm6yWcVPu/LROgWvh49xRTruRfMh5Kz+xPh7BDuDmz6PZgDQ9FXNk6qIi8zRx5uXJ3qxDGtx6Pp1wUtZYF+FOS265mFch4AKT9wP9TzkkLi7VODuIVS9Hx2KFHu1vyL42zOM/dpUN1yOn+N7qobXsyltxqbZf59x7OktIRWo1KB6wA8YhHz0IsClebuB3AdSBn2uo6etJNwGdYo/8PZ2fpwUN3adI1pv1xZ/cQhPfXDhEv8w0JWu/5w5PehRQhVwkKoBBLuHQI7ws7V7SYOX4uQPx4e/QEVutOtlmP67lCN2oKnyVNEqRRr0O9y4L1wx4BiYfn6n2CF16yKRZqTkd4AYvbQBGqffsi2djZ1K+tewP7zeuSp9xu7MScr3uC0W8d3IqGy6qgx8beinDHziwhTZUCVnllMV7rhF5L5rfMJRyyg4P3q9cZiGYfVvR88OF4k6Acb4W0u/6LlAjP5Cbzf54UoEKixOdSfu7xLMvZcSlo5hu80SP9WRwESxrKyhfYQ3h22B933hvb+xITRH/wfdNtetHNoSoFwyUHqWVD3ls9tAqaYeZy/XRhfnyooCcmjAeLz9u1EBWoPiwsE 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?2n72g/EgLr/Lud41pDvQwc//KxD9eTpNzB6qF7KwPNLe61PPDXe2mFQA/s3g?= =?us-ascii?Q?dPKZqxHR3migDLVAR1NS5m94zHKviGpOeLKSOoO9g+BZ4Je0VJdE5F6Mu0iF?= =?us-ascii?Q?psk+CeV79+Hh9+rhLS3wi2i6hplBIn783zhTTsnUFE/uyU+Q/gYlpMNNchSu?= =?us-ascii?Q?rncqQmU9ikOpy+Y+sLcS74Q1syo29xFh9PW/alBo+Ry9L8TLhjG9GHA0u+XL?= =?us-ascii?Q?tU7V1ialc7ZC5cnJ88Ue1HuDbUkWo4oknzl0k1ogMfS515ZB/VxMtS1N9EWV?= =?us-ascii?Q?QOAfWK1mUwnqsu3kJDo2hvHaI/IWmiR1Mx2ZEhAR386sAY9GxRQfxtUW8gWx?= =?us-ascii?Q?dzY7putZF9gHf8yXf7q1vERpIABt9wNW/D8K6CnAX4EYBPVIV/sQhcr8CosE?= =?us-ascii?Q?ZvNJC8PI+HiECDqd4fChG/uLX3jrb1Rc/uomdNyhCeMmztxZcbCnskpDQoPG?= =?us-ascii?Q?obqCHQoR/Js1SPys7TRTbzqsIrgGMHlNx3tQrHEEk+k6Z+GX+GO9Abe5AuGB?= =?us-ascii?Q?tS4nQuPZfNQ4Yh0hdJWDoprQhFs0mDS4HEYgbh4J/nxHXw/muELLu6yRnifD?= =?us-ascii?Q?sxs3uzT2DP/RNuhuzzLFwsICxE2tFsPEromD2TvN7zQv6fEugnjzPHXM5AyC?= =?us-ascii?Q?Mp2XeYeqF0p1InX+ZjIiGF2PXVdP8OiezWkgwdR9PFOTuSGMFP5ecu61z7Xi?= =?us-ascii?Q?A5UmH3Un9EhIoXZ7zoi6FqZ+nT1b2RThFWmvQEthomWBvHJ8PFTyVxVhLD13?= =?us-ascii?Q?KOPSPL2n6tAdfNaqgWvKDidS40SI1ME1LBY/Uazvpb+fPFu9R8abKx+c4VOT?= =?us-ascii?Q?fbV64CQQLHmN1ZPpZhbtldrePHSFr15x1IBJtI7kDj2//uA8rQp+n7P9JUT/?= =?us-ascii?Q?sIAq98Miwf0Q9DSMv743ZMIY5sjHbMFa5ZhqW5Hzqil9M18DBASwV1RmGuwD?= =?us-ascii?Q?YjBeQ9klL7iGe8nJ2GSUzjRWXGtY8cytgBqIZe7Zfev+bOP7QhRiVGJsWkB5?= =?us-ascii?Q?MfXzHuO483QjUBFYpWHyVwYU+ka+eqHI8Jc/jpz1fHYD5acu92K4ZrSqDxs0?= =?us-ascii?Q?cSnGFtddXFVTbBU3gae9G8rnk0VxIQCFO4IBJYl7oFtXvb1eVUd+OylKrOM2?= =?us-ascii?Q?gJ81PgN09hwHun5fch5uZpRmaZm/X0CKvx61UMMWGIPrx3+X2fG7SxEnJ6bz?= =?us-ascii?Q?33Vh8XCVUaq2Q7jJwkN72JsrxdnU1fWoio9jLRT7NTfsezGumDnoTVrfTlUH?= =?us-ascii?Q?Ud2c/D6syZMp1DbQbhF6fxB4ePp607voEaacaTyurGGicGi4LRqdrg9C7lct?= =?us-ascii?Q?fOuP+aGBeMM4LJYDIUaz7uFm?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6cabb88-2098-4a7c-ab3e-08d90a58ec29 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:48.6623 (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: sPQ4P7e7iYqNZhIFVQKS9rtqT3LosrxEMsCW6tkVCnbN3dF68ryCPquDaFw49Piiif53tN6C66gbdVS39VKHs6W3MYicrh6VF1wHbCUszgo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" Using bdrv_replace_node() for removing filter is not good enough: it keeps child reference of the filter, which may conflict with original top node during permission update. Instead let's create new interface, which will do all graph modifications first and then update permissions. Let's modify bdrv_replace_node_common(), allowing it additionally drop backing chain child link pointing to new node. This is quite appropriate for bdrv_drop_intermediate() and makes possible to add new bdrv_drop_filter() as a simple wrapper. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- include/block/block.h | 1 + block.c | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index 16e496a5c4..85481a05c6 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -362,6 +362,7 @@ int bdrv_replace_node(BlockDriverState *from, BlockDriv= erState *to, Error **errp); BlockDriverState *bdrv_insert_node(BlockDriverState *bs, QDict *node_optio= ns, int flags, Error **errp); +int bdrv_drop_filter(BlockDriverState *bs, Error **errp); =20 int bdrv_parse_aio(const char *mode, int *flags); int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough= ); diff --git a/block.c b/block.c index 2ea9cc110d..68dfd822dd 100644 --- a/block.c +++ b/block.c @@ -5041,7 +5041,6 @@ static TransactionActionDrv bdrv_remove_filter_or_cow= _child_drv =3D { * format nodes (always .backing) and filter child for filters (may be .fi= le or * .backing) */ -__attribute__((unused)) static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, Transaction *tran) { @@ -5105,16 +5104,32 @@ static int bdrv_replace_node_noperm(BlockDriverStat= e *from, * * With auto_skip=3Dfalse the error is returned if from has a parent which= should * not be updated. + * + * With @detach_subchain=3Dtrue @to must be in a backing chain of @from. I= n this + * case backing link of the cow-parent of @to is removed. */ static int bdrv_replace_node_common(BlockDriverState *from, BlockDriverState *to, - bool auto_skip, Error **errp) + bool auto_skip, bool detach_subchain, + Error **errp) { Transaction *tran =3D tran_new(); g_autoptr(GHashTable) found =3D NULL; g_autoptr(GSList) refresh_list =3D NULL; + BlockDriverState *to_cow_parent; int ret; =20 + if (detach_subchain) { + assert(bdrv_chain_contains(from, to)); + assert(from !=3D to); + for (to_cow_parent =3D from; + bdrv_filter_or_cow_bs(to_cow_parent) !=3D to; + to_cow_parent =3D bdrv_filter_or_cow_bs(to_cow_parent)) + { + ; + } + } + /* Make sure that @from doesn't go away until we have successfully att= ached * all of its parents to @to. */ bdrv_ref(from); @@ -5134,6 +5149,10 @@ static int bdrv_replace_node_common(BlockDriverState= *from, goto out; } =20 + if (detach_subchain) { + bdrv_remove_filter_or_cow_child(to_cow_parent, tran); + } + found =3D g_hash_table_new(NULL, NULL); =20 refresh_list =3D bdrv_topological_dfs(refresh_list, found, to); @@ -5158,7 +5177,13 @@ out: int bdrv_replace_node(BlockDriverState *from, BlockDriverState *to, Error **errp) { - return bdrv_replace_node_common(from, to, true, errp); + return bdrv_replace_node_common(from, to, true, false, errp); +} + +int bdrv_drop_filter(BlockDriverState *bs, Error **errp) +{ + return bdrv_replace_node_common(bs, bdrv_filter_or_cow_bs(bs), true, t= rue, + errp); } =20 /* @@ -5493,7 +5518,17 @@ int bdrv_drop_intermediate(BlockDriverState *top, Bl= ockDriverState *base, updated_children =3D g_slist_prepend(updated_children, c); } =20 - bdrv_replace_node_common(top, base, false, &local_err); + /* + * It seems correct to pass detach_subchain=3Dtrue here, but it trigge= rs + * one more yet not fixed bug, when due to nested aio_poll loop we swi= tch to + * another drained section, which modify the graph (for example, remov= ing + * the child, which we keep in updated_children list). So, it's a TODO. + * + * Note, bug triggered if pass detach_subchain=3Dtrue here and run + * test-bdrv-drain. test_drop_intermediate_poll() test-case will crash. + * That's a FIXME. + */ + bdrv_replace_node_common(top, base, false, false, &local_err); if (local_err) { error_report_err(local_err); goto exit; --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625272; cv=pass; d=zohomail.com; s=zohoarc; b=GYPwQAKL90QTyzf6pcK47Yu45QLL9XOTJ2XbmAfLnRz5TirIO6DJJu3MtLU9jDHyLF4BJs7YKXUicAyyYWPKEDanfQVVqqsfqDEH4qtjxmzc9ebVe1JD7Ph3CW/gqK3gpzZ7vHEZ1Pu+dlLEEao/S6hwbPefRpZ689HXnkmTrEM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625272; 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=wql230fj2DOXdP1vAPMD2wQnX2m8D8h8CeRv4Sp/fLU=; b=doVoQPkArl83uqMppUrH4ER79qpT+pyQ6WEKLvR8d3CY/ampmAPdUNx59O/GekZ5P2XOkcAJu8sUx2beM58nDW+HkrfCV2d0NM6ywxigSL1k8pQEUpiHLReKCqnMa6ViIm8zQs+G/XUcuS0ZiFPyvn8fDSDKFHuJTfGh6Y89jcM= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625272386372.13916537327236; Wed, 28 Apr 2021 08:54:32 -0700 (PDT) Received: from localhost ([::1]:59760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmWF-0002XM-7y for importer@patchew.org; Wed, 28 Apr 2021 11:54:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58900) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyV-00065r-TL; Wed, 28 Apr 2021 11:19:39 -0400 Received: from mail-eopbgr00117.outbound.protection.outlook.com ([40.107.0.117]:54347 helo=EUR02-AM5-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 1lblyS-00021X-Qz; Wed, 28 Apr 2021 11:19:39 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:49 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:49 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZTLV9uCAXvLdbWTcig0t67m2S+5LIpFQdYrFBacEbc3ndzQ9GbM3yqynlqD6R+/uYJvxHM+Tu1Gt7TIbECtz2mm6B9pBB86nCB8ZAXOMEmbq4EvnRff2nQsD8aL8plykiciGC+CeQ7Uo3WVuAbypBY6CEag5nV1sqAStALAAuROmkppjukyKSXaveDBPqlhrKZ0I/GKW6aJNfuLGGd5kEW4oXPnOHIMHXkiJlMJtwZiYOJ8HVkXUAKkMayXQipEND1dcO2phmY9YQ28mGoiEi/WZ+mGgxRaD6p1vfFYg6oA4a/LvnWc8Pths0ENEXdUNS2R3Nma9hw8KmxG0NgaFAg== 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=wql230fj2DOXdP1vAPMD2wQnX2m8D8h8CeRv4Sp/fLU=; b=KJxBVb8q/ndTOiXmIqetQWbInBR0rUgX3ER+cDe6zbLRqO9ZZmEx16ZPLvsnmjvkhTj1+X55vxRQQ1YUX62hg/gJAtktjQJ4lXpYys8bkRDJTaGrAbSwkV1JbW0+F0a5UWniiwZWNrxfO2H7G1aKKAcnY0d6luD3918/BkjWgCezxNoGtoNEr0n55jukV0RsMtuSmlS+3IJ37iVTK1OsFCo7liF5yj9enMvImgUKer0e6C/XKVPKXTts/J8RG4uGZ7CxfO/wWSpqfFxqq7hZ5SWZO7WjNir0CPNXgtkBKt4N0OOsdHzZLhLVZu/8VXA87SXc9HX9D/0h18B9MsDq9w== 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=wql230fj2DOXdP1vAPMD2wQnX2m8D8h8CeRv4Sp/fLU=; b=rBmsm+Q+8J/PfkBLZ+re7BzrFpqub4KiSHjLrrpW/NbVteTveMB+7yRsYsMx1/ZJm8lIpvBwxoDaIpZhkAl+pPORWJpeGa4n3XZMe7eVOCKXJIaoBm1cPeBwLh0lnDMAJm1Iu0cFA5680sISGOrg8MdWeeNFSjtT4fRRqF0rT4Y= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 24/36] block/backup-top: drop .active Date: Wed, 28 Apr 2021 18:17:52 +0300 Message-Id: <20210428151804.439460-25-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 0b572ea7-a574-4124-0c1e-08d90a58ecce X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:94; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: obw8n5h7gXViebcE9+Fg7W9O0VqVby7mmIDESbU5IZIeKVSsYi7K/batEr/c2xIQzJ6jOeug6tbSTe6n1D+cmkGwZFJwIEQ4gHWv2K54HNBx0lS3a/UcxlOROZW+kLTVtdjmz43a5FY+wbSPo/TXq/0Oe72xHhvsBxCx1AJXF/3P6s5yYFWh68fSD96rg51U2ZOiSjQ4+9zpKdmzDzZve4QFTuiV3L7zNcAgM1CnFCgUmKAErvcwua8xbof/w0ceqObTlh1jUVgyDHTHPtNgboh5W6SIbD+y6zdLXK+wOyMtiUPfIioy148pSbch7QIq64nXEgO7UXVxDOl5Zl90yOGKlLZg6AC3+OmUTOZdvAknbpMLVK0J+ICIKoi7wPpg86plYe5P0cM4n9ugeDXY0KuEYeWXIGmCuKNmMsFxpobfaruy44zMNU/ejz8WE1akBvC2B4YBX6XuxfBfQdGq0ng7ygIfGnvh7x04Mac6t0dQRGAEl9Q2nPLSNz31dwoLYz3jy9ByO/08NioPmrk9syU//r7Q/lCVgWAOjn0YCOBVYvxEk+jQ1EvzfXvqFw1W/vZCA45J6zDA/5lm2UT/GFmRdLbzOw688ODv/W75hRekJnzldhHd5ipoumkuetdeRR5f6biio+Ckwmza0z1RkqYIDA1bwGMZAO+QUaCZXFCJyj9H/9kMhuPE8j2WVEVRCSgIZmUe8npOpM1Od1ufag== 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013)(142923001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Yq4CLbGyVJWXMPCCL2VbxfB/64ePIWnIq2dO8aIYBodrOX+SvuiuVf8pxsMs?= =?us-ascii?Q?Sku2dZGAjr5qfUQMXgxnS7sldFKAvvIN9/DER92kYqApY/E8U31/1YfveJbI?= =?us-ascii?Q?MEr9dWxnZvV+sYS5LUxmv61myah9E34JBPNIcNBU2GNjBM9L3kiOJrOoCCTl?= =?us-ascii?Q?rIqFbSWSmhZo7ggvGs0Pzo/y4JWhoDT8eQd0YGV5Rm1tgkbjlXiDnAbFAOhp?= =?us-ascii?Q?/T5V1p4aennLoT7A4as3pD4FOfECeUBbGX6Uwm2cjNsTRfyvmKv7sLOyDnT8?= =?us-ascii?Q?DMrp/2rcZvcBkqLZIs8lxglaCL5Y26K0sikVuwvXNwCYNS7ylFBh/SgubF2E?= =?us-ascii?Q?wj5kp2AzWK1LrTAJw0m9vsK7hMYBTdb5fIddvar1y7D6KqNZGyVL29mYhz6L?= =?us-ascii?Q?g5EMVlkqdGWcsphpCkw50JB5b1j3AkrNV4T1oA3qXkRbWO/rMd3smiu82Gpp?= =?us-ascii?Q?/b24uasKbElP5tYiMdjKbyMAySb84YjCpKt0pXjsO9o/wMoMLjpJIsAkBSYe?= =?us-ascii?Q?qhWYLQePhIbXXcRq571hG3I32oZOAzig67QLEcViu3tWH9ww57BRT05NYaya?= =?us-ascii?Q?rvegmG1Ng3moAfsaKg+0DMWwWO9R1W2WUWg8bGAGCQWmWeYyHmtx+BacRqhX?= =?us-ascii?Q?xO4S1WNBIVZBRVPR7RhNDgH5rwmlD22hRDLs0ECGBJksoZjs5WB7Q+/pz0HS?= =?us-ascii?Q?vwMgKuKlr/BljS5zjOztF4TtZa2PClBRrM6P3qWYnpf60hEOPYAEorkFNYSb?= =?us-ascii?Q?ItpVQbt9ffJL0AdwqQ5tJzeetxtC8C2iVouBarDnYI+btHFr1TZ8onDfUNfX?= =?us-ascii?Q?l07YHVpwZJPRt1DbdBSalNR4F1ykgn04+c8pDeu7mwnXjG1gqeH0LSxYCM8Q?= =?us-ascii?Q?yDzR+gDyAjZSYCAaPcYIWjK6oBjxmK33KVuZnzKabZ42Qat17xO7g1fNsP+j?= =?us-ascii?Q?MmKZCKEF3fLAAOj//5DluhHSmyTM4gDFSoBUU9l98pEWdSPmOYvLVaYeIiap?= =?us-ascii?Q?JcjWUq+TIj7QjFc3i0jcMI2vR3q1V8O2/Bj5CjB3l0QwFmQ5NsLreC2ZBB6I?= =?us-ascii?Q?TShYP+y8Fb95jbS3Pf/P4CXVsfTUuNIZD7sSoOZPZINmu+KSfzxbeU3VpQTw?= =?us-ascii?Q?eO1lJDtRsj6GotkWXm7jAPvgyEptZGazmLAZFFq8YYbtSyDTqJmf28F03uYk?= =?us-ascii?Q?IpaCM0D2yM661ha1EUUZJ7+zcP1cOByulgjMs8yDACPdyfNk1fRs8Bv4rhYJ?= =?us-ascii?Q?8wm9wK0CrfXcYSoTpvkyNbxx9b1wwVkIKiyguJiuHb7pu9YziuB8Zh06Y84e?= =?us-ascii?Q?FILfQRPtX+UdzwvZmzHwrgnD?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b572ea7-a574-4124-0c1e-08d90a58ecce X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:49.7774 (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: IwCTo/rG6/7iX1jfkhVXTv1MWR+69NDXoW9PbXP3PGKfXhgQpT8bMtqwV7zuzL+Q1EtGFg7iX/ZdvFA3N9h32EHSUga7x3OmohkrgSYusbk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.117; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" We don't need this workaround anymore: bdrv_append is already smart enough and we can use new bdrv_drop_filter(). This commit efficiently reverts also recent 705dde27c6c53b73, which checked .active on io path. Still it said that the problem should be theoretical. And the logic of filter removement is changed anyway. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block/backup-top.c | 47 +------------------------------------- tests/qemu-iotests/283.out | 2 +- 2 files changed, 2 insertions(+), 47 deletions(-) diff --git a/block/backup-top.c b/block/backup-top.c index 62d09f213e..425e3778be 100644 --- a/block/backup-top.c +++ b/block/backup-top.c @@ -37,7 +37,6 @@ typedef struct BDRVBackupTopState { BlockCopyState *bcs; BdrvChild *target; - bool active; int64_t cluster_size; } BDRVBackupTopState; =20 @@ -45,12 +44,6 @@ static coroutine_fn int backup_top_co_preadv( BlockDriverState *bs, uint64_t offset, uint64_t bytes, QEMUIOVector *qiov, int flags) { - BDRVBackupTopState *s =3D bs->opaque; - - if (!s->active) { - return -EIO; - } - return bdrv_co_preadv(bs->backing, offset, bytes, qiov, flags); } =20 @@ -60,10 +53,6 @@ static coroutine_fn int backup_top_cbw(BlockDriverState = *bs, uint64_t offset, BDRVBackupTopState *s =3D bs->opaque; uint64_t off, end; =20 - if (!s->active) { - return -EIO; - } - if (flags & BDRV_REQ_WRITE_UNCHANGED) { return 0; } @@ -137,21 +126,6 @@ static void backup_top_child_perm(BlockDriverState *bs= , BdrvChild *c, uint64_t perm, uint64_t shared, uint64_t *nperm, uint64_t *nshared) { - BDRVBackupTopState *s =3D bs->opaque; - - if (!s->active) { - /* - * The filter node may be in process of bdrv_append(), which first= ly do - * bdrv_set_backing_hd() and then bdrv_replace_node(). This means = that - * we can't unshare BLK_PERM_WRITE during bdrv_append() operation.= So, - * let's require nothing during bdrv_append() and refresh permissi= ons - * after it (see bdrv_backup_top_append()). - */ - *nperm =3D 0; - *nshared =3D BLK_PERM_ALL; - return; - } - if (!(role & BDRV_CHILD_FILTERED)) { /* * Target child @@ -241,17 +215,6 @@ BlockDriverState *bdrv_backup_top_append(BlockDriverSt= ate *source, } appended =3D true; =20 - /* - * bdrv_append() finished successfully, now we can require permissions - * we want. - */ - state->active =3D true; - ret =3D bdrv_child_refresh_perms(top, top->backing, errp); - if (ret < 0) { - error_prepend(errp, "Cannot set permissions for backup-top filter:= "); - goto fail; - } - state->cluster_size =3D cluster_size; state->bcs =3D block_copy_state_new(top->backing, state->target, cluster_size, perf->use_copy_range, @@ -268,7 +231,6 @@ BlockDriverState *bdrv_backup_top_append(BlockDriverSta= te *source, =20 fail: if (appended) { - state->active =3D false; bdrv_backup_top_drop(top); } else { bdrv_unref(top); @@ -283,16 +245,9 @@ void bdrv_backup_top_drop(BlockDriverState *bs) { BDRVBackupTopState *s =3D bs->opaque; =20 - bdrv_drained_begin(bs); + bdrv_drop_filter(bs, &error_abort); =20 block_copy_state_free(s->bcs); =20 - s->active =3D false; - bdrv_child_refresh_perms(bs, bs->backing, &error_abort); - bdrv_replace_node(bs, bs->backing->bs, &error_abort); - bdrv_set_backing_hd(bs, NULL, &error_abort); - - bdrv_drained_end(bs); - bdrv_unref(bs); } diff --git a/tests/qemu-iotests/283.out b/tests/qemu-iotests/283.out index 73eb75102f..97e62a4c94 100644 --- a/tests/qemu-iotests/283.out +++ b/tests/qemu-iotests/283.out @@ -5,7 +5,7 @@ {"execute": "blockdev-add", "arguments": {"driver": "blkdebug", "image": "= base", "node-name": "other", "take-child-perms": ["write"]}} {"return": {}} {"execute": "blockdev-backup", "arguments": {"device": "source", "sync": "= full", "target": "target"}} -{"error": {"class": "GenericError", "desc": "Cannot set permissions for ba= ckup-top filter: Conflicts with use by source as 'image', which does not al= low 'write' on base"}} +{"error": {"class": "GenericError", "desc": "Cannot append backup-top filt= er: Conflicts with use by source as 'image', which does not allow 'write' o= n base"}} =20 =3D=3D=3D backup-top should be gone after job-finalize =3D=3D=3D =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624484; cv=pass; d=zohomail.com; s=zohoarc; b=KMMtrQURECar9zXW3oLWGJv72YgCbKzTogLSPQe7VCQIsKN2hwU/mplem6Ko+xPpnhZl0moQW3sde2bTyxmf7lEqTqdahmyJvj/I4C2pqKP1voM44AvmhhJsAr149k+WJiPCjaiDcN53GFXRCRuplMuwROAJZJE1RcwYdMXN5xY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624484; 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=ogdSk0lYpv3bF5RGWn31dSK+rb6SQEJEfobw+evXVmc=; b=jKnwvT+9cn2hjeRMhHAv6R4gNnElG8Qw14tUVOnwmjOP7pSONUf0v1bQ5o923MGZ1XI15NP0mv/PjJjuSM1jagovZ9E/95FkutjldIDThTqU8KdAWCmQLsGgc2a9D9PL2Vk0G6BZlPemfBop7QV+LySI8wbnbNrljmjvtbPnldo= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161962448481048.48130472028049; Wed, 28 Apr 2021 08:41:24 -0700 (PDT) Received: from localhost ([::1]:34224 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmJX-0008F9-0a for importer@patchew.org; Wed, 28 Apr 2021 11:41:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyX-0006Ba-UZ; Wed, 28 Apr 2021 11:19:42 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lblyV-0001uH-5T; Wed, 28 Apr 2021 11:19:41 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:51 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BRG82TLqhmJf5LCRgCeQlkRamO9h7b4Htx+6k71AXu15WG1UehYEBy3DRd1M5VHCNBwCRqMA8RCsDgTT1xd3KVoEswNhKRMjfpqX2vYTLMsbWBBuKRqNowJHp5lC7KNeZEQ0xlg+0XqoT/jRjxnJ88OV/N1siLZVpmRHVvkljGSSx39ESbSczcPUSbgkLWi1nC/Mo3VerNZKgNzMtcQdjOdTqElWneY/Wdn70YpBzh8c1GvNuXPhJOKbRPJPpznlIF7U9a9B4U3ocnP2t5bP0rUt9ZMEN2C2mx/P0WvSU53Y/VrY+nFvs3SmptPXwIz+2WCY3JVRmXFJm+svg+4Qyg== 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=ogdSk0lYpv3bF5RGWn31dSK+rb6SQEJEfobw+evXVmc=; b=Rfv/pcMdhVxtcV0Ddm2lBFDGyGY0smS19lLxFqc4R07QdicAyAhU8lmt00/SU/HoXvCRZg97OdyOdM4QUoqvYi1fJdMv6mDVk51ycRzf59a2RMy6wtwAqnGZeqOu23jhqgxrWoawHOSwm1grovNQXd/KkBBxji+KK2oNTkaTVMjY2CqgrONXrqfmESXZLhcTwR18W5h28Vhmqvoh/hiz4axG3SjgtstJrHqXcLyyj27nvISOI85bkc6RW7QUR6FKZXPpcUOW5NmIYTvYHIirLbP119Ix0bGS7gWlgld2TAsCAgEJXCY7w7KUb1uZx3okgsOu4g1xIPfhcLwmLbXA+A== 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=ogdSk0lYpv3bF5RGWn31dSK+rb6SQEJEfobw+evXVmc=; b=wO0slPEGzH+6A6cvIjlD4OwwwhMNE9FN03X4sIb3YZpq8k9rssZ+smN7jSGvDXEOnEvjeuVkI5uRi2ETvq3ovLZ1ef8Xb+VGCG+rYm8E5K8QIazi1vk3W/Oh/feX4ssbnBBL6zBmwpucVC4YJjhJfmwLfuPYG05FdOQMnzr4TyY= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 25/36] block: drop ignore_children for permission update functions Date: Wed, 28 Apr 2021 18:17:53 +0300 Message-Id: <20210428151804.439460-26-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: c38ccf64-3471-41bf-d897-08d90a58ed81 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:529; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iSAcWpmvk27E4o1eSelkeUrsUhdS2hT4guecayYWMUmOtx/iUQ2OItPexg+Xx1UvwTgqi7zxo6RIQcLXPNicJjVm8SNNxXyZ1h8JQoAA38kbhqqeaH0fNkK5doN6MCsjQJOumrGXVS9X2F6xTvEaPQJDiS8T+H7kNNkgadmmZSQFTZ6G2+OjMO6LF7ZywoMA0BgtIGpPMvDn3B02+qGT0sCiqu1AB//CbODv+m/Wse0RMv2YSW9WtujXvEr7KWyjA4hO0dReroFp/a7VtZCSP8F17OcV8vi3VEo2jdI/ibx9UhsFv9U9jL+URU5595wb8eOCn8hlCgA+VRZI2EvuwP2A2XTzVOXzKq3dgDa8DrH+DPgSEuHwiaPEM6+ffhsntmxsDY3h2q2rtL2jEKaiQS6fwg+goP8S04suWQ8Bjq3+SxqllOuhUrBQ9SS/OQ53rAyltL+qCuO6qn3eZDwjNB5W7Zeyq0ibwgzEsOXpl4Q6YPJ9ZCLhSSwiXfcJ3XcKb+e/HwfYV6FP/nYf4u2xIcKIZHMHfc4t74SQp0LMlsjzSZosmJLdFMOa/rbvqgwIw1zuxMnjPCKMmG6BkCzTLh8hbaualGK3X5f2r/2IE1moqGfbIuCDYLTyaxQYAuAWNKyAT85y6WRpSBbRWLmoJAD/Clr50g4eJ33rhf81M51HEBGFFSg0EEyW/4+3iYIX 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(6666004)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?EOY/wRiRhhv9JEk10aZZMNFunSqTaCwcKqVBH2VBjzq4wptR89aZDRn9g2mX?= =?us-ascii?Q?HUJs2iN7juxaDBWJftISZ2i6bwu3aIARPgaRqB0cCzV5fWVaGVJ9cU0Xg2Ro?= =?us-ascii?Q?6IXCwv8yVl0jiF88z8ow6AlLjQ05wgX0eoRi0LGRLWmNw32qQ9UtfSc0UKgE?= =?us-ascii?Q?STZzXLZbUM7ao+aqF5BBg+GUmogqqiF0pip1rhgCILWE9GuN4poOv4hjvBpi?= =?us-ascii?Q?LpwqJfyNyYtVQFS5f1PsToKg32YfEU8VOPeukf/Q9LCAXtOSI4mPK9Or+RRH?= =?us-ascii?Q?vmzKq7ejc/ktEFM55YYzFhS/WFaJBFYkaXHHwqC2LsSNlxvPDMKJZEVH4XQP?= =?us-ascii?Q?D+Unleahzn+K8WJtTTgtaV6sbX+snOAZ7M18eHMy9Y5zaVi2KTZjBzQmIx/i?= =?us-ascii?Q?6tM0Pl3XgA5uOT1S0e3TvcK2jzk9mTsVGN70a+bXAxT0FR8P42u2zqxYFLNJ?= =?us-ascii?Q?R3D5oaelPvc7TMb/YbMdxEGoDm5eDql4Sj2+i0B7DhAL5e/ng5sQdSU3Ir/k?= =?us-ascii?Q?P90S/XmLVKFbUMFYD13xn/kZqNLq27wVrLaS/ZY+TRts4N3XNIq4ztwbr/l9?= =?us-ascii?Q?zDZPqW9z2FveAEF1XjIwexm3edAIA8bam6SGrWCodo8xebquC99URBb9oOz/?= =?us-ascii?Q?CBl6+9uwgTvWBiSd1ixcw1lppfh0yh69p7LmpQSoiF3Bj3VocMDTLXHePYLF?= =?us-ascii?Q?Iii2DcWcdwMppJ5QcFMyCWrdfVXbgYwEfRcUaFPonksYv/1hluur9V2CN/w6?= =?us-ascii?Q?GySyTV5C+7KGWu6oH4/xeR+5vhXOfXoRtUxOrTVWO8IwPqm2c6MK3dISvpKc?= =?us-ascii?Q?uZoP69Sp8NW8wKFBufb4c6//wRCdcgHJJDl5P41cfsWUh4NjY2tEQ4gdveke?= =?us-ascii?Q?SZprKDJJysvgKXOuWT3X3a6xr7j+H22WwDFhhxUFPUU+oaK3sU5/DHAX9qu0?= =?us-ascii?Q?YkYQynK7DH8AmsNxQmPuIJegg6EdO2iqcXmDd+TnDqB8P0K1phJfzT3OI630?= =?us-ascii?Q?jUhaDF7aWzBBQv6rl9mjNqWVxKxe9OLduuA/KejOSz+vqnXbOIxH4PGB0E3V?= =?us-ascii?Q?lSZPqHEWRoNa4X02T3DzqB/o2bScmYwlgzE9a/FxoH3w3Gk7f1+kiwto1xAs?= =?us-ascii?Q?iKSSSgYay91cVhaRTwEodcPIbNUtDbwBQapWIHwoEx7HQP4gu5UsykHcFlA8?= =?us-ascii?Q?K5SeLEN9z3OrcVH2vOLhlPjS1Le4mEvE3joCPu426KPP1XXaQtw85BB3NoRc?= =?us-ascii?Q?lgZwk/m2vHHrhEc+3o2isz0YzuLr/fF388UFEK0cv+7L8w3f9c7P7DwAY+oM?= =?us-ascii?Q?luyUnDtesQwm4uWShB73AiIA?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c38ccf64-3471-41bf-d897-08d90a58ed81 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:50.8994 (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: F7XoC5qdCrlsCFPBGRuOgAJL/91K9kJoFYk1i3ySaVLvApWfQ9Ttp8N0XTVQ9EQCX6Mbx0jLeLXkt9jloXiF+NCvk9WNR/43Pav5GYHZtCo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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) Content-Type: text/plain; charset="utf-8" This argument is always NULL. Drop it. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 38 +++++++++++--------------------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/block.c b/block.c index 68dfd822dd..46af5852ab 100644 --- a/block.c +++ b/block.c @@ -1988,7 +1988,6 @@ static int bdrv_fill_options(QDict **options, const c= har *filename, static int bdrv_check_update_perm(BlockDriverState *bs, BlockReopenQueue *= q, uint64_t new_used_perm, uint64_t new_shared_perm, - GSList *ignore_children, Error **errp); =20 typedef struct BlockReopenQueueEntry { @@ -2065,9 +2064,7 @@ static bool bdrv_a_allow_b(BdrvChild *a, BdrvChild *b= , Error **errp) return false; } =20 -static bool bdrv_parent_perms_conflict(BlockDriverState *bs, - GSList *ignore_children, - Error **errp) +static bool bdrv_parent_perms_conflict(BlockDriverState *bs, Error **errp) { BdrvChild *a, *b; =20 @@ -2077,12 +2074,8 @@ static bool bdrv_parent_perms_conflict(BlockDriverSt= ate *bs, * directions. */ QLIST_FOREACH(a, &bs->parents, next_parent) { - if (g_slist_find(ignore_children, a)) { - continue; - } - QLIST_FOREACH(b, &bs->parents, next_parent) { - if (a =3D=3D b || g_slist_find(ignore_children, b)) { + if (a =3D=3D b) { continue; } =20 @@ -2310,7 +2303,6 @@ static void bdrv_replace_child_safe(BdrvChild *child,= BlockDriverState *new_bs, static int bdrv_node_check_perm(BlockDriverState *bs, BlockReopenQueue *q, uint64_t cumulative_perms, uint64_t cumulative_shared_perms, - GSList *ignore_children, Transaction *tran, Error **errp) { BlockDriver *drv =3D bs->drv; @@ -2393,7 +2385,6 @@ static int bdrv_check_perm_common(GSList *list, Block= ReopenQueue *q, bool use_cumulative_perms, uint64_t cumulative_perms, uint64_t cumulative_shared_perms, - GSList *ignore_children, Transaction *tran, Error **errp) { int ret; @@ -2404,7 +2395,7 @@ static int bdrv_check_perm_common(GSList *list, Block= ReopenQueue *q, =20 ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, cumulative_shared_perms, - ignore_children, tran, errp); + tran, errp); if (ret < 0) { return ret; } @@ -2415,7 +2406,7 @@ static int bdrv_check_perm_common(GSList *list, Block= ReopenQueue *q, for ( ; list; list =3D list->next) { bs =3D list->data; =20 - if (bdrv_parent_perms_conflict(bs, ignore_children, errp)) { + if (bdrv_parent_perms_conflict(bs, errp)) { return -EINVAL; } =20 @@ -2424,7 +2415,7 @@ static int bdrv_check_perm_common(GSList *list, Block= ReopenQueue *q, =20 ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, cumulative_shared_perms, - ignore_children, tran, errp); + tran, errp); if (ret < 0) { return ret; } @@ -2435,19 +2426,17 @@ static int bdrv_check_perm_common(GSList *list, Blo= ckReopenQueue *q, =20 static int bdrv_check_perm(BlockDriverState *bs, BlockReopenQueue *q, uint64_t cumulative_perms, - uint64_t cumulative_shared_perms, - GSList *ignore_children, Error **errp) + uint64_t cumulative_shared_perms, Error **errp) { g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); return bdrv_check_perm_common(list, q, true, cumulative_perms, - cumulative_shared_perms, ignore_children, - NULL, errp); + cumulative_shared_perms, NULL, errp); } =20 static int bdrv_list_refresh_perms(GSList *list, BlockReopenQueue *q, Transaction *tran, Error **errp) { - return bdrv_check_perm_common(list, q, false, 0, 0, NULL, tran, errp); + return bdrv_check_perm_common(list, q, false, 0, 0, tran, errp); } =20 /* @@ -2576,7 +2565,6 @@ char *bdrv_perm_names(uint64_t perm) static int bdrv_check_update_perm(BlockDriverState *bs, BlockReopenQueue *= q, uint64_t new_used_perm, uint64_t new_shared_perm, - GSList *ignore_children, Error **errp) { BdrvChild *c; @@ -2588,10 +2576,6 @@ static int bdrv_check_update_perm(BlockDriverState *= bs, BlockReopenQueue *q, assert(new_shared_perm & BLK_PERM_WRITE_UNCHANGED); =20 QLIST_FOREACH(c, &bs->parents, next_parent) { - if (g_slist_find(ignore_children, c)) { - continue; - } - if ((new_used_perm & c->shared_perm) !=3D new_used_perm) { char *user =3D bdrv_child_user_desc(c); char *perm_names =3D bdrv_perm_names(new_used_perm & ~c->share= d_perm); @@ -2621,7 +2605,7 @@ static int bdrv_check_update_perm(BlockDriverState *b= s, BlockReopenQueue *q, } =20 return bdrv_check_perm(bs, q, cumulative_perms, cumulative_shared_perm= s, - ignore_children, errp); + errp); } =20 static int bdrv_refresh_perms(BlockDriverState *bs, Error **errp) @@ -4244,7 +4228,7 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, = Error **errp) QTAILQ_FOREACH(bs_entry, bs_queue, entry) { BDRVReopenState *state =3D &bs_entry->state; ret =3D bdrv_check_perm(state->bs, bs_queue, state->perm, - state->shared_perm, NULL, errp); + state->shared_perm, errp); if (ret < 0) { goto cleanup_perm; } @@ -4256,7 +4240,7 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, = Error **errp) bs_queue, state->perm, state->shared_perm, &nperm, &nshared); ret =3D bdrv_check_update_perm(state->new_backing_bs, NULL, - nperm, nshared, NULL, errp); + nperm, nshared, errp); if (ret < 0) { goto cleanup_perm; } --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625042; cv=pass; d=zohomail.com; s=zohoarc; b=hWe2rbXh5yTc3tDdg8RXrWpEYZ7OWz2pC/U5MrWG4czpicOV6MJwMoBIZLqaLrY+A7LJkvJvac0o/Ntw332lzdw+S/DDxoTanrDzp5bml7plLFuuIwHMKofEThhTOdIoccfheWYnzWJJfd6WYvOIYT8CQWgJ+YwdE7MP+ztm6Yk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625042; 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=4XUxGTmytsqEWZwxdNIL21mlno5zdhuVjIywBNkj6pA=; b=j+djkcw3QagTliFp5f8uakYWrgbXbSPItZHipTBMmuwfwwQ62X4k77gjnzp1KFNMR7T+FVIMi0BIOwjrWYEyWU+K2Gsjj5qHpJ+7R0vZ6XjboV4oNChsLPJ5D7st0JPKXN1UY5C4hCRkeKKZ3qlGx5V2XF6lTT9TADPsOWYNCo4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625042815526.8684406913293; Wed, 28 Apr 2021 08:50:42 -0700 (PDT) Received: from localhost ([::1]:53728 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmSX-0008B4-Hz for importer@patchew.org; Wed, 28 Apr 2021 11:50:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyZ-0006G3-Q3; Wed, 28 Apr 2021 11:19:43 -0400 Received: from mail-eopbgr00117.outbound.protection.outlook.com ([40.107.0.117]:54347 helo=EUR02-AM5-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 1lblyW-00021X-Nw; Wed, 28 Apr 2021 11:19:43 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:52 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D9Hld1kpTwy0w8hn3xUnrtLviEYGIME/fS6qxYLbekJD1JMoX9G6TWQDTCCeD9YGTX4f9sXby3v15PmKfC+RtNp0xx9ngXkoVDYwgDd8zlC8WYQoNWN1l/KZ7vEAKCEuAdLZ7EWwHRo9jnl92Zvq8QSL6N7/2OFfZtdjFPsKPqVUigfTnoHmxXUDs8C4QovEB6msVFN7rr6fADs1Fw2JKYnjNoN918Zyob2S63xhHN2XaBLTREbKBTea7S+ipSOt91Le5J8/KuRHpFGpW6kYhPoOd/zsIVfeRONtrN1em894/+h2RgUKnjsdtKizOfVWQKeaVKpMldyaUd5pMD7kKQ== 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=4XUxGTmytsqEWZwxdNIL21mlno5zdhuVjIywBNkj6pA=; b=bMoPE0fX1V7mZd2JqASkFdxWk3VcajzECE0RiqkxkchPk8EdrLkW04t2xSdF2+W6iQ4NOa2jIe5FAr6lrF41L4X/8SsSlS3IpaP8qyimg2r+uBF9mW4VHysLLaUludZ1u86U8A9zoXFipExlD2umW7O6ESWYu4mw2waFpNH/PTC0lHoFUgi6Av5VAQwSyRk/SalY9UDfwx0hR/848A2i/BQpAxeO3ZEbkWumootf0X38ahPhD0Pzq2fK+CxRn9RpG5LI4Im8Ux0ETRMJ+UEF0ojXu5r5PuVeMUJcyL45JZG+slSwVvDe1RZxrEo5Sy1J1UTpamv+iEjrtMGk3VlX8A== 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=4XUxGTmytsqEWZwxdNIL21mlno5zdhuVjIywBNkj6pA=; b=mBg5mvG/wo6EtxREeiWBSwKANFdb8+rvt3kNUgu98DAu2vrK9oBu+2McB2enDS105v21uvs1bSqQqV+6FFIva3pcYnWkBy3BmYWs4CIVC3RWETL2rT7JaDz60AMS2JmG5559jI9bpzwe710S2dBKJljnd6ctdspsGCf7TDC3NYo= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 26/36] block: make bdrv_unset_inherits_from to be a transaction action Date: Wed, 28 Apr 2021 18:17:54 +0300 Message-Id: <20210428151804.439460-27-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 3baa9e22-4337-4350-08fa-08d90a58ee29 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:49; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 24LJzJ9aiO4bx0rQcVfVwAh+AWnxkk9/VhlZilZWWaUbkPoPBhCCvNkSWtBppjv74M1jX9awDlEahHR1uAJ5hFPHf9W+tTidcNNtVUGJoe9hvZ8tRdhMRmYsbnhVyfk9aLhtfCzV4ou+hXjQpW+7Vl4iRjgKvXGZcGwlyAns4fq8vLO6fZUmxo3iJJqF92Ji/CIKjSF4AiorT+ZHNpe71WSSCzc8WnuJFYQV39rppdFDFYcfT2x3ymJ1XBH12Zoc8dl+U/fKeL8xpmso1zjOgB0fo/s5B0zMKWl+hrxDN8y0XOSQog5tYeNpBpas7SB8jiKWEyBUmgMNhmK2tDrNjDItry0BJFQ+4zDtn5vRFHxrQNxR+zbXQpWNaUeetH5AEpPbqctaDOLRTZc2UjJ1B6g40I9A3dbpZwmpC4qGamlXov/fmLwYK78rINbk4XziU+1n9cDfmKLrOUOmGgoee+SK304irOAk5Pzr8qo1/RdIcgou1Z0OwOR4YCdr4to+0AR2tPAdIGsvFwKbsKRqRQJa9Q4rhl0dWBS3kQr20dQWAMi7F1gl92CY7Z5EiC65ue/JGascwbY5Q580M1vFkDEsYqP7AYs3Q+dPbY6Br3Bcp1qySks7OSYpH/VtOG7jhw42Ouhw4k3cU+SIsPzTTUyjFWlb78PVa2z8h6Acjf74WTuAi0AyhTEDYDyVdZcr 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?q/kToWfJRFteqVUB1F41wR6by3RiqjrU7lsRGYv/3kgUqt8/p2MkznEykokk?= =?us-ascii?Q?B7ibmFeSLuWQ4HZtkheYdROrm0PIgrYdTDYJMgPo9dnp7ehNbffHD3dGgNED?= =?us-ascii?Q?m9PTm9VZ4H2RN7zCcVZ++rqRwLtELGAvRUuYlqMm4JrUlcR0OXo78xfBNM1e?= =?us-ascii?Q?+oebP1+oGvhyTfDf3GuBDeR8jeVemtbhyXhJaVfrZ4Kj/eUZM3iaxrf9NkTA?= =?us-ascii?Q?n0+/Ds1RHfizflWbewTBwINkdoyr+c9GjrUFD14WZKgdIWyir5ffh0hMRmYb?= =?us-ascii?Q?1V2qK/aCvICUMVAtry5YpMNZtHcslDBaGlVa+2RICNlE6jyV2Ial1qU2IztE?= =?us-ascii?Q?UwJvJoruTFSclqo/YfnCM4dsjzHvATCxzwQJdKKAgfg+RK7eXR138ALRxe/r?= =?us-ascii?Q?91v97Z8HnkdCu1zdz21lrxuWpeaVRuCS+w9oOo9Mrhu68M55G0sUIqvle9F2?= =?us-ascii?Q?fBrJ80PueQ8cgvv+yB1AoAxYfZfykbjIXcNSIBqLI68bfpKz9kiL4hmXD3Ab?= =?us-ascii?Q?T4hN6yu5O3XBdE3584nMD1hGQ5pp0GxoNaBT1+jyglsxUV52WdhIcF73M4b8?= =?us-ascii?Q?4TODr625B/KSFRX/gEnPubySEuJoNa797H/l5zhDkUHd9wuBktsla4jpEuqN?= =?us-ascii?Q?q6+jCqPiVBu9tpLX/42DqDyA/MZXVvZlQlVX2tZXMuW3F8oiBvSRqqWym7WT?= =?us-ascii?Q?Tc7nAjv3oY0vPyVqq7MSXDt6rc7mpfdinfz/GageP0TgI1jiF5Ls/XngLVzE?= =?us-ascii?Q?imj6uE1/wWEDRq8S83f07Zfq0SwnIdGXsYPjKtEHWBSog0vv+ktse0YmyTTI?= =?us-ascii?Q?mpDdIS3hBlpDWd8tOtlRcs2uPW2qnnfz5DF/bRATjatVrFKDnRrhxv+gNPoN?= =?us-ascii?Q?Rzou8KVco8xexUcASa4UprmYu9xRmQaIozONZhu0ooFQVxP+67TDrwxviJHn?= =?us-ascii?Q?g+QNzRgKpZjRPc02P9ALm9NTdlNoFPzy5V0WHOMAJE2GP5U4fmeDzSv66WBU?= =?us-ascii?Q?FoZ+yGB81knjI+WuIBqQgVLWK6jk0YgVJdw/1viynZyt2h25CNrd1vVq90V6?= =?us-ascii?Q?UmIKLO8WMPNz3XyAS5xiuDoRHYpghXclkUpqkyMezu8Zl7yUKmTCAt4vPVTl?= =?us-ascii?Q?pHf3mqv0R9Z4jPKIgGaj0GHAuWBv+Lki+5SlZHfLCiY3f1yzyyoOl9EOrcR2?= =?us-ascii?Q?UgsUFrGcSm1WCHXcXY3+6asMPy4amJv31tiM0toaFW7H2DHxdIe2gU6NGGV1?= =?us-ascii?Q?IFnUiW7/Q5bV/zD17PXvEvPkL9dIJLOColjrUNdPd8XwxVLaVtgChMDgH2N2?= =?us-ascii?Q?YzCpBMb2gMOzlBqA/wV4oWpy?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3baa9e22-4337-4350-08fa-08d90a58ee29 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:52.0011 (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: gEo9bZURB2puFvCcc0zFHdhyRCJEyt58HEoXGstBHHzBDNNLHK3vRpWUIszcrRd4dbSdRahK+xn/tSx1C0QtXUtoncp4mwfyY+UYPjON4s8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.117; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" To be used in the further commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/block.c b/block.c index 46af5852ab..1dc14908ac 100644 --- a/block.c +++ b/block.c @@ -3205,11 +3205,49 @@ void bdrv_root_unref_child(BdrvChild *child) bdrv_unref(child_bs); } =20 +typedef struct BdrvSetInheritsFrom { + BlockDriverState *bs; + BlockDriverState *old_inherits_from; +} BdrvSetInheritsFrom; + +static void bdrv_set_inherits_from_abort(void *opaque) +{ + BdrvSetInheritsFrom *s =3D opaque; + + s->bs->inherits_from =3D s->old_inherits_from; +} + +static TransactionActionDrv bdrv_set_inherits_from_drv =3D { + .abort =3D bdrv_set_inherits_from_abort, + .clean =3D g_free, +}; + +/* @tran is allowed to be NULL. In this case no rollback is possible */ +static void bdrv_set_inherits_from(BlockDriverState *bs, + BlockDriverState *new_inherits_from, + Transaction *tran) +{ + if (tran) { + BdrvSetInheritsFrom *s =3D g_new(BdrvSetInheritsFrom, 1); + + *s =3D (BdrvSetInheritsFrom) { + .bs =3D bs, + .old_inherits_from =3D bs->inherits_from, + }; + + tran_add(tran, &bdrv_set_inherits_from_drv, s); + } + + bs->inherits_from =3D new_inherits_from; +} + /** * Clear all inherits_from pointers from children and grandchildren of * @root that point to @root, where necessary. + * @tran is allowed to be NULL. In this case no rollback is possible */ -static void bdrv_unset_inherits_from(BlockDriverState *root, BdrvChild *ch= ild) +static void bdrv_unset_inherits_from(BlockDriverState *root, BdrvChild *ch= ild, + Transaction *tran) { BdrvChild *c; =20 @@ -3224,12 +3262,12 @@ static void bdrv_unset_inherits_from(BlockDriverSta= te *root, BdrvChild *child) } } if (c =3D=3D NULL) { - child->bs->inherits_from =3D NULL; + bdrv_set_inherits_from(child->bs, NULL, tran); } } =20 QLIST_FOREACH(c, &child->bs->children, next) { - bdrv_unset_inherits_from(root, c); + bdrv_unset_inherits_from(root, c, tran); } } =20 @@ -3240,7 +3278,7 @@ void bdrv_unref_child(BlockDriverState *parent, BdrvC= hild *child) return; } =20 - bdrv_unset_inherits_from(parent, child); + bdrv_unset_inherits_from(parent, child, NULL); bdrv_root_unref_child(child); } =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625920; cv=pass; d=zohomail.com; s=zohoarc; b=WgKfQO4QJs+n6cBWxmSebXvI8IQW0Fw4Ya5YZuehK2sVvUfWPFXG4UhCiNN2wSAk0fegriYs4woIOzlCUtOFrY5c2nI7/YOsmsXtzJDIb6C4cSdTiVbMTuPltnR+XEQFthlZI0zhGX/Vy6jgv/XTQk8FtjrGWsXdSDnMWv7fb1w= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625920; 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=GroWK5YBZyY7bhC4PxM3ARkpkK86cE3xOgFYTCXiGNQ=; b=YziDH3r5AXu9NNxUGLIS2s82Ykunp3VloVJpZBxzWnIgKJ2QKeb1JBOs3m/zDDzRKjkobY/Nw4ekFPh5F7wsNUtIaXsb1yI6BsK0sdsCSEns4hZ+8OKa4mK6dvETID5RSSFBkOG6YxWpH1cgfdzX7nkopH644Ml3tFVBp+o4eA0= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625920649462.64926447955213; Wed, 28 Apr 2021 09:05:20 -0700 (PDT) Received: from localhost ([::1]:55996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmgg-0004Ki-Kq for importer@patchew.org; Wed, 28 Apr 2021 12:05:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58976) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyZ-0006FG-Gm; Wed, 28 Apr 2021 11:19:43 -0400 Received: from mail-eopbgr00103.outbound.protection.outlook.com ([40.107.0.103]:52805 helo=EUR02-AM5-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 1lblyX-0001yK-1r; Wed, 28 Apr 2021 11:19:43 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:53 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:53 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NJP2YG2DdRzBy2qiDl6rDmyRTuQBBZ0xfO91SFcQemwB682EIwBEWP9faMUEEzzh89ClPfLjGcOzMNMVTG7u1Ami4P2VB7VJeN8sSzQ7SVrd2ryBO8ePmHD2lefAHLZtk9LBJtqePyShuqCvk5H39kCErv4Cd6pttZEFH+wqUJApkkhThZCPqSy3nFIJechPhAyUD9nvhtdYZMfTbNsUM1OtlzLqSsqEypTeHnPs2wiJD6HtJLAgJvCbzit0DR/h3ScWdAIEcpJnngh+7+jxWWnRmi605k6TLExlg0IXUWs+DUMt6GUZeXZ2NF4QmKEYv7XQ/DlAZs47DK/4Xyfgag== 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=GroWK5YBZyY7bhC4PxM3ARkpkK86cE3xOgFYTCXiGNQ=; b=CQ2A1y/iAA4DfmzEDAU/AVcrqP3YD7gQQRlPHjPWQ0IqDjxtKYRBStLRYnAqPp5p4N/nzHCQmtqH3twTRr5LLvwFKM+CydaLTiVNTE/D4OfU/eUduktPCjvQclIyqBztHNG63UP769dligvi+cGTDJgKb5MR9nTzQHjFdMbw11+y0jYonQAJeaGZclRQrL9d1XAP0aq2qIFyKZnJSuoUbI2OyAwu0VvMz1Arg9AdVnvZVanZek+jZ4kPT1DYfumD/+h0lrE/LHO2maXH9AD9GPWxvB3PTTNwNFRI0E8yMcnSeNLSYrJFDfRdKC7O+IePuwhcxhW/ZuKqkfqOcjx/tg== 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=GroWK5YBZyY7bhC4PxM3ARkpkK86cE3xOgFYTCXiGNQ=; b=tlMkmDna9YB0PnhHVdwIe9vi9Ffjh/IFjHc5rKDz8rmq+THmWlO3pI6uMassBEZ98MM+y+6Xukk61ciXyef5wxqftWW9ubSDAvbWVCjFosm5FrlrkixOna8QYLaVUszGTHb6BYB93S3SBCcUG/QuSaBYjN7d/Q/SaIkGJOQEeMI= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 27/36] block: make bdrv_refresh_limits() to be a transaction action Date: Wed, 28 Apr 2021 18:17:55 +0300 Message-Id: <20210428151804.439460-28-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 84912573-b742-4f1e-1c59-08d90a58eed3 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KsPQD2aEMlg/lyvaCkdGjsgGiyA9NWp8dwF/gxS0H3PFqXrc/fdH81mJoi27OVIHUUWY5PxaAbq8f9VKpPpaUu/saS0QVyi2CLgu3u+H5W9UplfOS/Kh+clYtA2jmQztZz1rda66MSD4emWbbkKejUUoOkc+We2DLNeYpW87UWp3KaR8ImdvBvrQHFcOaSp9zCqrjDVH/enbat+PXUgbO5jwYcIaGxgQeNFeUDsAp4sQ+XbR431NEs15FIgY8WClDAiIVX/RjeWIIy/NuxY6XCNT4TVZG9vHCSa5+GOar6D1V9fKo/5u1y0+RhYqGepUPmkNfpB2i9QaTw/NM/74yQuKGIIpsGY610PMlyCM02K/Y/HIH9LhNi9QqYUTPW4D68TFNy4B9iZsnOp4+39sJIqdNIizSCbK0q6cN3sTxEm3ShDRwNK5QIHlfAkRLyrch034SmnMhhWF1Jsaqx5Au9feMRZIi2Ilkbg3D0mhN7iOGvCcTNXQsZflx7M3h4CS4VEORkjPLWwgNl5IgsPvXSEP/ja+k/9SOzSD5UzJ63tnMAowQqyn2OtnMzXBNdZ2EfOJmKjrsEdze/uIdgdBXG7duDlzODeRJAw0hOZdOgfm9UIO24gy72qn2BwR7JpuSUkVmign2/azl9gYctiRTE2hzCI+2fKnL8jJ33B8Il+KxXmHjgODtEYNnPH3mjft 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?7QgC6MoQKCBX/OOzc9aOHGPhNXksYFfi5iAeKvvP5PizAJBs4cCakuIm02Fg?= =?us-ascii?Q?8/SluhrCHddipnc/AoMiFZ3u183x/cSw2fcZq1Hu6U9XBYUrQtIO81MwC0K1?= =?us-ascii?Q?Cyp47OOxkLPBzfJsLT718QB/ucfxgqsmZpeli2EIUQZ8hDkAasNP+wsfvRXz?= =?us-ascii?Q?kVAyzUneG+Jd0EEbwpcGH1c6/ovT7hlvMx92CxcQuyHuFT+Q34w2uKA2c9GF?= =?us-ascii?Q?s+ZrlxygSu7Fr9cRBSxeDscvSd8sA0IAJqzng//tl8j2C499yXT7FHtVeafw?= =?us-ascii?Q?0k+gNYThkzhb159/IzBgItCyvO8rgUu5Ha+9YJuLAowmAQ5C0ztMiHg74A6A?= =?us-ascii?Q?g+kZsLcmi249O27xylgX9CjQe4UWKC3ZWeEft+BVOO4kz4IHZYVHshcqXqgL?= =?us-ascii?Q?+KFwFxCtInweeRWyPRqqhDR7epJ4ez+lOf7/wSnTGUgBBgeufMgNBtKKb8Hu?= =?us-ascii?Q?suI8i2MNi9XSDZL0qm6/0EIN+KEJqyYRZedznm0h+1NIUXQrZUUAbFAz33IA?= =?us-ascii?Q?Pbep+aOQVVjZCfKR1WDAcmOPmFtg/iMfJFVeheJLkEOOUDPNlQrxq8zvK3al?= =?us-ascii?Q?LPB4y7C2CgdlpX9LxFWYkz/1Z+M+yVJ2AGpIg3jpx1cXE8tj5+iBWTe7CmGY?= =?us-ascii?Q?qcvt6olALssePnmrhmaL5VGjSFxLpCcNKcao0IKMyTLhSQk+Vd/17XrjlN04?= =?us-ascii?Q?M69igTO7c2UK196weisxSjBa8HktI3puN5Tjs/k3SwOtq6r1SOPaGHlRayUT?= =?us-ascii?Q?frI0Ow1YdBA5MsaTFRf8wOIvIFhTb0okHy2O6SyxhRsHiPIgxxqkjgppvSWL?= =?us-ascii?Q?qRbBnLAkmif3bjHHF/h2vQfJmhDflod4HZG0swsPprcie8syAPMkZJ+rzTON?= =?us-ascii?Q?Zkm3VcSKAQj0v9dTl77FzBclvA/G5q0nJVtIzE+x7734EGW8YREj7teWBC8j?= =?us-ascii?Q?7/hswkvq2rfs8Elaz3ACP+JPU/fRYrriQJSsQyEZFpk1fQo8drVv9rHh2r+t?= =?us-ascii?Q?X2ImL+fb5mCKlp3WLe6vqum7NMZ6sfIPn8v4fP0xEh0x35s69dnOoboBct5T?= =?us-ascii?Q?zbVfMIvyaCehyzbZy5g9KcMejh/jIFIUAjC1qSw/l/oVGKK+5kJZQZStRPLj?= =?us-ascii?Q?TwrKcs/BswUigyc8zSOO9Ec81TUEC0fFhRM86EH0ULaqcvUlrXiKFLWSyJPW?= =?us-ascii?Q?jm5Vpcz81pwInhRB5QbvWj55i/kca9RgL8xlMAWipvulKpI+xgBdkjwsH94e?= =?us-ascii?Q?jFFupy3xFq9yRHGneYo8gn8qiNl79D8fpiu8t45sKQ/x1isMHn90SaeUT8xk?= =?us-ascii?Q?fKKZnaJRgV8F3BMyQVtrSxdl?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84912573-b742-4f1e-1c59-08d90a58eed3 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:53.1779 (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: TjhJahaSn+Q/5UHySfGGhcZb3+OHFw04OZWnPe3xkWfZucA6g85CyPZLosj+ncRAdlGD1D0K6VycjL4bHlsQOFObke28vPQDwTNW0AWCgRM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" To be used in further commit. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- include/block/block.h | 3 ++- block.c | 9 ++++----- block/io.c | 31 +++++++++++++++++++++++++++++-- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index 85481a05c6..ad38259c91 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -9,6 +9,7 @@ #include "block/dirty-bitmap.h" #include "block/blockjob.h" #include "qemu/hbitmap.h" +#include "qemu/transactions.h" =20 /* * generated_co_wrapper @@ -421,7 +422,7 @@ int64_t bdrv_get_allocated_file_size(BlockDriverState *= bs); BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts, BlockDriverState *in_bs, Error **errp); void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr); -void bdrv_refresh_limits(BlockDriverState *bs, Error **errp); +void bdrv_refresh_limits(BlockDriverState *bs, Transaction *tran, Error **= errp); int bdrv_commit(BlockDriverState *bs); int bdrv_make_empty(BdrvChild *c, Error **errp); int bdrv_change_backing_file(BlockDriverState *bs, const char *backing_fil= e, diff --git a/block.c b/block.c index 1dc14908ac..9922943793 100644 --- a/block.c +++ b/block.c @@ -49,7 +49,6 @@ #include "qemu/timer.h" #include "qemu/cutils.h" #include "qemu/id.h" -#include "qemu/transactions.h" #include "block/coroutines.h" =20 #ifdef CONFIG_BSD @@ -1577,7 +1576,7 @@ static int bdrv_open_driver(BlockDriverState *bs, Blo= ckDriver *drv, return ret; } =20 - bdrv_refresh_limits(bs, &local_err); + bdrv_refresh_limits(bs, NULL, &local_err); if (local_err) { error_propagate(errp, local_err); return -EINVAL; @@ -3363,7 +3362,7 @@ int bdrv_set_backing_hd(BlockDriverState *bs, BlockDr= iverState *backing_hd, } =20 out: - bdrv_refresh_limits(bs, NULL); + bdrv_refresh_limits(bs, NULL, NULL); =20 return ret; } @@ -4847,7 +4846,7 @@ static void bdrv_reopen_commit(BDRVReopenState *reope= n_state) bdrv_set_backing_hd(bs, reopen_state->new_backing_bs, &error_abort= ); } =20 - bdrv_refresh_limits(bs, NULL); + bdrv_refresh_limits(bs, NULL, NULL); } =20 /* @@ -5244,7 +5243,7 @@ int bdrv_append(BlockDriverState *bs_new, BlockDriver= State *bs_top, out: tran_finalize(tran, ret); =20 - bdrv_refresh_limits(bs_top, NULL); + bdrv_refresh_limits(bs_top, NULL, NULL); =20 return ret; } diff --git a/block/io.c b/block/io.c index ca2dca3007..35b6c56efc 100644 --- a/block/io.c +++ b/block/io.c @@ -133,13 +133,40 @@ static void bdrv_merge_limits(BlockLimits *dst, const= BlockLimits *src) dst->max_iov =3D MIN_NON_ZERO(dst->max_iov, src->max_iov); } =20 -void bdrv_refresh_limits(BlockDriverState *bs, Error **errp) +typedef struct BdrvRefreshLimitsState { + BlockDriverState *bs; + BlockLimits old_bl; +} BdrvRefreshLimitsState; + +static void bdrv_refresh_limits_abort(void *opaque) +{ + BdrvRefreshLimitsState *s =3D opaque; + + s->bs->bl =3D s->old_bl; +} + +static TransactionActionDrv bdrv_refresh_limits_drv =3D { + .abort =3D bdrv_refresh_limits_abort, + .clean =3D g_free, +}; + +/* @tran is allowed to be NULL, in this case no rollback is possible. */ +void bdrv_refresh_limits(BlockDriverState *bs, Transaction *tran, Error **= errp) { ERRP_GUARD(); BlockDriver *drv =3D bs->drv; BdrvChild *c; bool have_limits; =20 + if (tran) { + BdrvRefreshLimitsState *s =3D g_new(BdrvRefreshLimitsState, 1); + *s =3D (BdrvRefreshLimitsState) { + .bs =3D bs, + .old_bl =3D bs->bl, + }; + tran_add(tran, &bdrv_refresh_limits_drv, s); + } + memset(&bs->bl, 0, sizeof(bs->bl)); =20 if (!drv) { @@ -156,7 +183,7 @@ void bdrv_refresh_limits(BlockDriverState *bs, Error **= errp) QLIST_FOREACH(c, &bs->children, next) { if (c->role & (BDRV_CHILD_DATA | BDRV_CHILD_FILTERED | BDRV_CHILD_= COW)) { - bdrv_refresh_limits(c->bs, errp); + bdrv_refresh_limits(c->bs, tran, errp); if (*errp) { return; } --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624984; cv=pass; d=zohomail.com; s=zohoarc; b=lYEHLlrMkiivyLerG3aSL4bsnvksKWCihK5omNhKIPEwHZ5rkV9jqjaLCRMCbhcNo+Jggl+FhyTA2gP4POoeWY0ll9eREqZmG04wYi5gT5tlrlnpcxzoYrh4MKDeCpmU4WZ0BgVXe4IxUVwka4gsPl1t6s2RAf3TyKwYr2+dJAY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624984; 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=dBHbKJj3PCAEtbYnKgqlWFwnZLXNpRe2kv3Ug4/3UyY=; b=BCnRDYBEuAyfiz77WR8XF6E0BQi2X9lausL6fSPq/Ve/4S2iLP5MlADdepzdtX3qYFZPfk6ma679aa9w7eXUfwrnQfVhE6+//797R99ssiHt6eDI97vxKzIMLL4yMMzJrC3U4DfFyNNcxZmpT6x5uxsN/Qjpdq8jIiXNidrQM08= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624984696581.0483500326441; Wed, 28 Apr 2021 08:49:44 -0700 (PDT) Received: from localhost ([::1]:52084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmRb-0007WM-9P for importer@patchew.org; Wed, 28 Apr 2021 11:49:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59026) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyb-0006Jd-Ah; Wed, 28 Apr 2021 11:19:45 -0400 Received: from mail-eopbgr30098.outbound.protection.outlook.com ([40.107.3.98]:58735 helo=EUR03-AM5-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 1lblyY-0001uH-Ru; Wed, 28 Apr 2021 11:19:45 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:54 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:54 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LfJjTrmrpMPhRhZkojpJ0puUuPNakZaxuEKI+x9iJrNCHknOH/M4tdjyh2zupfI417sSYvrI5SWH91bVtZjTULOWooz4xHv1SJu0XH1LtYEs5cwp6kRWenI6bZNKw0aXaHU77DB/blnv9cEWE2GjxDJgxLADa3nJGfuL2TtoJe9JTIIfGPfIXtprnU5FfQgceAj1gOeBfONwxElr34E7y0OiGBQ0AA9nH3Srr+aM8lC2CfAzMV0hzb4jmCtvHTcjbsgZXpXzxxyWAsOEuBnHwLV59yDXXLrbNX+PPYfAh8QbvHeS9PrnsJjPPp6nn/WWaz7w0shWXWo3lGyniLoieg== 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=dBHbKJj3PCAEtbYnKgqlWFwnZLXNpRe2kv3Ug4/3UyY=; b=IK8g/9SrJPIt9M2E6ta2JU0gzQmmshUovFx3qNl6+JOkrwPiveClqUWr+5vE8c1NUUbbmfzhdrBDwzxMtjqwPeYxpVrXe2yui2TB4A+4WeQY+rohvo/O/7t8Uq02amlSfLKEXmsto0hQTla7TprTuAqMkYuXKboV1I3anNbvxeo/jJ1kxI3dybvEXH8gt3QL3N9dqkE1Sb9PUbNaxgrbq9F4Dula+27u4CXRptjl6YXImupmIZtLbadL5gArvJT349QmbyCLC3neZ/rlYWGzPxV7u+6n/qEGdKHswYsa+94qBNLe66S3efu+njTovofJbx77DavFMKI8m0Y4UuF2jw== 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=dBHbKJj3PCAEtbYnKgqlWFwnZLXNpRe2kv3Ug4/3UyY=; b=qOaZD/AWQglJzOHiAPUnjtqaI2lFfAO85Hg1+I0rX5DHBws2gtssNn3Bt5mBh+rOoDpzu2iuGC/Nyy6aK9h23uzb+7mEVdkFGgl2H4s44oYS6KlI3cZRAGT36EX2gNhFdhcu0sr1pO1NGi3ijDDJT/vJD5fTju2V7rVidO/Ol94= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 28/36] block: add bdrv_set_backing_noperm() transaction action Date: Wed, 28 Apr 2021 18:17:56 +0300 Message-Id: <20210428151804.439460-29-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 6039811d-3fdc-4df9-e225-08d90a58ef82 X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ySnGLLi6U+Y/cU2BClR33RgeBlI15WAM7R5xUtXueJ2dbnvW7e+XLrfIbxnvjVeZFJSzRitxm2yqm9IWFQ9+iu5zZcGlSBZA4P0HlgwiHTlUnxI/tu3/v+df8qKxvv2yQTSgtVkKGTD3erBWT3MolqUg6bYDC/R+psDthySWLMVkgE6aAt33B15JDjEcliew54Ym0BkCYgxbdrrvGy9+zHLF5EcXZBiv9NnNF3vy5YKCdK5IthGT7FJfqCMlEd7BWYYb52yN3cjFj45IKyUmhjkLyK31oaz9xvOF7scYlEACbcxTFhIvd/ASe4akH8IqX9gQi2XUUAM+5wCZj2ktMShgq3d+BuXasK0o3uKPa4WN4OxYyaekJVXVDfqib4izUk+IULgU2AL2tWxKgk+rpVpoxYWnWKvRsS46TRhZkipm2OTxDyNjX7XMnHHZe3xINUG9lZT66guJdGkzVu3gBiqHBPwJryOo/BL6xZH4+Zqa2obOCBtpZhGWryo1F62kvofbGfY3kVtOx6nVE2du4RUXp+jURbWSQFq9y6V5Jjl9cIRZEPzHom1PH1N50dChfp8E/qK1/xCaOkbf0lId7P5qXaQxdVYdAEt7aW2JmIAsoSw+iATVscR8sIpbdoB2u5HSHs/YEyDV7sWAjoaJin4hwnMA201Wx3MKv9kWo5ElPNwfoZzgye/ddQb2fMbA 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?IrfgOlFqjvL8QTqshHSZFAjUAZGNMFhrMA7MdBDz86sDjPDdOMvIKEU0ei6q?= =?us-ascii?Q?rhHFB8zVV4JDxv/sX6Qfe36wSDWhlvPHilxoMq+DTn2v5khd0OmK5MqGml76?= =?us-ascii?Q?sr9lgkQ8qn/Sy/9whqhX0OaoMpAvZcVjc0fwn7cWIkOLMvYZZMPjjFQuXDUu?= =?us-ascii?Q?rf8FPq8A0lUYCJ1JxemSONcqxBmR5pstUUzlsI01985e0OejT1B5BiyNIdqX?= =?us-ascii?Q?qhDX19PSZ3eUftGZ9EcxA5HL6vkVY+8jDG5XXucFF5zFulukBw2kiXDDTn9D?= =?us-ascii?Q?4uBzV4+oM5Kc+OW5USZlsKPXIHwFFCEGHBdBm0O5phDea408WZcF7ZPsOHxp?= =?us-ascii?Q?aM7CORLgzBg1FRg1wu0f4wfqptoV4Wlhto+oYUI7wsnbgJdOu8gEEK2Jls0Y?= =?us-ascii?Q?9OJjDBAAGKP+M5tQHrecFqH/5UweeIF1eqnLUf8Cq0COMIVesXE+ETTniNuf?= =?us-ascii?Q?xHMfprhSlTKRV6Gg1bIexBf4EIQT4Pw5nqfbj1Gc7zf3cObShIfliCegz2Za?= =?us-ascii?Q?FJGoE5HvdIbiVyMrUQlhbkbp+kK7ea6lvwFt12ydkx30Ko/pDX4lBOvIn6qd?= =?us-ascii?Q?tmY5+x/PZjM3A4dA6r4owpln7anhUYXgHOEAC5mGZMayxw1jJzOBDCuyo0kM?= =?us-ascii?Q?t32G8mLk4yvyz+l0GaFG4WWE/CL3pB/rSGyV+VJzhtNMWLDLGt1TlZVizrra?= =?us-ascii?Q?4sUKuFIKQJV5oKErt85w/wXitz2vd2pNjR2BBI9AOP7ppFo50ZZ9ioVRlnkP?= =?us-ascii?Q?nAI2Qojv6VcxxghQs+Yv9XCRvZZF5Nvu4b14mrUNAOrJGFMG/Sq00H/ZB/2T?= =?us-ascii?Q?tb3dPeFsbN2bBMimIjfb9c7GLDt6ytSMrgXBcy1QvsvxQ0KCMlYjzdCMd6Yz?= =?us-ascii?Q?I1mrx2urEd8HknKYyrf+YmqRzXWj5eCLMbAr0WN1i9uDocMg8iIg9XBRxe3D?= =?us-ascii?Q?jfVI0mbPRrgm65dCAUzVhBGjfuSo3YNOGTvbcKlb7+AFd4eMhB+NPsQMwAFY?= =?us-ascii?Q?0pw6YiXZebI9TyDdWq0QjqYg/UdWThbUuK10tpnrhBcai/QsYXFQc8/iOcrW?= =?us-ascii?Q?ZbB07cQlEsV9c9CNYd0oAZNeqiB8Bu/jXqC7PWP8ioST1BosDQfxIZUMuTaj?= =?us-ascii?Q?A0laV5k+4Wul40bRhLhuQHWAu09eyndZFykop1mc0HdX8xrOUaudN+PAVFyl?= =?us-ascii?Q?BCOPYSQ4evch21ocPt8+ngbx6TJ8fLy1DHfrZqVrwMCWWOxaKc10X4R+Q3jm?= =?us-ascii?Q?ck8guCrWnkSw3YvGHZQW7LVrvgQ6EiG4QTtaPFz4bS+NZC/u9792Kk6Ev5ZU?= =?us-ascii?Q?xSQ951hmMkccLVDyFDCHC7Hp?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6039811d-3fdc-4df9-e225-08d90a58ef82 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:54.2866 (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: kY5mO/znnl2oL9NW6UweXfn54XA4wiJSlcBoBdWv1c5SCzF6Xgb4Qao2/TbcXeyIJ+VddJLTeCIt8RqZKHVNb9azf3PxAvn7BReBnboSJXU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.3.98; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-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) Content-Type: text/plain; charset="utf-8" Split out no-perm part of bdrv_set_backing_hd() as a separate transaction action. Note the in case of existing BdrvChild we reuse it, not recreate, just to do less actions. We don't need to create extra reference to backing_hd as we don't lose it in bdrv_attach_child(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 54 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/block.c b/block.c index 9922943793..bdfe59d94d 100644 --- a/block.c +++ b/block.c @@ -92,6 +92,8 @@ static int bdrv_attach_child_noperm(BlockDriverState *par= ent_bs, BdrvChild **child, Transaction *tran, Error **errp); +static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, + Transaction *tran); =20 static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQ= ueue *queue, Error **errp); @@ -3322,8 +3324,9 @@ static BdrvChildRole bdrv_backing_role(BlockDriverSta= te *bs) * Sets the bs->backing link of a BDS. A new reference is created; callers * which don't need their own reference any more must call bdrv_unref(). */ -int bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd, - Error **errp) +static int bdrv_set_backing_noperm(BlockDriverState *bs, + BlockDriverState *backing_hd, + Transaction *tran, Error **errp) { int ret =3D 0; bool update_inherits_from =3D bdrv_chain_contains(bs, backing_hd) && @@ -3333,36 +3336,53 @@ int bdrv_set_backing_hd(BlockDriverState *bs, Block= DriverState *backing_hd, return -EPERM; } =20 - if (backing_hd) { - bdrv_ref(backing_hd); - } - if (bs->backing) { /* Cannot be frozen, we checked that above */ - bdrv_unref_child(bs, bs->backing); - bs->backing =3D NULL; + bdrv_unset_inherits_from(bs, bs->backing, tran); + bdrv_remove_filter_or_cow_child(bs, tran); } =20 if (!backing_hd) { goto out; } =20 - bs->backing =3D bdrv_attach_child(bs, backing_hd, "backing", &child_of= _bds, - bdrv_backing_role(bs), errp); - if (!bs->backing) { - ret =3D -EPERM; - goto out; + ret =3D bdrv_attach_child_noperm(bs, backing_hd, "backing", + &child_of_bds, bdrv_backing_role(bs), + &bs->backing, tran, errp); + if (ret < 0) { + return ret; } =20 - /* If backing_hd was already part of bs's backing chain, and + + /* + * If backing_hd was already part of bs's backing chain, and * inherits_from pointed recursively to bs then let's update it to - * point directly to bs (else it will become NULL). */ + * point directly to bs (else it will become NULL). + */ if (update_inherits_from) { - backing_hd->inherits_from =3D bs; + bdrv_set_inherits_from(backing_hd, bs, tran); } =20 out: - bdrv_refresh_limits(bs, NULL, NULL); + bdrv_refresh_limits(bs, tran, NULL); + + return 0; +} + +int bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd, + Error **errp) +{ + int ret; + Transaction *tran =3D tran_new(); + + ret =3D bdrv_set_backing_noperm(bs, backing_hd, tran, errp); + if (ret < 0) { + goto out; + } + + ret =3D bdrv_refresh_perms(bs, errp); +out: + tran_finalize(tran, ret); =20 return ret; } --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625763; cv=pass; d=zohomail.com; s=zohoarc; b=bEq6Xa2jkYTuSs3BKZzCoYpNjirmIMOjEMRe/Wa49OGMwM6E3MI/KfzdvXBY3YQDn/7q2FWto+ESqJbGY/VN3aTfqBoPRRqZQfn/7WCE5KJPQkoUFSSNxwsAyst9/VpRF+UrTO/2cOJ/MWF+gb5BMICCA9kBWfMyOkuTLgcjyfY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625763; 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=T2Nxy7Ri6MvPVDhnJg8XbAFLfpId9HfdKoK/k90EIyg=; b=Tckr3EhIO5I9jWfe1SOMN5kPtWTlWkTlgp6Dr0YgEibYTePOetOrqfikbSy+WtMSEB7zWPjfEp9FFSOHWHZO6tvGLrwoCRmMxnjFGdR86n5eUIXuNans/SVjmxwTR/r6gYAc0CmtG4VcvaXxcMay3AT0cmnMMQ6PEzneDbL/uVE= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625763804364.6890894217994; Wed, 28 Apr 2021 09:02:43 -0700 (PDT) Received: from localhost ([::1]:50662 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbme8-0001yY-Pn for importer@patchew.org; Wed, 28 Apr 2021 12:02:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyd-0006OJ-Kv; Wed, 28 Apr 2021 11:19:48 -0400 Received: from mail-eopbgr00103.outbound.protection.outlook.com ([40.107.0.103]:52805 helo=EUR02-AM5-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 1lblya-0001yK-4H; Wed, 28 Apr 2021 11:19:47 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6151.eurprd08.prod.outlook.com (2603:10a6:20b:290::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Wed, 28 Apr 2021 15:18:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:18:55 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XX1WHPGP+SaIg4gS9/W6noP6njZeF2vqdd0H0/xuTjPgFyPCtSv+YazuG4Yz9jRb3eAwkZwHIJcQIwtr7dqbNLPdZMYt+AcdFmSL6DFY9eUHmtcSDO4u7d8PYOhHpMwWB47F63MJfp/8A4X459xS5JviwqTdMa/A1z9W9+SI9VxJIWI0RSIBTIDRdWdvjrTFf3figgfLPJXjo/0hfA+W9ZXDQTmmtaHPuyYSW3YCyiBJkh2DKx5TynRbEe3SynWqqRXuJs9gCwUad12j47wkp3eD37zkNARkplukXTfy8o89MLsxvp3t1l+73kRsAZVgO5nmRHDPoTNqryod1jatDw== 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=T2Nxy7Ri6MvPVDhnJg8XbAFLfpId9HfdKoK/k90EIyg=; b=l12jbULJ0BoL4B2qMGIy2ByM3acrvNTw5WaHDElOO2vNmKW4BeNl3g1PvYA+KzHEJudTGG2/RELFKT9yJJLvz9BhPFVVkon7PaFoqnhtWLwAWeJO7Qcw8RYLa7+NGjNMm5hneAXLuziDvANgFzzZhKYen24NzDZ3JjDkLFl6vt2pqC8R6fkJFz57zYkcD3Wyf0aND3O0LnvLqxlKIwCGqc9ww5+DTGnVEYtO2cn01Euuu8OV5Kf0ng74RwOis9JvgLJPAKXFFOFuh0jPPo+dobVprMO35Lya4dtLwq9vV8t52ZTrHVvKd+di6t/frozloTcbtuM+aCuUufjteIxR+w== 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=T2Nxy7Ri6MvPVDhnJg8XbAFLfpId9HfdKoK/k90EIyg=; b=jJBTqEUmenQOs8L1T5fxm14IWgzwKHVs1RTR26oQolIVCnFlGyHJ5JpS956zFBO7J4J2PqVye9QFYALwrzloQr+ZIHd+WnL8inCkoBAosme6g8UKzxwU/HMJ7v8YEYbWaeFmiNZ86S7GAusPz/Jtq1q2Gn94ucDN6IqpYxcz//U= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 29/36] block: bdrv_reopen_multiple(): move bdrv_flush to separate pre-prepare Date: Wed, 28 Apr 2021 18:17:57 +0300 Message-Id: <20210428151804.439460-30-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: d6428581-5071-4c79-0781-08d90a58f05e X-MS-TrafficTypeDiagnostic: AS8PR08MB6151: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YkCPPI++HASB3m+QoG5N6R7VqCpGdP7lEEXh6QCOkC9QQFvvahyJn9UmiWPlnWCkBHoPPx1M9dYZQyUbCcyE5AyCvSOW9ifuy3W+gC0v8tyVCjr+EDkHqlLKpmnB/W5SEoOARmCWjUGQuGPGm+os8VyoSz6B7hRnECq7Gsiud0dxBlVf2g9mlB/8tVvKvTYtZei4QF862mNGSvAzdcKTfMpf2LTmN5Pgv7qipmbUxjJnAT/w8FfEV668UQz1qY/Tym0IqWsz3kPNZaBx5mIX5M1VeJDc9k0WYrJCX0dlhCM1OUP8FIcoRdFiwAu7SeM3uAnOb3xULCx5ExIi13OHYYYImzLqfm+9BWNnDIal1m/Bty8OhWGtydTBXWc2IP/UOk/nXoB3RZTIwIozt2HONTTJbgrr27QO6bG9z1ztc5MDWeNo3riflVTbmq4dI8Au2T8041llfksp0ksVCKXKkxWFELO/OAeV+4TFknOJ/bYdn71+kiU9h/n2emf7urqDJLkzw55AiC+39wP346Psvc/saoY9zwq5YhBfA2j/bb0Ix9qVKva7HxXiOaKn0sXOUEa6ZyIC43YCu6+LlV19Ci8RnpVAuLw6oyOeNTIU3nogMF2Dk4j2tlz01W224ePsXg5eNRhTkHXIZjD776/TJrU8Gbz2sp7zsrZr0fFiF270Mooar4MA6JMxcr/6ZeQ9 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)(39840400004)(376002)(396003)(136003)(366004)(346002)(478600001)(52116002)(36756003)(26005)(956004)(86362001)(6916009)(5660300002)(316002)(186003)(6506007)(6512007)(2906002)(83380400001)(16526019)(4326008)(6486002)(66556008)(66476007)(8676002)(66946007)(1076003)(8936002)(2616005)(38350700002)(38100700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?2QpJFAMp22lxrN2GrFRn72hFu8MwfaxoDOj6qHbDd0LcJM4YGcavPrn3m45F?= =?us-ascii?Q?CLzccHiaKBK1gP6l7tYbIZ+KRDfYWp6kxGa6TuPrx9DBC2Ev4gI2ZVPegyGS?= =?us-ascii?Q?6ce7NCPxto7BbmGT+i2wZHUx3D/sUAG2A/aJHSkD6omP0bYCHlE4SO9yW3CO?= =?us-ascii?Q?6JqK4gF8fZCDzy+AiovCIENG+V5LCnLo+PX0U4Eyjvyy4OdLNvX5sXLAOpCS?= =?us-ascii?Q?n+OHKbZXJK12ywYCBZQ9qpQGLX81i5RpNIZkH20j4xziC2X3pSR+GR8qqhXh?= =?us-ascii?Q?NsC7vPsKCwVw3tJR+qO2pYfoRFPfyy9yc57eU1xvT8oYsPXp1f7+pKNj4aYe?= =?us-ascii?Q?jbZt1Jch7O3sBL2fjZz309Q8WXJlnLQwtUpGRqE1fQO+i7o2LWE5vqzEMwSh?= =?us-ascii?Q?QVHHjLSyL+LyrH4Q2PtzzMRu1/pIjklb5un93ksAsWQ4gX3h1aJ+MVNhWQNp?= =?us-ascii?Q?QTjAb95mExLLySiIjveaEjtXVjdC+mzUpYzEYBl/8BK4xHrxsXzBjkTSYi+6?= =?us-ascii?Q?cQ4Mv9lRL69Y+OhyHj8NQCW4bpcVTfo/oPhE+6Oo7aYeUbp5r5Eg1gEyTSLi?= =?us-ascii?Q?Gl6hKCEtl6M2gCsSLSfK7/VvEs23ZBEUCSKOmU/qRVKmWFFJzWX7vW4KRkg0?= =?us-ascii?Q?2jjkbfQkU7F92aQCr3T17+ltw0KuCVyNCprCKM6zgXjaMhns2XfNsDexjPzH?= =?us-ascii?Q?g3cUMaOWgN2mEzMGmNLyaHn3FoVUOgPFX5cSNAwzrfeLGL+dSwCPiQ+2cBrP?= =?us-ascii?Q?0zGlA8dYkfyvm0Mv4/OgZaZ5DU3XWfSoCyeKPspi0VA69RnQR0Q04hbS5X6W?= =?us-ascii?Q?m1Lzd/En1wc7VRMth8J6tDjVLeJ42uFKreJFgDUZg53ztQX6Lz1mBL9sV5LV?= =?us-ascii?Q?crqDZOOCKpKJiNb50BK0le7XA/7UdrttOcu54aY5d3OhqOtGtuDGqbx6FGdt?= =?us-ascii?Q?V12zoMC1ADw8CLaKdr6eQUHYZDQLRSXB5bNXb3JLXsh0ygrxTfT7sBJEIjOE?= =?us-ascii?Q?x0An8yUKuawUM8lqCAV9U8LeQfXwCLeRhLNKXYmiJ+k0OZmyUbf0AXc5vIu0?= =?us-ascii?Q?3Wh+uJdK+N4C/kOJ8FzkHxgX8XaKK/G4f50T/TiSSrL6DuSIF+dRQwDKAfSN?= =?us-ascii?Q?GNYgfyqdXpkK0cmbqCXndK1u0OpLVlfOTm/5d3gGc9DZEDfyT+bG2JsaKJSe?= =?us-ascii?Q?yl3sTxtWOhTv6yYimhft+OThbY4hbqFKJx9hkO1q5R96Yp0xvuagX1xEQp5q?= =?us-ascii?Q?Ed/mqR40pUCeL9Ht37Pu4mNFY3mL32lgLd0DmMyVzI/YdG4c5OogqpnCFDHx?= =?us-ascii?Q?ISwl/x1LuS28uBZPe408TpLx?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6428581-5071-4c79-0781-08d90a58f05e X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:55.7118 (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: YXn4VGxWJa4JpmHADdxfb2+tUtSqI4ctLjwhLeB0vO/lf42EzHkRQ8x5NNgZCjxPHOclovBvSMO+X1q4PmjlxVeLL28jk29jNQEg7eqbLYc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6151 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.0.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-AM5-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) Content-Type: text/plain; charset="utf-8" During reopen we may add backing bs from other aio context, which may lead to changing original context of top bs. We are going to move graph modification to prepare stage. So, it will be possible that bdrv_flush() in bdrv_reopen_prepare called on bs in non-original aio context, which we didn't aquire which leads to crash. To avoid this problem move bdrv_flush() to be a separate reopen stage before bdrv_reopen_prepare(). This doesn't seem correct to acquire only one aio context and not all contexts participating in reopen. But it's not obvious how to do it correctly, keeping in mind: 1. rules of bdrv_set_aio_context_ignore() that requires new_context lock not being held 2. possible deadlocks because of holding all (or several?) AioContext locks Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/block.c b/block.c index bdfe59d94d..357ec1be2c 100644 --- a/block.c +++ b/block.c @@ -4274,6 +4274,14 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue,= Error **errp) =20 assert(bs_queue !=3D NULL); =20 + QTAILQ_FOREACH(bs_entry, bs_queue, entry) { + ret =3D bdrv_flush(bs_entry->state.bs); + if (ret < 0) { + error_setg_errno(errp, -ret, "Error flushing drive"); + goto cleanup; + } + } + QTAILQ_FOREACH(bs_entry, bs_queue, entry) { assert(bs_entry->state.bs->quiesce_counter > 0); if (bdrv_reopen_prepare(&bs_entry->state, bs_queue, errp)) { @@ -4669,12 +4677,6 @@ static int bdrv_reopen_prepare(BDRVReopenState *reop= en_state, bdrv_reopen_perm(queue, reopen_state->bs, &reopen_state->perm, &reopen_state->shared_perm); =20 - ret =3D bdrv_flush(reopen_state->bs); - if (ret) { - error_setg_errno(errp, -ret, "Error flushing drive"); - goto error; - } - if (drv->bdrv_reopen_prepare) { /* * If a driver-specific option is missing, it means that we --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624802; cv=pass; d=zohomail.com; s=zohoarc; b=DI/rI6lVNakRvKyeKTzNIyHPGFxQEDE4+/lVMs2DIOEd35blI/ZXqPly6UZwcUlTWjqtqSBHuUDBPeXPQxNXdp1JsoBwGQo5X73UOPQZhLl6YiCU9JM9aqBaC0Cbag0T3ltJx58JWIgQFDP+dNj8tL5axJgSPEkq8lpk+RDoiN4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624802; 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=bOy7hstDoraDGPAMEMM6ilqTU03Yqqj120FlojpYjPQ=; b=YMR/8S8orDzUocJ5QPdf99zV6A2Il8jEhoMkUtSeaEWaUlw3zzpYp0Bx97pabjTIOdVAL4FrcVbuEo1q98zO8vHdQtS8v9+2lW97JP4OvQJ+nT7FBZtEcDUBCuIQnEDqvCU2g2VO46cmHm3FZ8mfLiJfafHeXOrI9wFJl+WLUoM= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624802534485.1952633885959; Wed, 28 Apr 2021 08:46:42 -0700 (PDT) Received: from localhost ([::1]:45060 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmOf-0004Px-Eq for importer@patchew.org; Wed, 28 Apr 2021 11:46:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyY-0006D8-Mc; Wed, 28 Apr 2021 11:19:42 -0400 Received: from mail-eopbgr80094.outbound.protection.outlook.com ([40.107.8.94]:21824 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 1lblyS-00028Z-Pp; Wed, 28 Apr 2021 11:19:42 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:27 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:26 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fznuHGP/e3xTpOIpH/EfpWIA2H7l1YrLtDBjM6MPldwL+8sNz8XqAy9HEBro4Dk2S4Y+YfCKWbmkbgoXD2qsJ1Tocv5NZUln2yyuC+JPQPvOXf1W2auRBah653IAKlfV0HaR5V50HCWhCemmV0JawFjUgQ2EdqhpX6A4bfRpu0vSWiKKy43YMhfZg/hZE7nzHHWuZrYB232bT9HFLcOiRNtc9yiRV3DkW0fA0BACSOEGqrfM7SftJ7RAjUJ091ROsQUd8Ix9RgYufbzjUHFp4CuPO7d23p5gOBaQZL4/Wr6kxdygy7Gmik2yktsonph9MKo7O4WgpoSwRtWsdze+LA== 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=bOy7hstDoraDGPAMEMM6ilqTU03Yqqj120FlojpYjPQ=; b=FjHI7NLtpRP/1nsdou4+rR3F/I8HrKNpLOEaclHPcZBDROFd3umvEH2DRkRrwNYYqJmgboULyijK2eWqgIi1DgY6FysuXhvKBGMBXwAPhyowDFe8sV2v0Ko4rG5mNOZfbg/pP/XEHvZ3APdA7DzTAuwvmNPLWnkAPnaQy+99Q7rOLtttOMff7kReT2P+8qGyG3NqWmQnu9ot2h2ZBD5mpH+rCrrTgh7ciXEwfSGeG4DonXeUgOb01OlV6Qj6pEEeKhOIY5PFpkOGSsLCNM/Y+5j6gtpzas+vfzJw6q4KcQxJMnbD/udOnyCB9q5V4F24kXRjuTH4/uVc0+UZa9yA0A== 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=bOy7hstDoraDGPAMEMM6ilqTU03Yqqj120FlojpYjPQ=; b=t0hVnPV+7ZHjAhfvNKFXE7GUkEs6IJFDfqYhk3jc42JloJGPHLOCj9YZZfMkBwAZ8mTn9rVgrPTjvSuneRbrcegPRMKoCLpiYH0duUqyvm9WQ5VPSThzytPyOKD1zeMHejzAjf8uvb4APTn6rOa4igaSvHr2guBUBDMUyr/IOWk= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 30/36] block: bdrv_reopen_multiple: refresh permissions on updated graph Date: Wed, 28 Apr 2021 18:17:58 +0300 Message-Id: <20210428151804.439460-31-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: bbe52faf-2a47-42c4-51f9-08d90a58f109 X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:114; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dvwZiU3vS4wCBla61RrzayKmg1rnjL4PtaY2BW9jylETou4TNRGhMtOPrnVUSCQ5ieQ8wnOlGXra3HFoJ7p+mKG8f3MxR0U0C4f2f1bTkl2stLFBd9LlXGJ/NLB3Ww5zivvq/tJHZ8WcQBKIZ+AgO6z6vfnXkChkmikxdaDzNh9B2ppA9RJlhrG0Rb4rRGmgsAETEH0uDEfd42shz7oX9kXnsCC3BUaSyPfDTuMZTjyM2DrI3cEhVVcGUh/IgMzy1ciiLsVg8Q8lyvc6B0Uf//Dd8aLNAYxi8xBXLsCenUowrIE1C1iiXf2lF6y3pP5Mv5RnslTeboGZUzwq3VzwADZPE+t/+qqz4xqGSIHJyNx75EAtMpRlUBaTMHJtWuiqiIBpUr+CJgYBCoUQe5jci1G6wN6r+ZCfsmtUDkk9HNx1fEpP8ch+ltIwjgGcwk8iP/rkdescPcyGaTK/gTZL+svT6xRNoxp8A6Oe+uVfDQ1SFWttQb8ER/tMl6HzNpXOMv54hq9JLJnfmMwnCA+gwj7bZ9KmZ/bwfxdFwBrjyz3lHtSJw8rRrQnXRIV0EstjTYrgWBDqBCUkQ6fXcFFg/eFSDXrTPZxm+uRQqlHleGtjwMP3+akbbUl5/k7otuDUps0PIWBlo1qXllsoVNJxjvJ6Ddcw29I5G447083xHqtogTzMfkSi1SeB6JjwEJpU 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(15650500001)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(30864003)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?CCSgfrbF+BaJyHiZek+hsx46lhYV/EITQl7LRjvjQ4gXaJLJkLZo0VtmK0z/?= =?us-ascii?Q?WsVbRJYrEaucnCmIPTAGDYDOW7YYsshgHvdCrbka+6eT0U6lF6H/CBFd9xn7?= =?us-ascii?Q?2fV1pyarfE9qnj/WbBq7K03ffDjhC7Ws46xzLV45lrwHA4Ory6EyUnPncoJF?= =?us-ascii?Q?eOf/KvbRKQnUPe8zPL2DG/DuLDDTur59SX26iXVAKNQnZ3hTRWcVDZlPh90u?= =?us-ascii?Q?f4hkROpbJubKZ3iGE/gz8duiIPlkU0CkH5GPGSzPgVzjnG05kPW0HxcU6WXx?= =?us-ascii?Q?DSQPB4PxA2M9H1In5cA/qnHrYtr6n08/V3i2ezdmj8g75w7tF22aLvd4ja4A?= =?us-ascii?Q?4qvNm+sGk37cHeZK4qTRTp+crr6KHqsMDi30czCPp7NcVEUWpb0e0jHWMAfi?= =?us-ascii?Q?ghIVYBuUewNZrYP6gM8DxSCzG2kHngUDgIidbnNLHEvYRMKaluVepXTBxWKN?= =?us-ascii?Q?7uV140nsumE2WSmm7DWMF6n/Wi1PRVEuueBz/TbUOcdhIuRjr10mZBhtnyhz?= =?us-ascii?Q?g3KbPR1tO2335Jq8rZsALRV8MdDJJF2Ln/BDs6Ah1OOZ9EYXHPC85GCs0oTY?= =?us-ascii?Q?g3zk8hgnBh/m4i99nmW1uKepEu5n9BOHWagYS0LEHzUMpQ+nQcSREIPwwm81?= =?us-ascii?Q?maehLmCY1q9ZHM374hv4r7i1yxZeat1AjXaq4Hhy7xJ8FozR3yVdy5/tt1KL?= =?us-ascii?Q?OMXL9fV6zvTW9+Q0nt69FkOZe7XpJDRTkI9uUpyyAAzzE2mr45yl2bBGQJv2?= =?us-ascii?Q?pC82a1Bi12xFOOHH8NTlWVJKHfjG5OjC8nP72KjlI4H5y4ovSTH85OSCOZtE?= =?us-ascii?Q?e/B2u7eTlkYR4MrQgat1K1E3P1P5Q3wHVSzCnv4dbBGENRR+bCUU2Rq6vi7G?= =?us-ascii?Q?xG7Fbw4pVTPJ+nVv3y0PSHp0DIfd9CkOOmSXY+IhJAGKW6TYpe86DQiUPhRN?= =?us-ascii?Q?0Hc6L06uRQhtXi+oX6c91DnJAnTiiMWDEL/X83fdMWRvvG4Cm1WU8iPBs9yo?= =?us-ascii?Q?AZ6051F9Wfh+D67n36wLJrDnOF4N6DgHSCfNtOBim6Lecea6+LmHCeXmvNWH?= =?us-ascii?Q?hglGy46IL7uG/Ohi9/+Cc8VAT7nAlyWFl8WhyvH3/Mj2n4zkKj/5GlJAgaTw?= =?us-ascii?Q?mgkYUenx0kry8APAk+kWBqbC6DmkYMrs3hM05pvd3IasjXE6CgM4YOC/JxuH?= =?us-ascii?Q?GtmvauABPsOyh1fAlDw4BFXteVittbb7hLEYseH2kVc0h6WfmfO0BALDKQQh?= =?us-ascii?Q?VMaF5sPQsmaydwQVgrKuxqByOYugbWJlEX5698r4osEHx/whQbbn7PKYSXxX?= =?us-ascii?Q?/fH6/5KMUgjCBsFmGsG5iU6N?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: bbe52faf-2a47-42c4-51f9-08d90a58f109 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:56.8364 (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: 6DakpwsBxJXiURbcqVe3dnq0dLdcY75/IB9T1zKx/bpVt/Hl17LKocHEPsMsaoR1d1lyiRgPXLGZhRLZGTUfEC6o57iTMH73jGQgAukhwJ8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.94; 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) Content-Type: text/plain; charset="utf-8" Move bdrv_reopen_multiple to new paradigm of permission update: first update graph relations, then do refresh the permissions. We have to modify reopen process in file-posix driver: with new scheme we don't have prepared permissions in raw_reopen_prepare(), so we should reconfigure fd in raw_check_perm(). Still this seems more native and simple anyway. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- include/block/block.h | 3 +- block.c | 187 ++++++++++++------------------------------ block/file-posix.c | 91 +++++++------------- 3 files changed, 84 insertions(+), 197 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index ad38259c91..8d5b3ecebd 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -208,8 +208,7 @@ typedef struct BDRVReopenState { BlockdevDetectZeroesOptions detect_zeroes; bool backing_missing; bool replace_backing_bs; /* new_backing_bs is ignored if this is fals= e */ - BlockDriverState *new_backing_bs; /* If NULL then detach the current b= s */ - uint64_t perm, shared_perm; + BlockDriverState *old_backing_bs; /* keep pointer for permissions upda= te */ QDict *options; QDict *explicit_options; void *opaque; diff --git a/block.c b/block.c index 357ec1be2c..ffaa367a1b 100644 --- a/block.c +++ b/block.c @@ -95,8 +95,9 @@ static int bdrv_attach_child_noperm(BlockDriverState *par= ent_bs, static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, Transaction *tran); =20 -static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQ= ueue - *queue, Error **errp); +static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, + BlockReopenQueue *queue, + Transaction *set_backings_tran, Error **err= p); static void bdrv_reopen_commit(BDRVReopenState *reopen_state); static void bdrv_reopen_abort(BDRVReopenState *reopen_state); =20 @@ -2468,6 +2469,7 @@ static void bdrv_list_abort_perm_update(GSList *list) } } =20 +__attribute__((unused)) static void bdrv_abort_perm_update(BlockDriverState *bs) { g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); @@ -2563,6 +2565,7 @@ char *bdrv_perm_names(uint64_t perm) * * Needs to be followed by a call to either bdrv_set_perm() or * bdrv_abort_perm_update(). */ +__attribute__((unused)) static int bdrv_check_update_perm(BlockDriverState *bs, BlockReopenQueue *= q, uint64_t new_used_perm, uint64_t new_shared_perm, @@ -4183,10 +4186,6 @@ static BlockReopenQueue *bdrv_reopen_queue_child(Blo= ckReopenQueue *bs_queue, bs_entry->state.explicit_options =3D explicit_options; bs_entry->state.flags =3D flags; =20 - /* This needs to be overwritten in bdrv_reopen_prepare() */ - bs_entry->state.perm =3D UINT64_MAX; - bs_entry->state.shared_perm =3D 0; - /* * If keep_old_opts is false then it means that unspecified * options must be reset to their original value. We don't allow @@ -4271,6 +4270,9 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, = Error **errp) { int ret =3D -1; BlockReopenQueueEntry *bs_entry, *next; + Transaction *tran =3D tran_new(); + g_autoptr(GHashTable) found =3D NULL; + g_autoptr(GSList) refresh_list =3D NULL; =20 assert(bs_queue !=3D NULL); =20 @@ -4284,33 +4286,33 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue= , Error **errp) =20 QTAILQ_FOREACH(bs_entry, bs_queue, entry) { assert(bs_entry->state.bs->quiesce_counter > 0); - if (bdrv_reopen_prepare(&bs_entry->state, bs_queue, errp)) { - goto cleanup; + ret =3D bdrv_reopen_prepare(&bs_entry->state, bs_queue, tran, errp= ); + if (ret < 0) { + goto abort; } bs_entry->prepared =3D true; } =20 + found =3D g_hash_table_new(NULL, NULL); QTAILQ_FOREACH(bs_entry, bs_queue, entry) { BDRVReopenState *state =3D &bs_entry->state; - ret =3D bdrv_check_perm(state->bs, bs_queue, state->perm, - state->shared_perm, errp); - if (ret < 0) { - goto cleanup_perm; - } - /* Check if new_backing_bs would accept the new permissions */ - if (state->replace_backing_bs && state->new_backing_bs) { - uint64_t nperm, nshared; - bdrv_child_perm(state->bs, state->new_backing_bs, - NULL, bdrv_backing_role(state->bs), - bs_queue, state->perm, state->shared_perm, - &nperm, &nshared); - ret =3D bdrv_check_update_perm(state->new_backing_bs, NULL, - nperm, nshared, errp); - if (ret < 0) { - goto cleanup_perm; - } + + refresh_list =3D bdrv_topological_dfs(refresh_list, found, state->= bs); + if (state->old_backing_bs) { + refresh_list =3D bdrv_topological_dfs(refresh_list, found, + state->old_backing_bs); } - bs_entry->perms_checked =3D true; + } + + /* + * Note that file-posix driver rely on permission update done during r= eopen + * (even if no permission changed), because it wants "new" permissions= for + * reconfiguring the fd and that's why it does it in raw_check_perm(),= not + * in raw_reopen_prepare() which is called with "old" permissions. + */ + ret =3D bdrv_list_refresh_perms(refresh_list, bs_queue, tran, errp); + if (ret < 0) { + goto abort; } =20 /* @@ -4326,51 +4328,31 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue= , Error **errp) bdrv_reopen_commit(&bs_entry->state); } =20 - ret =3D 0; -cleanup_perm: - QTAILQ_FOREACH_SAFE(bs_entry, bs_queue, entry, next) { - BDRVReopenState *state =3D &bs_entry->state; - - if (!bs_entry->perms_checked) { - continue; - } - - if (ret =3D=3D 0) { - uint64_t perm, shared; + tran_commit(tran); =20 - bdrv_get_cumulative_perm(state->bs, &perm, &shared); - assert(perm =3D=3D state->perm); - assert(shared =3D=3D state->shared_perm); + QTAILQ_FOREACH_REVERSE(bs_entry, bs_queue, entry) { + BlockDriverState *bs =3D bs_entry->state.bs; =20 - bdrv_set_perm(state->bs); - } else { - bdrv_abort_perm_update(state->bs); - if (state->replace_backing_bs && state->new_backing_bs) { - bdrv_abort_perm_update(state->new_backing_bs); - } + if (bs->drv->bdrv_reopen_commit_post) { + bs->drv->bdrv_reopen_commit_post(&bs_entry->state); } } =20 - if (ret =3D=3D 0) { - QTAILQ_FOREACH_REVERSE(bs_entry, bs_queue, entry) { - BlockDriverState *bs =3D bs_entry->state.bs; + ret =3D 0; + goto cleanup; =20 - if (bs->drv->bdrv_reopen_commit_post) - bs->drv->bdrv_reopen_commit_post(&bs_entry->state); +abort: + tran_abort(tran); + QTAILQ_FOREACH_SAFE(bs_entry, bs_queue, entry, next) { + if (bs_entry->prepared) { + bdrv_reopen_abort(&bs_entry->state); } + qobject_unref(bs_entry->state.explicit_options); + qobject_unref(bs_entry->state.options); } + cleanup: QTAILQ_FOREACH_SAFE(bs_entry, bs_queue, entry, next) { - if (ret) { - if (bs_entry->prepared) { - bdrv_reopen_abort(&bs_entry->state); - } - qobject_unref(bs_entry->state.explicit_options); - qobject_unref(bs_entry->state.options); - } - if (bs_entry->state.new_backing_bs) { - bdrv_unref(bs_entry->state.new_backing_bs); - } g_free(bs_entry); } g_free(bs_queue); @@ -4395,53 +4377,6 @@ int bdrv_reopen_set_read_only(BlockDriverState *bs, = bool read_only, return ret; } =20 -static BlockReopenQueueEntry *find_parent_in_reopen_queue(BlockReopenQueue= *q, - BdrvChild *c) -{ - BlockReopenQueueEntry *entry; - - QTAILQ_FOREACH(entry, q, entry) { - BlockDriverState *bs =3D entry->state.bs; - BdrvChild *child; - - QLIST_FOREACH(child, &bs->children, next) { - if (child =3D=3D c) { - return entry; - } - } - } - - return NULL; -} - -static void bdrv_reopen_perm(BlockReopenQueue *q, BlockDriverState *bs, - uint64_t *perm, uint64_t *shared) -{ - BdrvChild *c; - BlockReopenQueueEntry *parent; - uint64_t cumulative_perms =3D 0; - uint64_t cumulative_shared_perms =3D BLK_PERM_ALL; - - QLIST_FOREACH(c, &bs->parents, next_parent) { - parent =3D find_parent_in_reopen_queue(q, c); - if (!parent) { - cumulative_perms |=3D c->perm; - cumulative_shared_perms &=3D c->shared_perm; - } else { - uint64_t nperm, nshared; - - bdrv_child_perm(parent->state.bs, bs, c, c->role, q, - parent->state.perm, parent->state.shared_perm, - &nperm, &nshared); - - cumulative_perms |=3D nperm; - cumulative_shared_perms &=3D nshared; - } - } - *perm =3D cumulative_perms; - *shared =3D cumulative_shared_perms; -} - static bool bdrv_reopen_can_attach(BlockDriverState *parent, BdrvChild *child, BlockDriverState *new_child, @@ -4483,6 +4418,7 @@ static bool bdrv_reopen_can_attach(BlockDriverState *= parent, * Return 0 on success, otherwise return < 0 and set @errp. */ static int bdrv_reopen_parse_backing(BDRVReopenState *reopen_state, + Transaction *set_backings_tran, Error **errp) { BlockDriverState *bs =3D reopen_state->bs; @@ -4559,6 +4495,8 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, =20 /* If we want to replace the backing file we need some extra checks */ if (new_backing_bs !=3D bdrv_filter_or_cow_bs(overlay_bs)) { + int ret; + /* Check for implicit nodes between bs and its backing file */ if (bs !=3D overlay_bs) { error_setg(errp, "Cannot change backing link if '%s' has " @@ -4579,9 +4517,11 @@ static int bdrv_reopen_parse_backing(BDRVReopenState= *reopen_state, return -EPERM; } reopen_state->replace_backing_bs =3D true; - if (new_backing_bs) { - bdrv_ref(new_backing_bs); - reopen_state->new_backing_bs =3D new_backing_bs; + reopen_state->old_backing_bs =3D bs->backing ? bs->backing->bs : N= ULL; + ret =3D bdrv_set_backing_noperm(bs, new_backing_bs, set_backings_t= ran, + errp); + if (ret < 0) { + return ret; } } =20 @@ -4606,7 +4546,8 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, * */ static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, - BlockReopenQueue *queue, Error **errp) + BlockReopenQueue *queue, + Transaction *set_backings_tran, Error **err= p) { int ret =3D -1; int old_flags; @@ -4673,10 +4614,6 @@ static int bdrv_reopen_prepare(BDRVReopenState *reop= en_state, goto error; } =20 - /* Calculate required permissions after reopening */ - bdrv_reopen_perm(queue, reopen_state->bs, - &reopen_state->perm, &reopen_state->shared_perm); - if (drv->bdrv_reopen_prepare) { /* * If a driver-specific option is missing, it means that we @@ -4730,7 +4667,7 @@ static int bdrv_reopen_prepare(BDRVReopenState *reope= n_state, * either a reference to an existing node (using its node name) * or NULL to simply detach the current backing file. */ - ret =3D bdrv_reopen_parse_backing(reopen_state, errp); + ret =3D bdrv_reopen_parse_backing(reopen_state, set_backings_tran, err= p); if (ret < 0) { goto error; } @@ -4852,22 +4789,6 @@ static void bdrv_reopen_commit(BDRVReopenState *reop= en_state) qdict_del(bs->explicit_options, child->name); qdict_del(bs->options, child->name); } - - /* - * Change the backing file if a new one was specified. We do this - * after updating bs->options, so bdrv_refresh_filename() (called - * from bdrv_set_backing_hd()) has the new values. - */ - if (reopen_state->replace_backing_bs) { - BlockDriverState *old_backing_bs =3D child_bs(bs->backing); - assert(!old_backing_bs || !old_backing_bs->implicit); - /* Abort the permission update on the backing bs we're detaching */ - if (old_backing_bs) { - bdrv_abort_perm_update(old_backing_bs); - } - bdrv_set_backing_hd(bs, reopen_state->new_backing_bs, &error_abort= ); - } - bdrv_refresh_limits(bs, NULL, NULL); } =20 diff --git a/block/file-posix.c b/block/file-posix.c index 20e14f8e96..10b71d9a13 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -175,7 +175,6 @@ typedef struct BDRVRawState { } BDRVRawState; =20 typedef struct BDRVRawReopenState { - int fd; int open_flags; bool drop_cache; bool check_cache_dropped; @@ -1075,7 +1074,6 @@ static int raw_reopen_prepare(BDRVReopenState *state, BDRVRawReopenState *rs; QemuOpts *opts; int ret; - Error *local_err =3D NULL; =20 assert(state !=3D NULL); assert(state->bs !=3D NULL); @@ -1101,32 +1099,18 @@ static int raw_reopen_prepare(BDRVReopenState *stat= e, * bdrv_reopen_prepare() will detect changes and complain. */ qemu_opts_to_qdict(opts, state->options); =20 - rs->fd =3D raw_reconfigure_getfd(state->bs, state->flags, &rs->open_fl= ags, - state->perm, true, &local_err); - if (local_err) { - error_propagate(errp, local_err); - ret =3D -1; - goto out; - } - - /* Fail already reopen_prepare() if we can't get a working O_DIRECT - * alignment with the new fd. */ - if (rs->fd !=3D -1) { - raw_probe_alignment(state->bs, rs->fd, &local_err); - if (local_err) { - error_propagate(errp, local_err); - ret =3D -EINVAL; - goto out_fd; - } - } + /* + * As part of reopen prepare we also want to create new fd by + * raw_reconfigure_getfd(). But it wants updated "perm", when in + * bdrv_reopen_multiple() .bdrv_reopen_prepare() callback called prior= to + * permission update. Happily, permission update is always a part (a s= eprate + * stage) of bdrv_reopen_multiple() so we can rely on this fact and + * reconfigure fd in raw_check_perm(). + */ =20 s->reopen_state =3D state; ret =3D 0; -out_fd: - if (ret < 0) { - qemu_close(rs->fd); - rs->fd =3D -1; - } + out: qemu_opts_del(opts); return ret; @@ -1140,10 +1124,6 @@ static void raw_reopen_commit(BDRVReopenState *state) s->drop_cache =3D rs->drop_cache; s->check_cache_dropped =3D rs->check_cache_dropped; s->open_flags =3D rs->open_flags; - - qemu_close(s->fd); - s->fd =3D rs->fd; - g_free(state->opaque); state->opaque =3D NULL; =20 @@ -1162,10 +1142,6 @@ static void raw_reopen_abort(BDRVReopenState *state) return; } =20 - if (rs->fd >=3D 0) { - qemu_close(rs->fd); - rs->fd =3D -1; - } g_free(state->opaque); state->opaque =3D NULL; =20 @@ -3073,39 +3049,30 @@ static int raw_check_perm(BlockDriverState *bs, uin= t64_t perm, uint64_t shared, Error **errp) { BDRVRawState *s =3D bs->opaque; - BDRVRawReopenState *rs =3D NULL; + int input_flags =3D s->reopen_state ? s->reopen_state->flags : bs->ope= n_flags; int open_flags; int ret; =20 - if (s->perm_change_fd) { + /* We may need a new fd if auto-read-only switches the mode */ + ret =3D raw_reconfigure_getfd(bs, input_flags, &open_flags, perm, + false, errp); + if (ret < 0) { + return ret; + } else if (ret !=3D s->fd) { + Error *local_err =3D NULL; + /* - * In the context of reopen, this function may be called several t= imes - * (directly and recursively while change permissions of the paren= t). - * This is even true for children that don't inherit from the orig= inal - * reopen node, so s->reopen_state is not set. - * - * Ignore all but the first call. + * Fail already check_perm() if we can't get a working O_DIRECT + * alignment with the new fd. */ - return 0; - } - - if (s->reopen_state) { - /* We already have a new file descriptor to set permissions for */ - assert(s->reopen_state->perm =3D=3D perm); - assert(s->reopen_state->shared_perm =3D=3D shared); - rs =3D s->reopen_state->opaque; - s->perm_change_fd =3D rs->fd; - s->perm_change_flags =3D rs->open_flags; - } else { - /* We may need a new fd if auto-read-only switches the mode */ - ret =3D raw_reconfigure_getfd(bs, bs->open_flags, &open_flags, per= m, - false, errp); - if (ret < 0) { - return ret; - } else if (ret !=3D s->fd) { - s->perm_change_fd =3D ret; - s->perm_change_flags =3D open_flags; + raw_probe_alignment(bs, ret, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return -EINVAL; } + + s->perm_change_fd =3D ret; + s->perm_change_flags =3D open_flags; } =20 /* Prepare permissions on old fd to avoid conflicts between old and ne= w, @@ -3127,7 +3094,7 @@ static int raw_check_perm(BlockDriverState *bs, uint6= 4_t perm, uint64_t shared, return 0; =20 fail: - if (s->perm_change_fd && !s->reopen_state) { + if (s->perm_change_fd) { qemu_close(s->perm_change_fd); } s->perm_change_fd =3D 0; @@ -3158,7 +3125,7 @@ static void raw_abort_perm_update(BlockDriverState *b= s) =20 /* For reopen, .bdrv_reopen_abort is called afterwards and will close * the file descriptor. */ - if (s->perm_change_fd && !s->reopen_state) { + if (s->perm_change_fd) { qemu_close(s->perm_change_fd); } s->perm_change_fd =3D 0; --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624225; cv=pass; d=zohomail.com; s=zohoarc; b=YPYnrDnY+QURT3SeYvpipK7RbAoIiPCCAWbOISNJxYs71ICCDjPiPueaVv1Mcsdsmo98WCIWDoVhSQam/azby4ITIkFv/pxow85D2soWGO/zpCop6P4afVmrvtQpedL14QqJ1keLnq+TmwJk0Ssnr9FGc3CWDOZvYxC0ScS1F3E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624225; 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=4SrOpvHDj9uB+6KY+IBytWoxfYGMZ+pPaELcA3PGUfY=; b=WXl+wdrLREzW5Eo6+JjJ4c8vTm3zOSKcvWltHDGE9yXtrC8AWm5kYfZCrCAT5X5ziOM+PukukGtPgDXDC6iHCVE+4EZ/cHXtvWui2oz1fV/zqd7Fu/8IPl25EeFljgO8mqwynaMF0HRyFuhP98YqjZ3bgsPgXXf2zlfO/aqlFc4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624225981511.2826649955133; Wed, 28 Apr 2021 08:37:05 -0700 (PDT) Received: from localhost ([::1]:53820 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmFM-0004fb-LU for importer@patchew.org; Wed, 28 Apr 2021 11:37:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58856) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyU-00061J-6L; Wed, 28 Apr 2021 11:19:38 -0400 Received: from mail-eopbgr80128.outbound.protection.outlook.com ([40.107.8.128]:24602 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 1lblyQ-00028J-N7; Wed, 28 Apr 2021 11:19:37 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:27 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:27 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n/oPCKCZQBOgubJAqqtTirV3wZjcuh6mqpVfWTCpukQpmGpOcQunvQgelhb6pD5kbVUXI60SCch5q08i18cZXjXqh29tZjc0wJ6WhgQuk7PUhUnEJP+TVDoXDY5TQiJA4JxAcqbDa8tiu9J9zf0Y+0iVRN+dAZEJ4Ni2NqOE5n+Ahjk9sLA7olC5mLCVLAApiHbIj7qRw9Ej6SIDHiQLsGGB32NQTXUs+sNPX+RDX9qDx9i28ed4/SwDboJRCECyxaV+iSZVoWF7SgvvonqMuPcpMJQUfnA9COA+67VSextS3nhsysqktgKIxP3rLt5bd641SM4c/UvZCivwfAoiSQ== 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=4SrOpvHDj9uB+6KY+IBytWoxfYGMZ+pPaELcA3PGUfY=; b=bskXAUSRZlWscmg4GOs5c+IOIYTo7qbQfoy7rxDNfJ//v5mBWvXvluYGIiOnigrFRQEzI0ejWr+YekhecGCvb6N4UuURX0tVhmwVfLjTEQoqUji9zfT7C8dEIXg3nERKXsufH99BK3rG0+lB1eY748huSN23EmyXzGSktXjW/I6jjxojYkDURUzh8zum3e5VhsRmWBIxMKwHxqaZmhTFc4P8nGd8MEAodKv3mt0owYc0B9niSP8X7rcn7jd/NFJrbU+DPtquTuGJ4XWLeJ2mNmOJplBi0e7ySYyr3bnr28rkkuZC4choJX6pNZ3ddTZWPZ6PDs9jpAlB5I9dXcyDUA== 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=4SrOpvHDj9uB+6KY+IBytWoxfYGMZ+pPaELcA3PGUfY=; b=SMQEnxDo+7qcuRFvQaHQK3Sp+Brdp7aExU/hABBDz4SmJJ5MsSKkn9f/lBfXLwgg37OJW3rew7R5zXBo1G4jLeRR19QtMaEKNKz6Tk3sg0DuBdfWbSq4YzXUlPW0bvcE/MhNyfL52xofUfn6uXqLzVHQFxaT9gjINXb+I1JiGuI= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 31/36] block: drop unused permission update functions Date: Wed, 28 Apr 2021 18:17:59 +0300 Message-Id: <20210428151804.439460-32-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: c3527dbf-bcd9-40e5-5ebc-08d90a58f1af X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VsiYOqAXrr2c7q93lC6RZRH8qZSTuIhQD1+yeJk9R3eiNcrpDA+vNhkqO/7+IfBK99AzqJagyzLQkjaDRSspQKbHoveLpxfxMOJA9tgLQKNFKWISCP9+GZcgLR1+dhttCpm8ZMO+ApBwd8FYjQSUhESg4JAKyFQaLpQ5CrnHyLAgV/50lnIal8VsLj4uhSIxhQmTeAE8PXKTgsgFdpEIXEFOTtUXYJIGuwoZX5bn+TNxgd6m/uPBAgy93SLGIKSYa+RlpLGveIQnfnXUuRt7lToHOW12zsSaVpCzULMwU48MNWL0W1vMRw1YzFmWZCJL/v2yYf4i/5BC/jcp46OhgZGxo1MYP/sFLYNgI1Rn3qWSH89jqrz+BjNeWBGwCz5CM8amqOVvKqVMMinqchcgPeC4sgnv0mMkaiOyDobX7EzBx2OO8hy5azAQlkX3g+daJQx1Da0YG7CyqaXhJQ4atYGmM48tSEUTrNLGZ9ih9AL0ot8JLKxo/fPrWsKCO9xcfXBc04h7KG9V+/zGhcOsZrwaA5x9VBBzpLZ1fXF0nc0d5+O4Iwu/B7TkC0AoqdEJb/21oR0nObifv9b6MTKgJDM/I/r9ZKkhn6cmZOE9HvuWzAyzntpcmTMR1QMSZHk6mxi/vXp3BE/MiTaJPumAvnqr1gC4PqNLUf/aqRNTjlYTHg33V1OTAeZbF7qHpAAo 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(15650500001)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?MC5kRuN61D1dwSTJnxOtbuZufZY4a0rBbeM/1D/zoZTar23G9Mt9r4Fh9dA/?= =?us-ascii?Q?86oaF7DDonLWP7v2HA8nw0MVlhLML/JUaNe02eoxLeQtpvkaLmHPfdblQF0u?= =?us-ascii?Q?ZrpUQm4WSgqDU8Bqp6TfhoMretdLaMSyiPknPulpSJQDwy2lI5zlGBtUKaJA?= =?us-ascii?Q?aYmskrdg/vPI0ubE86VJBpe2N8Ntd3D3NpCqKB3yg9UdcuUtwUkQSO4xFk7Z?= =?us-ascii?Q?JpfRqB0/jluywGla+qmVpoqBCIJcGe9mMBDbiu5hJsKBL318yjuyZ34oFkdc?= =?us-ascii?Q?ZtQC3+jja7hFpg+DAmgaScclyEj+1xrpMg0FKpyYNSrKJdw4WCDxqwDf6vps?= =?us-ascii?Q?7HGxrEBBhrJJHlt2SVNVIWS1LVQz8QVaS/h/hpdRKrrWnJY2muMgETswjlBJ?= =?us-ascii?Q?BHSmX8fWMsmzGKIRdm5c+Ww8YzQ9yUdKMRVv5iEu8yBHq/aBy0gDK/t/LMvc?= =?us-ascii?Q?598fwMBQxHYXaEKV3DNqzrB2PfuLGGCgMEEvTOihNhE77ZE8+9a229iZ+zrO?= =?us-ascii?Q?RJiRFyxzv3UA0TFUTk7Hv7fdamhNHkNAu9V/MVh0J29H7S+kzG+7UI2CddPt?= =?us-ascii?Q?ip7qvDmGTRspccUYNFFkQsyCAw6O22c1qA+gsfegMbcqwdk530ReySyG5tnb?= =?us-ascii?Q?xW3dl8I3tZlkg1fLI2l7L3BkwgSveqJ9K/nAGIXPwgGnLy1ebD97L4Bid9Fu?= =?us-ascii?Q?l2Oo7pUC0Tnhp20MrGF9nJRH8oA+XmOVhPQ+YeId+8nSPc6oaY7o+9vGkeYN?= =?us-ascii?Q?QjmSEqWZk1+m27l1S1/nEzql1pisbDt1FQB5TvbsldLtPlqoMBzKFi7PIjWb?= =?us-ascii?Q?Itli3wOM+z0TmTXDq04Z0y8yOFWuTBgsVieYKsCr6W9tTPt6K50/x5l6vqvb?= =?us-ascii?Q?QjqLKLyHtFJri5dABG8ACwJ7PCcDjGtANpUgT9SGHFI1TK5GJYf53q78VLKr?= =?us-ascii?Q?naH06LmJn2MLTnwpzIMpW8YKPO4WZT9WlBLgMa8QVerC79Zx8Mm7nSeE4CTI?= =?us-ascii?Q?g1DSHw44YyUmu1hwe2Clmr5yxL/X3NyFuHNMx50yqQzPhwBVgkMQGHv+DQwY?= =?us-ascii?Q?unPhwrVYi6+iAFwzqUlXRtbSM0MEcR3Y1eI71X8fR3S18VLaW1MWtEy2dLZ2?= =?us-ascii?Q?QFYCK4A0Gpk1hedoPcljJKk0iBF8rcuRo44LCWr8y7gKhONd6kbxAvq8NoHk?= =?us-ascii?Q?ubzMVEboCW560EwTfSlUDD0w+wsUQ9WWjN1xn8yS3LDOtCfDTkgTUiB/QKvv?= =?us-ascii?Q?UsbY0YqiMi+faC117hny5BXWeYsanuBEY5gzYVDhtzi/1cx0QQUX9agXcCOg?= =?us-ascii?Q?xzwhG4HG7BvouCpANXgk3Cu9?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3527dbf-bcd9-40e5-5ebc-08d90a58f1af X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:57.9361 (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: /+Z5kcWGj4MGzAYKTFsVcR9kwd53IFQBxsKsYwLjAm11YemyRTiWfFZhPXXpRLmdTBv/uF4sIml3hvXvmDhfZznkZtq6dFb8fExluwXJIc0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.128; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 103 -------------------------------------------------------- 1 file changed, 103 deletions(-) diff --git a/block.c b/block.c index ffaa367a1b..bf7c187435 100644 --- a/block.c +++ b/block.c @@ -1987,11 +1987,6 @@ static int bdrv_fill_options(QDict **options, const = char *filename, return 0; } =20 -static int bdrv_check_update_perm(BlockDriverState *bs, BlockReopenQueue *= q, - uint64_t new_used_perm, - uint64_t new_shared_perm, - Error **errp); - typedef struct BlockReopenQueueEntry { bool prepared; bool perms_checked; @@ -2426,56 +2421,12 @@ static int bdrv_check_perm_common(GSList *list, Blo= ckReopenQueue *q, return 0; } =20 -static int bdrv_check_perm(BlockDriverState *bs, BlockReopenQueue *q, - uint64_t cumulative_perms, - uint64_t cumulative_shared_perms, Error **errp) -{ - g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); - return bdrv_check_perm_common(list, q, true, cumulative_perms, - cumulative_shared_perms, NULL, errp); -} - static int bdrv_list_refresh_perms(GSList *list, BlockReopenQueue *q, Transaction *tran, Error **errp) { return bdrv_check_perm_common(list, q, false, 0, 0, tran, errp); } =20 -/* - * Notifies drivers that after a previous bdrv_check_perm() call, the - * permission update is not performed and any preparations made for it (e.= g. - * taken file locks) need to be undone. - */ -static void bdrv_node_abort_perm_update(BlockDriverState *bs) -{ - BlockDriver *drv =3D bs->drv; - BdrvChild *c; - - if (!drv) { - return; - } - - bdrv_drv_set_perm_abort(bs); - - QLIST_FOREACH(c, &bs->children, next) { - bdrv_child_set_perm_abort(c); - } -} - -static void bdrv_list_abort_perm_update(GSList *list) -{ - for ( ; list; list =3D list->next) { - bdrv_node_abort_perm_update((BlockDriverState *)list->data); - } -} - -__attribute__((unused)) -static void bdrv_abort_perm_update(BlockDriverState *bs) -{ - g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); - return bdrv_list_abort_perm_update(list); -} - static void bdrv_node_set_perm(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; @@ -2557,60 +2508,6 @@ char *bdrv_perm_names(uint64_t perm) return g_string_free(result, FALSE); } =20 -/* - * Checks whether a new reference to @bs can be added if the new user requ= ires - * @new_used_perm/@new_shared_perm as its permissions. If @ignore_children= is - * set, the BdrvChild objects in this list are ignored in the calculations; - * this allows checking permission updates for an existing reference. - * - * Needs to be followed by a call to either bdrv_set_perm() or - * bdrv_abort_perm_update(). */ -__attribute__((unused)) -static int bdrv_check_update_perm(BlockDriverState *bs, BlockReopenQueue *= q, - uint64_t new_used_perm, - uint64_t new_shared_perm, - Error **errp) -{ - BdrvChild *c; - uint64_t cumulative_perms =3D new_used_perm; - uint64_t cumulative_shared_perms =3D new_shared_perm; - - - /* There is no reason why anyone couldn't tolerate write_unchanged */ - assert(new_shared_perm & BLK_PERM_WRITE_UNCHANGED); - - QLIST_FOREACH(c, &bs->parents, next_parent) { - if ((new_used_perm & c->shared_perm) !=3D new_used_perm) { - char *user =3D bdrv_child_user_desc(c); - char *perm_names =3D bdrv_perm_names(new_used_perm & ~c->share= d_perm); - - error_setg(errp, "Conflicts with use by %s as '%s', which does= not " - "allow '%s' on %s", - user, c->name, perm_names, bdrv_get_node_name(c->bs= )); - g_free(user); - g_free(perm_names); - return -EPERM; - } - - if ((c->perm & new_shared_perm) !=3D c->perm) { - char *user =3D bdrv_child_user_desc(c); - char *perm_names =3D bdrv_perm_names(c->perm & ~new_shared_per= m); - - error_setg(errp, "Conflicts with use by %s as '%s', which uses= " - "'%s' on %s", - user, c->name, perm_names, bdrv_get_node_name(c->bs= )); - g_free(user); - g_free(perm_names); - return -EPERM; - } - - cumulative_perms |=3D c->perm; - cumulative_shared_perms &=3D c->shared_perm; - } - - return bdrv_check_perm(bs, q, cumulative_perms, cumulative_shared_perm= s, - errp); -} =20 static int bdrv_refresh_perms(BlockDriverState *bs, Error **errp) { --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619624688; cv=pass; d=zohomail.com; s=zohoarc; b=VilN0oeeyzcWAxeYAu/PWleL3GKQd2qCjB7Z2vhV30JWngBohTovS4UwrgEZ0TLn1/M7y9evCBWQlMKLTABxvmnLEo7STe1aoVqb5DL49x4WYuzaIvYjxTpPtLife65wVOMVsqT2d56GH40F5NBafp1bvpkiOmq3N6eGmV4PMP4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619624688; 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=AAa7mRfZthtbkAYjv2UjYrYLZtwF4DqlNNg342GHyDM=; b=W/TDexyiCoVv1OprBTMhdFuSS3mvVpVk98DQ39QWUgIn72wDPSjOhwZrwUaeqeFst/2rgA3L4r4+bPdFdVz3OIwhWZDPHcf8z1yzblBY13uZCimbVTZLbCC1Z5NGsEWMHbrZw4K7bnzBoPpnFbOeSBm9sn9Mdamaay26PjphMT4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619624688512172.51635303050534; Wed, 28 Apr 2021 08:44:48 -0700 (PDT) Received: from localhost ([::1]:43508 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmMp-0003kw-Kx for importer@patchew.org; Wed, 28 Apr 2021 11:44:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59004) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblya-0006HQ-I9; Wed, 28 Apr 2021 11:19:44 -0400 Received: from mail-eopbgr80128.outbound.protection.outlook.com ([40.107.8.128]:24602 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 1lblyV-00028J-5I; Wed, 28 Apr 2021 11:19:44 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:27 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:27 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RgwHab/WFiWMgGoqyF6z2hV6AvGs+WItJL3Lwaz8qGliYpU9gLRt8Ao8STujtLy6vVRfOeKcGCz850xsuuT7Q7FDHn8W69BZIeR20cukl5++ZDR2Pjszp1EGdtQMJl6U26n/Qp73o0UlP/NOXFV6B867yNIaWhttUjcS92h2Mx+K0ZRmqZCX433cgqCNPJ95KqIe1/HmEI8A7oXpWUH9gx3IM8uA2Tbd27kxfrfB1e1NGqye4vfBC8QkuGryfb/mMCbB/pv94O4TeXx7zgS2cQ7//w6iGvH3E309o46EABVh+KICEDSM5u7aJG7i8pyEy7mDE+u6FZXoKvCzS3G2Pg== 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=AAa7mRfZthtbkAYjv2UjYrYLZtwF4DqlNNg342GHyDM=; b=nTU78/js2S5IrR00tao0SKW738rRzSWhLKilYU/7eCz3q1DNU2iG7xdYktYBRx78kSXn3Pudv6jzxpoY73RiCgweIsqTZX2eUa42eeZfb78VWx8PPBBuWYd1BZdifUzPytVB3yXOpg7hx0Xq2ztVEGHcOrDMCVSnWUWYGjEuGF9nC/y8YPIPpgQmOm8JJ3h0G9tcWmNo6JsDQUEbnV6s35UXCumchCuGLBWvSOV9mtyRJeamZFXZKu5aLJeXLzrLinV9bbm8vARWRUxXlWXo0ZEOgFW/iiz8EoGYCIxOd/ZeesXdx+SYfjOqQjtndKKXMMsOIwxMAaNmuVTXQGx3IQ== 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=AAa7mRfZthtbkAYjv2UjYrYLZtwF4DqlNNg342GHyDM=; b=tsPE3JbrUmqW9Qr0txF+Rqkn2/WSGebEV9QpX8P/DfayuLcS5mnZJgW30Zt5PoKlxMCkqpBXshgM3kQygCX74WI10VKJ3mv6Wq1/9KH6aOwX8P56HnF30GpyoAvRkpGZfvY02PUF5+NEVYziGmm3KwNrM+cTsSnne6SWh9B9cHw= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 32/36] block: inline bdrv_check_perm_common() Date: Wed, 28 Apr 2021 18:18:00 +0300 Message-Id: <20210428151804.439460-33-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: e6291e9b-7755-411c-9f5b-08d90a58f257 X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2399; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W0200DS1Gjhj747w3Nnu26kSnKq4yQLMeQ+f6JlEID350s3EWJ5GVONc1K6Pco9jSlogXIYDOSMwRvabAO/QOjMaj88R1KZWCLYA/TfOtY9zvDwCuDfo5mSo/vxBzf1Robhq9Fc+GJ3SKZR+Bo5kCk8C7BTz0ejKd9BmIxNHn9FwAFhv/1Z78hQOY0i38PmzCcNMaQZ2xcpyttoMrYo5Cqc+GNNOcS1ozbE/rkWZE2xr6hzz/LjI515UyXklFzMyLcT7jg1g1wFnLoqFcBNw98GKqiIN81EwY4oG0MdCv245Z+X5wrgK0y7t4vhiMdJMqE6hfeOl4/aK0cBm5o+6lQUYFLgrYNTg6SaEuBu+Wtil8bfsPg2mLkLUmMvSG3nE/6qO/0UcEjlaNDNMO6582DC8bnJUNr/rymfuppjKBG8D5GcRaPt1IBQhel94ifvJrejqr4hIvtHVBqCA11Z55zGKLrU6g7PrRbI1yE1TqjXKzjyQVRNXfDypvqj1g1ePuVGqsa7TwVCsUyBXvwRrZ4vr5iGI5H94wWypa3azCMWKeVAVnPmv2doqDUo2uuEFY2B9SSE6TONJ7sy1JtNve98Ow8nqFF34sg+Gn0i9rZLvN4NK+PydagRaz9Apnr13796jvAcIuj1zljRrCqAh0ivJTmQk8OB/SsmbH9jU1Bg8gILHpebihp9JoBIyDugM 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(6666004)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?s9BnvwM8lJx6v20MLOeGABNSiBGRIeHEAX8DAVGOzrSh3NRbhuhJGjq7YzNL?= =?us-ascii?Q?lC1k2ptQ/vUiT1cs4Hvv/TbwCiUPLqKL1cfuZBdVHNiUZMQ/nL8f6K0f3XEB?= =?us-ascii?Q?1/I3MBJrKGVFUHD/rv5wy9/VjENn+/y+cXp+s7tUdy+1ouUk1RTlnrf/OzFd?= =?us-ascii?Q?gCNUDrAueZKGfs+YasoJA3ZCrC5i92FLrgKBB0zLgcYD+rhym6+LN2rR3Y8Z?= =?us-ascii?Q?GnVALXkaKGcvtM8RhohJcKeQWSXGjSSe0FWyIl9aH7FBvszH+FrHVgBtKI9s?= =?us-ascii?Q?f6oqw5TGuFOsSvD0ubUbETZe5Y3E35N/vhkHJoK6GzMiQCNhjLHTw/SLts8E?= =?us-ascii?Q?6aIsQT1wP3xvQsflYa1MHgXVJqTU3VVtmscxURl9ED0C0KBuuYJ1xRNYydxj?= =?us-ascii?Q?a1oBXD8naP+xIlz2447UxI616vgSxfd2OQiszpqAOvPZU6RpHMS2JfxWMIZ5?= =?us-ascii?Q?gBtfPHtb+rxCnQAqi0lV/Els+NsjkUFN9WLPnD7NyMszgc4X+6smMqwDD697?= =?us-ascii?Q?z2cI92LbRIOsZJS8A39eEs83qePPAkHPNtQqRz6iP9g9HhESVqTG1UVkoUle?= =?us-ascii?Q?es8gcmUWItkEkO5rjtW1g9b5E7bisWxlUEdh9x43oXADtLKR5j04dXv3dOdN?= =?us-ascii?Q?DqvzHKtKTNP9kGlPBpSJF9Ji6Jb25S7EPfXEaokAdCrsM8z+AtlqeQIN7u1I?= =?us-ascii?Q?qJ5ihIBNioOky4sPH5mBxaAz0F2IbjuKN7XmiBunx4ERkd5i7DXCWAUKYjcW?= =?us-ascii?Q?YPIZu/tQw+YryIeAihQj0twoFeYAdkv20IlYz5FCDlMHavgRk2/GeYqumKEL?= =?us-ascii?Q?A/70Cx9+IYxbVguNvvJq5IVRVCvShcS1AKxrCvyZWqSZJbfIBkBw1xWiIZFv?= =?us-ascii?Q?kXMt9cZfWttj9MCCN/yRCbnNyAguPu5/juA50I0saZb/nq3EsiV8vQounKe/?= =?us-ascii?Q?IqtWlm8pKDu/L6V4BtX6YFXIkQo8gKsASaZ1VRfkxjR96ZRMNYuLkna9i2BG?= =?us-ascii?Q?E89Dm8u1c1zoKAWyf6BEtZrfEaL2uNd2DoHopQKOmQNYMwYZxWKCNO3MVd8C?= =?us-ascii?Q?gijU+5YOTD1jnnfhLwUuO583vPY5NbHvQ73SKRHexjXT7iwb3fXb2UtaXQwy?= =?us-ascii?Q?KWeSIWXpGKqUQrVqZ6ySbeH88iwRDyQlV5CVd32DZpqlEBqnvGok7f6FFCq+?= =?us-ascii?Q?j1xerIgWyAin52Uj8cafF4N8XfjgA+YCzWk6yRiHGMmT59fBi/6za4/N9hbQ?= =?us-ascii?Q?+XJm4WYkHjs9KUvA3DoapYgDrLS9lmDpBSbfxCK0c0t0/ajI/FMB0Ml02WuH?= =?us-ascii?Q?R8Gz6iPLYJAz1mAbHV9P1kE0?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6291e9b-7755-411c-9f5b-08d90a58f257 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:18:59.0308 (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: dXG58zc6Z6gciZW7foQ//7kT5z3gkoM51RSggiY7fn5aUczP3aMvje3IwLCCvtqIhw3MfKFVXFMNCsYkmyDD0URKSWWBeU+fX4bxqgG0FuM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.128; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" bdrv_check_perm_common() has only one caller, so no more sense in "common". Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/block.c b/block.c index bf7c187435..38bd2ea32e 100644 --- a/block.c +++ b/block.c @@ -2373,33 +2373,13 @@ static int bdrv_node_check_perm(BlockDriverState *b= s, BlockReopenQueue *q, return 0; } =20 -/* - * If use_cumulative_perms is true, use cumulative_perms and - * cumulative_shared_perms for first element of the list. Otherwise just r= efresh - * all permissions. - */ -static int bdrv_check_perm_common(GSList *list, BlockReopenQueue *q, - bool use_cumulative_perms, - uint64_t cumulative_perms, - uint64_t cumulative_shared_perms, - Transaction *tran, Error **errp) +static int bdrv_list_refresh_perms(GSList *list, BlockReopenQueue *q, + Transaction *tran, Error **errp) { int ret; + uint64_t cumulative_perms, cumulative_shared_perms; BlockDriverState *bs; =20 - if (use_cumulative_perms) { - bs =3D list->data; - - ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, - cumulative_shared_perms, - tran, errp); - if (ret < 0) { - return ret; - } - - list =3D list->next; - } - for ( ; list; list =3D list->next) { bs =3D list->data; =20 @@ -2421,12 +2401,6 @@ static int bdrv_check_perm_common(GSList *list, Bloc= kReopenQueue *q, return 0; } =20 -static int bdrv_list_refresh_perms(GSList *list, BlockReopenQueue *q, - Transaction *tran, Error **errp) -{ - return bdrv_check_perm_common(list, q, false, 0, 0, tran, errp); -} - static void bdrv_node_set_perm(BlockDriverState *bs) { BlockDriver *drv =3D bs->drv; --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625519; cv=pass; d=zohomail.com; s=zohoarc; b=LIg9YPEjUW/YlCv0MGNPqRXNUNUIZmLr7P67d7nvEmYxFLlp7DuizHc2byYZaMCJ+budUR4behWgn/pLt9YEtMlgLvxb5i8hMXOSRWE7oWa2mx/TBbPuHVysv/zYk2keDcBbFVi0TxLYut1cf6GJ+D52pUhrgVH5Dv7irCA83hc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625519; 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=Ikeu1RPC46mmvepVCDkeSXzp2sllV6kQEIdiZdFgk0c=; b=QagcYXhnMtEInZjJ4eAUTk8vFj5IdGGJNwPi3fBCbWj8XFIyOtrglAPeWl0Q1LcSqzvU5rafsPV5yym4IZTIdfLhsnJm2UeqambgBldMLb5XnAez0M2Vf19nAfPPx5Zkh1lrtnmIWAJPL9N2j0el5xwrjV0Sri2balpi7GtYEXc= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619625519344666.2662154921533; Wed, 28 Apr 2021 08:58:39 -0700 (PDT) Received: from localhost ([::1]:41752 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmaE-0006n4-59 for importer@patchew.org; Wed, 28 Apr 2021 11:58:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59032) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyb-0006Kf-UR; Wed, 28 Apr 2021 11:19:46 -0400 Received: from mail-eopbgr80094.outbound.protection.outlook.com ([40.107.8.94]:21824 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 1lblyZ-00028Z-Op; Wed, 28 Apr 2021 11:19:45 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:28 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:27 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:18:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H9soIYySrMofi9RRK1vkqS5oi9Qni11pK5YsslcHsVAGyxEuZNoDLvGx1EdsuT1KbVd6eOw53hSug+pQoiZboFo0CGQcvD4QdZCOva4XY+ALeZagX1hAtgpBYf0ioGgvoMgNsRQB+QJpMk+UGo6HFn6stLU6Zmw9lkwlTNOq1PhMsdo6q2llErDs8dEkOYZmWPTGvVst4pK4wsXM2gAL8+tL75vNBkxXBJth9A4Pxh9QSo2eK1qeV6OIvXrg23OteBBnd4mqI3wWrsAhATWfBDTsrGxzGb7hrDzMzLFML8686+bcay0cIwfrYMA5OOLwrHnJmDVgZjwDJWxbcr9VgA== 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=Ikeu1RPC46mmvepVCDkeSXzp2sllV6kQEIdiZdFgk0c=; b=HO0S5Xwr/iKvPinBZjEvHQCK070a4sJ77JJeSvxXOcPx02Kv/7klMhaNYJAV3HqeCwWy1iq3pXG6gshiz+4qGrEFZZOn3I1UGn75cg4+j7kv89RQnJ/deCXiQoGeV1f+13K2fEr2k/AtTBagTSaoOG/FNnXkXrGwA+MMbY72CHmwwCQvZ5YlKmBxrdCGXX8Wtavn1AcVZ2j946ORdIphq5Yd8i5CtSt8tyWl0/1V/12fk6fH+14g+uXgVDwo08UYo1jWkWBXJ+x2SCDQDelwNpbhIpte/njSBykJ2aW1BcOtamrBhcM1eBMGYUeD9ocqE5Qp1rF7zm5w1L1YZsfyYQ== 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=Ikeu1RPC46mmvepVCDkeSXzp2sllV6kQEIdiZdFgk0c=; b=UyWy2sEr9Q6LwjwUBNE8K+oJhGX1pVUuODKlKn0zOcl5tav21L189Zn8cJwCJvo49BYGn9xRcutyrWsR0aitmyFj7XvGFEVst4zTG/GHi5FbY/vzFtJFn1fYy1gbe0lLF07pC9GJbv2mMPBdqN5gziZbfaCXHMkiWcnMDGahADQ= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 33/36] block: inline bdrv_replace_child() Date: Wed, 28 Apr 2021 18:18:01 +0300 Message-Id: <20210428151804.439460-34-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 3ebdaa74-ef78-4545-57b1-08d90a58f2f9 X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xefSDYSGiTwjynTo+8Fcvngm4CPahcvX00J/6Kvli72fajGwHb/22ZT7ZRS5yamgwKLN9wE6y7kWy53RC2j84NsiCBJe1A3oTw2tmg1FZd2+vdYYbTSaVthqZdswBLw3gZ0S02s1N3q/MhNkrigIoXlFQ92poV1dEOOPLJQb+d6MEDlfwEy/eCoZoZM5p9pqr04L2evRwy1gplobpWJAgjiuXcTXQLoTkN1Xac1QA3g1UK61SOFMDiMTfoP3/DTju66E5ZFQ7U3ZA+RL0uAuigqH6dd1sBfzERw3aOngjolT1m+lIxSU/ya3UdodMvOrsW24FKhHKbbw6dphw74/KNeUF4SmfbT/DaKBiUd9tV3lJ7SRlX1l79xGGPGIgEQpZljSk73ZKoD6XSR5EQVXct7qqelGsDMASq6KLeEnmWXu2ZsIFv45UWg0bfklD1tiq/NXIerr1I6PMkBTEfD+7Qn5/CIqXqn8J3NWEuNL4p/eYnyhL+Ze8EKBYNYaPJONOnc8M+KzBOofccq8zIgPmET78OYbZNwJH5e66OovqKlLc2pCmYHQyjMdo4srRvqsv/KATsd0EySc38QVW2l3AWLsZYZggYj0nG8YUEjcsn/FzRR2HrS141cN685p9PnXged7L2sfd7sheJHdIM1XgsVIVfgZlEpuGcEUVWHYGLpfL0wDm3V/uHubm/21eKya 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(6666004)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?IkqxqXCuH1JJxJX5fOElhey9m82NBBi3e2WlHdbE8VpOW3WHhtBQ9pprfjEe?= =?us-ascii?Q?qGawEEb3aHiKoMsHV2Ww1z/KVjoSGuvMYcqr+S7FPapbUIC8c+1k/RDrQimL?= =?us-ascii?Q?oMuaNgReq3cUaS1dxE5xci2UDYkk6Hpqbe0uw9JGSzZe5uteiZQltP+snYPM?= =?us-ascii?Q?D8sO/ABbJ1YM28fIsopSLiL6YxUCTaDuKprluhx4VOrhUf5dypEd8os7Hzwo?= =?us-ascii?Q?gMofmURtoOVrM9GmxWsGVdtrVCBOC03r5B2jlRzu4NVzORHDdWX9B1uSeycF?= =?us-ascii?Q?ar8wadHWFY7E3dTtM/e+88o7ihiEWEhDCCKTRsBojqH1tbWy413ZmJmIKULl?= =?us-ascii?Q?N96grpKFDpypxgqiV6iiWUVMfoqzBED3Q7p9ReCoMyh+0V/8dBLLgPQH3z7B?= =?us-ascii?Q?71zO6xL6AGNVHD0NNE4vpa+tBwE+WOIfm/HDiXiS/tlsAhj1YH1CjBSxcUeM?= =?us-ascii?Q?ew2mOEPCvA14CyfbartkPPhRYj8HJTvxlE15epUR8aLTyCD2gG1lws62Ym6Z?= =?us-ascii?Q?g6/n9Jv1tmNjjp4iYdYR+REXmClCj9aGN1IFB48yGmPCQ6QZScNlBxVx4tmT?= =?us-ascii?Q?lIhRKEPX55RT7+8Dfwx5RQTm/R32UzRiOlbgbuZe1N/2mBJVcAbuyc77wCGY?= =?us-ascii?Q?qh9ENGLZXaAzg1J0X+8VzXDkl7fk4WHRY1LJ7lpym4rf8hQcV6DCzxlqHEde?= =?us-ascii?Q?qhWCzB69uv43k0iN0DBfZMjZRqPk9bHoV9J6wO+/C8KG1OWOGmHxB48Aem9f?= =?us-ascii?Q?Bnzsl9L/LjZMBK9EPifad1xNAWBi/0gVPXRuHjbU1RHRq7wV3o4f7S4OP3KQ?= =?us-ascii?Q?3Bm+OkeVpjUDdXnjiLK7rhVXnjjecS3aFMdLI5x9r2cCZIetU4AE3zzg0omY?= =?us-ascii?Q?2uxw5u5YFw6dIoZi1culZLYVTKgjYmhHjpSC+b+iq+2PXkTTndeU+uRPplSn?= =?us-ascii?Q?ChIWYET5NqVkSWYJbyLzIEl6uovHa/B+9XyhZw9EY4UtBlqmoioB9QcWP3Gr?= =?us-ascii?Q?9XACKMImHBdjNNNA7qR/G3Nz8mWIX8hCb0inD4iYjNugon3e51vrNxJFf9Ix?= =?us-ascii?Q?3l9uaCelYzRz79ohDtSuYVaym+vUiZLFzJxm3uW2csf+/1x7CIHvy/8SRw4O?= =?us-ascii?Q?3yCAR9nuAPD/pbYc/EdDss62GEYK6SO/fw5tRGMu+AP8VJXkgi2hQpYYZlOc?= =?us-ascii?Q?43AeatCseJxM63J4ImfHlgfiPVGICzeHs3IAmmy/6mj5XfC2siNyzW83o8ge?= =?us-ascii?Q?grBkwXlLDMM5Ght+o7LxjIaDNUdHPiXMt3RuWzY1Hw9gckV731jSSZq+oGSF?= =?us-ascii?Q?WYltvhluXGQrvBbAE5POowp3?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ebdaa74-ef78-4545-57b1-08d90a58f2f9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:19:00.1369 (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: tfhWLgkX/RLBx5FIOIygTQQHhbWj72EiYGtojwST8wE7Ezngtt6aELJ/Q1qYGzH5yLvOq1p6+bUwXGiyU8g+PLfIaGXX9lUTaisr5MkTkuA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.94; 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) Content-Type: text/plain; charset="utf-8" bdrv_replace_child() has only one caller, the second argument is unused. Inline it now. This triggers deletion of some more unused interfaces. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 101 ++++++++++---------------------------------------------- 1 file changed, 18 insertions(+), 83 deletions(-) diff --git a/block.c b/block.c index 38bd2ea32e..2362c934a4 100644 --- a/block.c +++ b/block.c @@ -2401,42 +2401,6 @@ static int bdrv_list_refresh_perms(GSList *list, Blo= ckReopenQueue *q, return 0; } =20 -static void bdrv_node_set_perm(BlockDriverState *bs) -{ - BlockDriver *drv =3D bs->drv; - BdrvChild *c; - - if (!drv) { - return; - } - - bdrv_drv_set_perm_commit(bs); - - /* Drivers that never have children can omit .bdrv_child_perm() */ - if (!drv->bdrv_child_perm) { - assert(QLIST_EMPTY(&bs->children)); - return; - } - - /* Update all children */ - QLIST_FOREACH(c, &bs->children, next) { - bdrv_child_set_perm_commit(c); - } -} - -static void bdrv_list_set_perm(GSList *list) -{ - for ( ; list; list =3D list->next) { - bdrv_node_set_perm((BlockDriverState *)list->data); - } -} - -static void bdrv_set_perm(BlockDriverState *bs) -{ - g_autoptr(GSList) list =3D bdrv_topological_dfs(NULL, NULL, bs); - return bdrv_list_set_perm(list); -} - void bdrv_get_cumulative_perm(BlockDriverState *bs, uint64_t *perm, uint64_t *shared_perm) { @@ -2776,52 +2740,6 @@ static void bdrv_replace_child_noperm(BdrvChild *chi= ld, } } =20 -/* - * Updates @child to change its reference to point to @new_bs, including - * checking and applying the necessary permission updates both to the old = node - * and to @new_bs. - * - * NULL is passed as @new_bs for removing the reference before freeing @ch= ild. - * - * If @new_bs is not NULL, bdrv_check_perm() must be called beforehand, as= this - * function uses bdrv_set_perm() to update the permissions according to th= e new - * reference that @new_bs gets. - * - * Callers must ensure that child->frozen is false. - */ -static void bdrv_replace_child(BdrvChild *child, BlockDriverState *new_bs) -{ - BlockDriverState *old_bs =3D child->bs; - - /* Asserts that child->frozen =3D=3D false */ - bdrv_replace_child_noperm(child, new_bs); - - /* - * Start with the new node's permissions. If @new_bs is a (direct - * or indirect) child of @old_bs, we must complete the permission - * update on @new_bs before we loosen the restrictions on @old_bs. - * Otherwise, bdrv_check_perm() on @old_bs would re-initiate - * updating the permissions of @new_bs, and thus not purely loosen - * restrictions. - */ - if (new_bs) { - bdrv_set_perm(new_bs); - } - - if (old_bs) { - /* - * Update permissions for old node. We're just taking a parent awa= y, so - * we're loosening restrictions. Errors of permission update are n= ot - * fatal in this case, ignore them. - */ - bdrv_refresh_perms(old_bs, NULL); - - /* When the parent requiring a non-default AioContext is removed, = the - * node moves back to the main AioContext */ - bdrv_try_set_aio_context(old_bs, qemu_get_aio_context(), NULL); - } -} - static void bdrv_child_free(void *opaque) { BdrvChild *c =3D opaque; @@ -2989,8 +2907,25 @@ static int bdrv_attach_child_noperm(BlockDriverState= *parent_bs, =20 static void bdrv_detach_child(BdrvChild *child) { - bdrv_replace_child(child, NULL); + BlockDriverState *old_bs =3D child->bs; + + bdrv_replace_child_noperm(child, NULL); bdrv_remove_empty_child(child); + + if (old_bs) { + /* + * Update permissions for old node. We're just taking a parent awa= y, so + * we're loosening restrictions. Errors of permission update are n= ot + * fatal in this case, ignore them. + */ + bdrv_refresh_perms(old_bs, NULL); + + /* + * When the parent requiring a non-default AioContext is removed, = the + * node moves back to the main AioContext + */ + bdrv_try_set_aio_context(old_bs, qemu_get_aio_context(), NULL); + } } =20 /* --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619625299; cv=pass; d=zohomail.com; s=zohoarc; b=AflDKqw/TRSZ8kUHZ8plI/cbB1qHz90fD0E6KG1UEQwtW2tN+osDdatgMUA90PX/KSUjF6ojnLF6CCtQpiJvbhlvga9Uc9La7x+OFslMd41UBf8CT/8D8i96sM0vBKFNRmlTXGOvPDvJ9RtuqfnPeoDIQKWUHf8JzwrGox9A/dI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619625299; 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=m6vuoQIe0tQV7yLL+G4SjbAzhdWhbluMfu4NnBUWWuQ=; b=PKd4gNTPgxjh4larjxsHavxOvCy3GoPCty/wVuia6uGcXyVpdIrwxubx6KIaAkr4MdP3uAXwS8aGrIm/U08LFkOJx+ID/suLz8YmQGwpZTpapgFNpOSTMjMWZjJNtoBKpjG6fACsvXWo1om5wFaFUGGmzqcdKWm3/dTOA1eto4w= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161962529976812.209268830301085; Wed, 28 Apr 2021 08:54:59 -0700 (PDT) Received: from localhost ([::1]:60712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmWg-0002ub-FJ for importer@patchew.org; Wed, 28 Apr 2021 11:54:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59082) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyj-0006PA-Sw; Wed, 28 Apr 2021 11:19:53 -0400 Received: from mail-eopbgr80128.outbound.protection.outlook.com ([40.107.8.128]:24602 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 1lblyb-00028J-FY; Wed, 28 Apr 2021 11:19:48 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:28 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:28 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:19:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XCz1NFUrJzdM7zeB8957s2BYVG/4GtkMT8sdJMOzI7E2VGJ2tL01uZTEQ+xYLUjbVS+VppXr95R4BQ0hx9moclmcM/0q2438QD8CNWrgzJykR9Np/vXnjniDystFQh8YrHfMo2o3A0e5/oH+GFSMKz9FjLcXjG5skMi7AwYU6AKB1eaAIP92O5DoGLCXQ23pvpB25CJTWoRJlYSGE14ynDBWTPdhDEa1qh8YC3v/gEF3Vb+Iexhvu2sfCcsBPMH+6V6kZwTvSGn9oBmS5tPVtWuQ/EkCsh14uGlxvvXD29ucdQHvyeaE8rdhHJUDIFOg8YoJbH9FjTfDUdbD2SBvHg== 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=m6vuoQIe0tQV7yLL+G4SjbAzhdWhbluMfu4NnBUWWuQ=; b=NAoapUUk1h9f9IqsZzlI+EATZzybusYA00vterNmj7jqCn1U4PvJP9Z8SJiR67m15aFlRRGEovnLZjFsapL7SdnUbGt2FusZirt4Tr46Nxz7Mrzqv8HmGQqGap/nSiM2CboyiF/KOsJ+RG75+rBF7zTBDFnXJzTo49hVkbrIuLSZ1KHSu2cG19BWbRMANSjKfxi2EEkN6REmosSigvOj4cWJRlyMDKtrjR2YahiIOnL6ywMZObd+caylsN4LFnRn6ita1PbmMgHAyU3JfNWzp2b7Mn8+6tOUzsRIoR4Du0OAMSUAvqoXM5UeXfDGyV1Yy0jHjzjRVdkjr+bqva5Qsg== 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=m6vuoQIe0tQV7yLL+G4SjbAzhdWhbluMfu4NnBUWWuQ=; b=uIEzU1/dT5jLLWq2IjDUMEPSDLSNiWdZAs2qmtjvOimJN5pvLwcgdaMnPTAzQ2Oc4ojrhe/VCXUI6T+K7Tf3icp6mb5/enz7J213ZZ2dgMw0IDTpbdDuPnV3ljXwBX6JDKdGO8UJ8BVdcIOVS4WZkVjsOTI3pUVFGS2hQQNf00o= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 34/36] block: refactor bdrv_child_set_perm_safe() transaction action Date: Wed, 28 Apr 2021 18:18:02 +0300 Message-Id: <20210428151804.439460-35-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 93947dfb-f9d5-4abb-4b03-08d90a58f3ad X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:161; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PIOjUfxXjiCIaaACDkAFsCP4e9Bbw/imW07yYVKR8qzqzojfEfaNJHl0IhkzOTkatIAnszY6Zo+hH6C0rDuCCdWXFyMtsX3jDxSlBRam/xlPoXx9/7nYRw+qzWGsfx0MNTVF5biMdUs9QUVcn8D3dvn8BMuNxsHYg5CPnw2OyMK0ZqRj69b+8IumJ1k0IjLiJ4XFSgUMozor3Ohubg0DFIuXcMft5g3fr9orHf9mV2U3R2sFKG3meaq0mMC5ujgi5dy8DSlT9AcaMveIjLBfVh+ckJXNWly2rYhg1k3em6pC6yt5PeZg5KlXw0uztbM+RWfu3YEciMazaBx79FAfzn8bPekm0wEV3WYYNQSlKKXfrtrZIwMm7ZI9dPA7P7oCLslMoQNQXSBRVa3wFGmlnRv71HEQgWAKoMjRTsyBglRPylSBxWFg7kHbAm0yiGam8WgIwnrSZwGMzGVidJbrmJRQ30iXO1pccqk2p//va7AFJHQAKqTzwUx2tyf+qIncXje4OY2MY3YF5cCO+738+INiduujRj18XYbHkjUuSGeDgfcLMxDP2siQepUu4CgvnULn9HPdQQ6Jrb0MvZobAud9dhVt9OsdnJogMic46F6mF27Qha70B5S1TNdonb4ftsOggZmhYxcn+6KqMqIFjAuW4fkqPSSKGjNE2rFrnCD6S+6sN/xgijT+dcH+yyKD 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?SM90a/hbC//jwVFQq2xgBK1Het6B5bfVquFgW0npix5T2/2msWTVtbSTkGqj?= =?us-ascii?Q?qFLQNhD3T7iSVK9FsSdyAxvdnHgfUgwzqO4eQQx2MyiD6hiYvABMOhE5UPvf?= =?us-ascii?Q?2GFY+PUWz75A0+mgM1F19r2P38ZpwN/TLFCqU8FMo8nFQ0wkH463+aywfmJD?= =?us-ascii?Q?KM4bDtgSGNDPeAVUWAE9wGuziLq1F1adpWrHXL6LysY/FHiPn8nzeOqA9osE?= =?us-ascii?Q?7eM3TXY1OWxozyadyAtSX+jF47r0xnfeGxXv85lFLj3OcxOc87wahEolJtAb?= =?us-ascii?Q?kUFxl2xNn0m9EmWfM8pa0tTZtjPd4PN1tm2Tl97wthrwqp4RCJpuUEExHfjJ?= =?us-ascii?Q?vjjKhg1NLnpticuU5m9KZ9iuTwfKw0uXGdlKtXyg2EyM/jbNUPQtugjSUnaQ?= =?us-ascii?Q?jtMLZGmpEkhMdcDwqgVc22eF77YvFeaP7Ykk9cVgUIoVF22feElOXfMJylBL?= =?us-ascii?Q?52A21qvi8GxuDV4hb4nN5QamQcx3km5rhIY0le/ZKatMcJUDBjEboByXIo5Q?= =?us-ascii?Q?3Fyuo4rw1x+a5J/2pq5djM7IVdEP/EKQ7j8gZzBO9kNYZK7466p4dC65Tr41?= =?us-ascii?Q?XK9v+8KAiueToBCGX88yP8dfsUPgIYG93DFiyXAmDOJ1HS4N3E3+C+0byN9C?= =?us-ascii?Q?hxgzJCzLBsaHMcqXKCXNILPEItyDd86ukPMBGFuaAnv2lh2n6NZqFY95Uyaa?= =?us-ascii?Q?XQCv8hqaV1oG4oxpEOIuoQzFkARYtEREkjAbFnvDSK8jkVEVqiGUHuefJcG4?= =?us-ascii?Q?Nxmt2Lt0EohUC3kuUJJbWR8gKmcfWBoO4DMcQPGs1mB9QE669IFwx6XdD8Vz?= =?us-ascii?Q?tquprl9s73q9bmqG5qdSyoMF/GzUaemM3ZhkEonfXP+Cq/OXLeG+mJPQ0GeK?= =?us-ascii?Q?TJFNG3BDsgrRE0smMFSU+/8zuU1zyS4Q7CMesaxrEvWVr0wpS1kApwHL6qam?= =?us-ascii?Q?/el/XflPLnhTEEkVZxyn0HSKOLuHZRZO+85jaYfNIqFlb1sF4x/KLdzkUPdT?= =?us-ascii?Q?jII4tRtXfoQGzFJUhDT9xWYA8adButaUWEY7aHlEHcZMmceMo9BTEYd7apGW?= =?us-ascii?Q?SsjPb03JRuHpW+mL2x95w9f0KXmAnNUlyZfaKr4CFS8oAZ/lPkVeoYZYp64p?= =?us-ascii?Q?IJkZQZxg9Q23UE+hsL2am58F7VEhVm/4WyzfFaZpbNfssbD1ouJLBpxHQXPT?= =?us-ascii?Q?jtNb5Vw7Kj8ZEkY3FggYfhj/tTcRW5GtUknyM3nSopQWxi11N4MURgPgWg1C?= =?us-ascii?Q?ZltvryMLGAMyO+RtHih6UrUJMbzHELwu6l5ZDFoDPr0nwBpdIHahN43bQ3JD?= =?us-ascii?Q?dADmOGU1i7NxIObYRqFyqln+?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93947dfb-f9d5-4abb-4b03-08d90a58f3ad X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:19:01.2550 (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: W7ez4DXRxkN+DJYrBTjoUn6t/TISbaLww5mUhtM+yHchYhjC42IKor+66DQ6cWNgaXsQWJpAwxHntfv9cvMFPCEGqupq61dqwEeUjxP98lA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.128; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Old interfaces dropped, nobody directly calls bdrv_child_set_perm_abort() and bdrv_child_set_perm_commit(), so we can use personal state structure for the action and stop exploiting BdrvChild structure. Also, drop "_safe" suffix which is redundant now. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- include/block/block_int.h | 5 ---- block.c | 63 ++++++++++++++------------------------- 2 files changed, 22 insertions(+), 46 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index dd2de6bd1d..c823f5b1b3 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -813,11 +813,6 @@ struct BdrvChild { */ uint64_t shared_perm; =20 - /* backup of permissions during permission update procedure */ - bool has_backup_perm; - uint64_t backup_perm; - uint64_t backup_shared_perm; - /* * This link is frozen: the child can neither be replaced nor * detached from the parent. diff --git a/block.c b/block.c index 2362c934a4..7b2a8844f6 100644 --- a/block.c +++ b/block.c @@ -2135,59 +2135,40 @@ static GSList *bdrv_topological_dfs(GSList *list, G= HashTable *found, return g_slist_prepend(list, bs); } =20 -static void bdrv_child_set_perm_commit(void *opaque) -{ - BdrvChild *c =3D opaque; - - c->has_backup_perm =3D false; -} +typedef struct BdrvChildSetPermState { + BdrvChild *child; + uint64_t old_perm; + uint64_t old_shared_perm; +} BdrvChildSetPermState; =20 static void bdrv_child_set_perm_abort(void *opaque) { - BdrvChild *c =3D opaque; - /* - * We may have child->has_backup_perm unset at this point, as in case = of - * _check_ stage of permission update failure we may _check_ not the w= hole - * subtree. Still, _abort_ is called on the whole subtree anyway. - */ - if (c->has_backup_perm) { - c->perm =3D c->backup_perm; - c->shared_perm =3D c->backup_shared_perm; - c->has_backup_perm =3D false; - } + BdrvChildSetPermState *s =3D opaque; + + s->child->perm =3D s->old_perm; + s->child->shared_perm =3D s->old_shared_perm; } =20 static TransactionActionDrv bdrv_child_set_pem_drv =3D { .abort =3D bdrv_child_set_perm_abort, - .commit =3D bdrv_child_set_perm_commit, + .clean =3D g_free, }; =20 -/* - * With tran=3DNULL needs to be followed by direct call to either - * bdrv_child_set_perm_commit() or bdrv_child_set_perm_abort(). - * - * With non-NULL tran needs to be followed by tran_abort() or tran_commit() - * instead. - */ -static void bdrv_child_set_perm_safe(BdrvChild *c, uint64_t perm, - uint64_t shared, Transaction *tran) +static void bdrv_child_set_perm(BdrvChild *c, uint64_t perm, + uint64_t shared, Transaction *tran) { - if (!c->has_backup_perm) { - c->has_backup_perm =3D true; - c->backup_perm =3D c->perm; - c->backup_shared_perm =3D c->shared_perm; - } - /* - * Note: it's OK if c->has_backup_perm was already set, as we can find= the - * same c twice during check_perm procedure - */ + BdrvChildSetPermState *s =3D g_new(BdrvChildSetPermState, 1); + + *s =3D (BdrvChildSetPermState) { + .child =3D c, + .old_perm =3D c->perm, + .old_shared_perm =3D c->shared_perm, + }; =20 c->perm =3D perm; c->shared_perm =3D shared; =20 - if (tran) { - tran_add(tran, &bdrv_child_set_pem_drv, c); - } + tran_add(tran, &bdrv_child_set_pem_drv, s); } =20 static void bdrv_drv_set_perm_commit(void *opaque) @@ -2367,7 +2348,7 @@ static int bdrv_node_check_perm(BlockDriverState *bs,= BlockReopenQueue *q, bdrv_child_perm(bs, c->bs, c, c->role, q, cumulative_perms, cumulative_shared_perms, &cur_perm, &cur_shared); - bdrv_child_set_perm_safe(c, cur_perm, cur_shared, tran); + bdrv_child_set_perm(c, cur_perm, cur_shared, tran); } =20 return 0; @@ -2466,7 +2447,7 @@ int bdrv_child_try_set_perm(BdrvChild *c, uint64_t pe= rm, uint64_t shared, Transaction *tran =3D tran_new(); int ret; =20 - bdrv_child_set_perm_safe(c, perm, shared, tran); + bdrv_child_set_perm(c, perm, shared, tran); =20 ret =3D bdrv_refresh_perms(c->bs, &local_err); =20 --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619626292; cv=pass; d=zohomail.com; s=zohoarc; b=aL75pMNkhuENDeH82GqKZ2bEk8TeyHvKTCszZNzBhxqhzwVD/PpxfYkPskoC37Trxo9WmWqqT0b6NUub+h2ZNUlfoENfg5Brkmy7/8n83npvd7QIxToeyczNT7Z1jhDQQC/GJ06W57KtuWg5xT+mb9nQFg9dflme1/sZV0GEKAQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619626292; 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=Z2El6aohLf3zkooI+U3WT8q1gOu9wmm5ElO9J3szcBo=; b=JrcNbSfR73p1rT1lc6D6CQZ3d9bVp2OOO1UT1pbktVcalFqw4SP02pVlTDgfC1EtdXgATvWfn50yFBK8iJusjZuajZ3uhgsp8pzEtWRkeyeUy1lTc0jnkCHEeRE4ZE7JLOYVfIZ5xXCZox5T5fB98gjlfzP14rDA74ILW2eOzFE= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619626292956778.1859991825243; Wed, 28 Apr 2021 09:11:32 -0700 (PDT) Received: from localhost ([::1]:41482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmmh-0001o4-HP for importer@patchew.org; Wed, 28 Apr 2021 12:11:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59094) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyk-0006Qr-DM; Wed, 28 Apr 2021 11:19:54 -0400 Received: from mail-eopbgr80094.outbound.protection.outlook.com ([40.107.8.94]:21824 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 1lblyc-00028Z-N5; Wed, 28 Apr 2021 11:19:54 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:28 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:28 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:19:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GyrnKu62vKDp/nfMQ87Le28xUyaUOZ7uZYSCtLPazsHYGCS/8rVoTWuYQ1XUCAv/NF8vyq1O4RT3E8I+mDj2LqtBVB5jwq6fMdKQ30t5/QETmhBpQtFT3uSlMIJTh+gQ5RTaeTC72Hib4vKAcwvfM9WcPv3FJiuWhUfJgV7dqhHZ0Q8zrKuzZrgxeV+Z6oDWZnUTHUXHHEtdi0ONC5jGoRnnbg90kyxfemHezdIVh7hO0nXYG0FxtyHIngnFBBdXPvC0HXe8E+L4yJt1kAm/RIhE+I9v4BxHKFlgE5bn4p3JIbn7JpSf2hQ4+BVJL4SEOop/Mobusl6if8x/0+YVSA== 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=Z2El6aohLf3zkooI+U3WT8q1gOu9wmm5ElO9J3szcBo=; b=WnQg3foEyW5fqvhnTgF0HmYKvvHLDK3YFpg/hz+aR05qG/cje9EzXTXyPDuaFoTsoarOflDsKiqt2k4Qq5Q6PeXVevnrAzO012nIvbdFi/oJD4sKCMmh0hiSY2W3wEYkYopTtXkdQmFRRbbYbRrjawSvbawLuk+4btCYebWi0dATmqCpojmNhQlWye2Lez3jqR2H5CtVCQ40elMJE1MrCgWAJz+5G6IxFUtIPvF0LoNRzNtTIpR5JuMA63YMoCyfyNSQHYdn0eUNPzme+AkgFOvCV7aMkxZ7iYArFh7JDb00ImHW5gFWHXkWceRxUL07N0YbY/a54632vL4Qap4gyA== 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=Z2El6aohLf3zkooI+U3WT8q1gOu9wmm5ElO9J3szcBo=; b=TSRs5WA9aX7UeJRbase4tIv6t7I+lraxGfe2OAkal2fsuHG+nItylR2PIc4wGF6axCD+HHC6+xuNcQgsu77lX/lJHPe9MobYK0Ok7WjJmIUpsTGXB9a565ZsL0GNj10DlaEBGQSnIoJGDwN3As9JH0GwK+6QtqxZ90gGKCbU8lI= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 35/36] block: rename bdrv_replace_child_safe() to bdrv_replace_child() Date: Wed, 28 Apr 2021 18:18:03 +0300 Message-Id: <20210428151804.439460-36-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: 2db223e3-dd36-4415-d2c4-08d90a58f451 X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:24; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rzukEBDAfGJvVpyabfMDVRqw77fFlqwJk4l+Rbh3uLGuK08ufziBMo3so1e3lV+gCyl9RcminF/Rv2ivKYSmBNY1oJ5VAnNEfIm5gJh8dMjLsEUKHif5bMVsU2UpgRNsAePm4qzLLmpqE9URrcaDpnR3Uorea3FyvUIC7vaXpk/8/NAUKr0teMUQI9/weHnfeIepLERyDc6TyeZrtda+TdplMHOTBCv7oO57G7hHdzudI5aExLuYUfSWJi5m6yYWWBpCZDlXdjvTRYJVeWxAYJJajz5JKDtExLcTXHK/nKRNJD6FIIQLnLsRBJ/lOE+ehfYU/O28gEBjDIIsql67/rlFqdDo1ahun7MC5RGgz4LsxByUmamR7LcS1LnqjAwxu3aFHm49TZVc6BKXnEBZgEvl1wkhtIvQhMxHo/8TtJZTkVeKB1rIq8Ky1UkIxWBOlfvZEsda7OT0+XKrWnxVtSDoH9+rQHq+WANbo3hQIYvTmYpnUvAruktbWJpxJstb5w84H8ZGgtXt0V/Ml7lh5a6h6dCNWyQ6zev3rB1rkXblepnrGAmwVp9NuV/xLyBnm9t1ayhJMRGhnvNLh+YExg/wYuNz9a33It76bHuD1OQJ+EKpDTKQG6WY9h6jxT2F3lWYeYVqG1MEK4Cr25I+XAk8h2rcyj6uJegtwrvtGnERwl4RT+aouhT07rxr7+va 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Dl8wI2AiY1SVablHk33mQCsxkvciFhiF+bHJqPDETqnkOIouS4IEI5+O89LQ?= =?us-ascii?Q?+S/e1M/s2A8tyvwCWoGv7oW2jDMqru5WZ4jIUYVTftqi/vpWfYjUg1RlMFrC?= =?us-ascii?Q?TyIODz2DGP99wu2Y1mjn31RdTRrqiY7+ytx8F5Sf4EjAfYL/0CBL/8OVYogX?= =?us-ascii?Q?MDj11OLUZT/INnQ2dJWg8F1S3VjBf9LWYq/1MGBPta8TWTXMGKdr6TwN6EmC?= =?us-ascii?Q?nkk/m14DS25oWCfIUT5HPaUH9pjv2FaC6XVLmbdaxY5Dfit0LqMP6WdP4vUL?= =?us-ascii?Q?ouGhxzFM+VNPJfXpdl2XgoTXvQTYt9wXaf6CmVUrjWErOQonOnz1TDh2gDJz?= =?us-ascii?Q?e+IRzj9t1NL5r7/hRPsa2JQT4Y3903KPSNZxebNfRmZuujkDMr7H1Ci7mVHG?= =?us-ascii?Q?8fB7jtD7f8ifCD0hqlK6f4F7wuKLgGYqzVcbxJFToY33TkT3jFrrKmhBIAGp?= =?us-ascii?Q?WvWqGXGuMuQSf4giL1DroY6FGcmoCX7pcf+L9HfiCAyJQRa/xrgdTEf2MRvD?= =?us-ascii?Q?4jysiG9L94aBsowAxjzqQITUZwfwJWFIynZy/e27kuYAHq0posZbnDzAjTD5?= =?us-ascii?Q?KXrBV2AWtEQdgtwvcXjXTNc3ueQsKCQvVvTYGeD9GKQybUZdWZjnieX+0DfW?= =?us-ascii?Q?BvUTFZL5cQ84NXZVKyUknQ4tV93eBKS+XJ2kx+aFizA/gkYSgv+pkp4F2/fl?= =?us-ascii?Q?WmSEQVtp8C4ycLjNqvSItCNBLWlEYXa4hFgXJkLH7gNXJ1YyR5kXVtsZ3slO?= =?us-ascii?Q?ANpdhtMRImpRjYXq7HoVOudgMYdYk9SyTDNmAKPyMHtfYgRxqG3fOOotsLYs?= =?us-ascii?Q?3uxj4cfiABJWhM1gFS62VIY7ixxyjri5B0J+F+37cb5NMc0lTV+NQOuZf2lb?= =?us-ascii?Q?2Q7LEkxsHenqxPI8AhW0mToNSdOu9YWXF4NGrcExcjxDZ04AB0bIXY9SQ1hE?= =?us-ascii?Q?3uiqOykaR2CjD6lmmRXSz8YuZZu6K6ZGBw46W94thNvYhgs2n28KQ7EEx/tL?= =?us-ascii?Q?5z4YEiljq3HMf3MGGiefkWg4kHwiFbqm5Uhm9DfD6B8kD+VFCWgV1hGQGSbj?= =?us-ascii?Q?RNsIgZI5ZELAjSm2EYAzSImKC9Em1FyVtk7AJNyxxf1dKzpagOCkaVOzidqp?= =?us-ascii?Q?JUdXJ6itE7F0M18lHYGLuVDS95mxDZtIOvEMCYDUqkgsQhVYxmKp6Yr5NQj2?= =?us-ascii?Q?YRcFvglQXhfW3Yx6Es7P+xQMIFfnGA1dp5NtLTlHz/Df6ISILcll43+rRjsp?= =?us-ascii?Q?q4oxphxrACRVsWQS71MBYN2JH3J2nVxmbTNCbCNZCBz43FOKBw3zU0RbhZEI?= =?us-ascii?Q?oww94n7DYtEAUl3Ojx0mqhGV?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2db223e3-dd36-4415-d2c4-08d90a58f451 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:19:02.3452 (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: yXaf/l7gks+haXrcydKxb26NeCWGFLqSLsMZhS9qeoupQ55N51+wyVXtYgzeR26jxGy1C+MXxXJFl74zHbLxrWybU3f+HJQdF576yxzWJd4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.94; 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) Content-Type: text/plain; charset="utf-8" We don't have bdrv_replace_child(), so it's time for bdrv_replace_child_safe() to take its place. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/block.c b/block.c index 7b2a8844f6..df8fa6003c 100644 --- a/block.c +++ b/block.c @@ -2248,12 +2248,12 @@ static TransactionActionDrv bdrv_replace_child_drv = =3D { }; =20 /* - * bdrv_replace_child_safe + * bdrv_replace_child * * Note: real unref of old_bs is done only on commit. */ -static void bdrv_replace_child_safe(BdrvChild *child, BlockDriverState *ne= w_bs, - Transaction *tran) +static void bdrv_replace_child(BdrvChild *child, BlockDriverState *new_bs, + Transaction *tran) { BdrvReplaceChildState *s =3D g_new(BdrvReplaceChildState, 1); *s =3D (BdrvReplaceChildState) { @@ -4803,7 +4803,7 @@ static void bdrv_remove_filter_or_cow_child(BlockDriv= erState *bs, } =20 if (child->bs) { - bdrv_replace_child_safe(child, NULL, tran); + bdrv_replace_child(child, NULL, tran); } =20 s =3D g_new(BdrvRemoveFilterOrCowChild, 1); @@ -4843,7 +4843,7 @@ static int bdrv_replace_node_noperm(BlockDriverState = *from, c->name, from->node_name); return -EPERM; } - bdrv_replace_child_safe(c, to, tran); + bdrv_replace_child(c, to, tran); } =20 return 0; --=20 2.29.2 From nobody Sun May 5 10:02:09 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1619626085; cv=pass; d=zohomail.com; s=zohoarc; b=YqmtGyKR0EHtYuJeqB4rPVJUdG+3BIL4KV+GXCiqKVb3aAkGLJdMK9FMFnjGMhm3BvLzB1wqd/zD7jA3AvJFdcZY88v8ukstlHuRb7GESWk7xcJeMT9g2zAnFdCdwVsOtCK6LwEajpIRZw6XFNvu3AjWeaKyP4Pe0cH39JwMB7s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619626085; 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=8cj3qhNFhekB51M25WI/oMFAWIR/Q9rcJDeUpCQ20iA=; b=lsBzXhhcHbaAaGJYS55D1w/TL5zx+GiubhUlth0LEBjfn/3psuEP/oFpU0E7Xmg9486lVpSG4pMuf4q+OpsVLxeo+SLLLE/YPfKkQpjSTSani1v9iAiije+mIESV0H4f38iLsrFaHw4JxbX2IbuzGNrHZ6ivywgZ5MMQqhVkWBE= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1619626085490334.05387151806417; Wed, 28 Apr 2021 09:08:05 -0700 (PDT) Received: from localhost ([::1]:60322 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbmjL-0006Iq-Dm for importer@patchew.org; Wed, 28 Apr 2021 12:08:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59116) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lblyn-0006Zl-Vc; Wed, 28 Apr 2021 11:19:58 -0400 Received: from mail-eopbgr80128.outbound.protection.outlook.com ([40.107.8.128]:24602 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 1lblyk-00028J-LS; Wed, 28 Apr 2021 11:19:57 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM5PR0802MB2419.eurprd08.prod.outlook.com (2603:10a6:203:a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.26; Wed, 28 Apr 2021 15:19:29 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 15:19:29 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Wed, 28 Apr 2021 15:19:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M3LKGxxuOs82qHQnvnhi85w+931MsXvzeTBj6j5YSJFU/ghN6eSAzH/N64C4KnYaC+9qQv/ZFeAbNob6LQkGmsn0nlsOlu/ecySnp8k6iqthIuCHtZmt5YsNO9BKboHAyY6+6Sx6/OS5dXZttA1eqkJBiZXSbRhlXAsKXE3Nc6lLKHtlmriDaSr8elFUssTzc3Tj621jN5Zh+DyOkLvHg1Fei7cR0uIf0v7spbnjBW3r9TN65fiUi0SbORY03dPjMOd/EJRvYmrWFp2pDPcQaZzMbuBDEAh+MfTU7S2bZXba9Um6oATEm6PG7hR3lTw1iCSqUGcGBnH+lsYFCuAYdA== 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=8cj3qhNFhekB51M25WI/oMFAWIR/Q9rcJDeUpCQ20iA=; b=LhhHQgdC0crVf7CG7H+venWBLIgwGVTATe80EbCoQBSQ1HEQ7HH7GWOEuhyyZamzTI3PcDtv3PU/kFWTqftSdmQzMO3wldYR6rAKYLbRKI/wmKlHEpT+gIeT/ihj5mXSKqi4cZz7b4+l4wLonLPoOw/fX2VJctrkXs7PZXfHeJZddpTEleVNbO5gDPSOv9n/z9/JYNDbWKyiMcbLYxOtgI04qfwvOt7kwBJ4zgYmUQhgxlwKrwHz5xyRORzlWUgTujqM3f3vfMM0r31Pqo6bRmaG/hgGWOeqqKRejddu/MJqeY9n8UltjwY/eez0bY2/SEiYr3eSQt7NhOOUKqa+8A== 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=8cj3qhNFhekB51M25WI/oMFAWIR/Q9rcJDeUpCQ20iA=; b=cruT1tQLXWu6tRpjmJxDbkeNi2yPegdVuGELQUadhPOMYaPYPb9aBKB4OE0UXZRPrerD0g+Hr0qYXnOWIEo4TR+dHeUm/Zg+Cj9QoIbGt5clRDhg89Trl9+TyuRi1hVzxg71SyNXWh1yHYnDARygBG+SJzY7vdDb+r/cRIDEqm4= 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, fam@euphon.net, stefanha@redhat.com, vsementsov@virtuozzo.com, jsnow@redhat.com, mreitz@redhat.com, kwolf@redhat.com Subject: [PATCH v4 36/36] block: refactor bdrv_node_check_perm() Date: Wed, 28 Apr 2021 18:18:04 +0300 Message-Id: <20210428151804.439460-37-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210428151804.439460-1-vsementsov@virtuozzo.com> References: <20210428151804.439460-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR09CA0045.eurprd09.prod.outlook.com (2603:10a6:7:3c::13) 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: d9c07587-962a-48fd-fcc6-08d90a58f4fa X-MS-TrafficTypeDiagnostic: AM5PR0802MB2419: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dXd52IrPbBQbeOHbnL9z8p1zzts6cQ3FSQX1SR3twCby4Wablxc31qg+07EY4AOr2vtkn0mTODifwbsnM6AJnealLCeD+dbqbtXe7AFHmxJgv8sIsNRffONwAmHNvUw/WVDfKHyIHz/UwBeMFDRGooxcnL0p7pzH7vOeLPumb8M1bpT5DKRRbW6hwocoBL/afkFsDKEjvLTeMWS8V/B5uJsIJJ7FHLRNNOqO/2e6ZwEY/Zbudqk3LIBuiv7B7jKVsHZ/Xm6Xo3oVvlPGLotmkflu/sh2DU+r/kaKnaFyNTx6hEdTk3J55bSV24q0icfcXDuVvQUIAwQXMjy+7I/+J1SH5ZzengnFe4NMifmxOUc8W0GAhJCudADf+dQpu37dFbEDq69TRtpQpWfajHmz8MyCdDqMlRozHaUhKJF4ia0UjQ/XwZFaSxVmrqHFZtYyLkXQO6m2/82LLSA6GXR69g3gMH0MF8Y2q5lv2YVY0sUk8efWwpVUkl3b9/DWM94nFGMLtkiy1vOzZBC9zVb7LPdnAz2N5LDWQRoTzO0VuI7rLOMv9ezQTApq5YwM+JhMLlyJRS59cFCexQfG/nyRIczMnn41tFQgq4jRKCdtLrQ0H8dcDTcA0wWT3O5jdPA72mnobd1Gi8OBImHpQk9nXPMF9hyh9dPRVQfqJ5jEZp8fXDGQPsAH1ht59b9uRRUC 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)(396003)(39840400004)(136003)(376002)(346002)(366004)(66476007)(83380400001)(8936002)(186003)(66946007)(16526019)(8676002)(956004)(36756003)(38100700002)(66556008)(4326008)(2616005)(6512007)(478600001)(52116002)(26005)(86362001)(6486002)(6916009)(1076003)(2906002)(6506007)(5660300002)(316002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?whX0hLFLMbbw3TzXa4uCrYwwg+Z0hsH+VSN8p7zmue9vu3c1DOkjM+rlAtGR?= =?us-ascii?Q?VIPDbN00AAss822ZSGarDKnCrh7hK86mnsJb/TdQ53lBYfDcklBdDgoGDlRD?= =?us-ascii?Q?tYeZUnpo30TLM3lLq9zgSiiGsYgtVj9B6Tohwa3clA9CxJY5vPY1ohU0kdpH?= =?us-ascii?Q?nWYpYidTyG9mf8KuqPH3JvPUC5Pd5ncnb6WInSTStHYslQbsDTeX1k29PYCj?= =?us-ascii?Q?ZumgFINzmTDu5Ko2djVKhfQKAJoKwSW2MsVcNgEcdaCtyvbyyPHLHdTqggkn?= =?us-ascii?Q?WOG3Aw3joGECZX7dED5BfPsRZ557FqSOoNFBbWFC8rg5flMw5HeeTC+dHkbz?= =?us-ascii?Q?iIwP7rvhalvQWV6HDC7UcorJ3Z5m9VzI1h2vYOeJScmA3jZJ3G+1Nw93GTQe?= =?us-ascii?Q?OouTJWrMvWGkCa0HRifyIW4orl+4aZVEAQO4hWl7zgv9gtANroya7wPyuVs+?= =?us-ascii?Q?Gcgjtj0BWTmRG3XqAsO6TkRRi+Rj7jNCMriAuXrT/zzOwjXnyebS0PzKuifj?= =?us-ascii?Q?WEQjKm6l2IxsnxrbOcfy+IZe+1eqp9uPAcR8XWYZxFDrkTCSyyCFDofntsqP?= =?us-ascii?Q?a9bgA9auGO4R8F7ZPQKzEA1cwXFVcMQ/EtQ+wo5GrrVDO0fniqNqb2tJA0gu?= =?us-ascii?Q?jcZ1HOjLW43UOboYzNv4pFpT99hO92wKr/ImXmQRxRXMbAZm74s9xQA+w5ty?= =?us-ascii?Q?1n/4UvZZTWBzs3jZ6yI+vSyIxEVhHSyZk7rCfY/zluoHkKEAIKl6KyWlFB9I?= =?us-ascii?Q?WMhmGRmPMqOd/l0U0iee3wcD8qZOxrCkbXPKTUE6WGkn59MiJVHNX1qvKF77?= =?us-ascii?Q?ZdG/CH1JbpqsoeLlGs24CenoQmNMLJOQmx9xkK0tr0l9R0WADB8iL5A0+OTJ?= =?us-ascii?Q?svJgxvLQWMxnN2ZkfmidHYxIs14Gtv5uuspg0Doh6lchDFyAO3v1Yh0RJjlJ?= =?us-ascii?Q?2B7/Z+zccsv0Ph2l5gMag8A1p2QrclXuycRWIu0EYvF5AzfoJ3qbRDbzxTMR?= =?us-ascii?Q?rLzyCqy+fJ1bYdPo3QF+4ZoBvoVvgY8uhTNMdRgixNr1kLvnpp0T3xCqn1cf?= =?us-ascii?Q?gfR4erZKfxRGJrwHbALtUsni3h8JKYOIZ1UlyGKKXPTXhybWAr/iJLhz/shJ?= =?us-ascii?Q?uu/XihLgodh3Ov0RYXcMQBE6+MQpxCnjS+3aYk7+QNUhl05urG7Y2r4zwmn3?= =?us-ascii?Q?MkNNe0RmeFni6E40KTuL1KtBh1bP6Vgf6bFoJktVRiGNrvSAnL4BXUBGQkm7?= =?us-ascii?Q?ZIY1/Y0ED+am+pwNRXM2Ex3Yh4JdiDpMxE3mMOkrFL+fDhEDCJkgVO26eRFx?= =?us-ascii?Q?ueoES1kR69211LAxo8upSdU4?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9c07587-962a-48fd-fcc6-08d90a58f4fa X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 15:19:03.4678 (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: 88KYEw0ggAPqP94FyCU26Ed1tcsUdKgT8UDMCISVB015DwdoTZvKV8VByrIRI+O1EccNIA2CRmfJ80+pFDGX10wcAkQ7gs/pZ1gA2rDcIC0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2419 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.128; 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Now, bdrv_node_check_perm() is called only with fresh cumulative permissions, so its actually "refresh_perm". Move permission calculation to the function. Also, drop unreachable error message and rewrite the remaining one to be more generic (as now we don't know which node is added and which was already here). Add also Virtuozzo copyright, as big work is done at this point. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Kevin Wolf --- block.c | 38 +++++++++++--------------------------- tests/qemu-iotests/245 | 2 +- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/block.c b/block.c index df8fa6003c..874c22c43e 100644 --- a/block.c +++ b/block.c @@ -2,6 +2,7 @@ * QEMU System Emulator block driver * * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2020 Virtuozzo International GmbH. * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -2270,22 +2271,18 @@ static void bdrv_replace_child(BdrvChild *child, Bl= ockDriverState *new_bs, } =20 /* - * Check whether permissions on this node can be changed in a way that - * @cumulative_perms and @cumulative_shared_perms are the new cumulative - * permissions of all its parents. This involves checking whether all nece= ssary - * permission changes to child nodes can be performed. - * - * A call to this function must always be followed by a call to bdrv_set_p= erm() - * or bdrv_abort_perm_update(). + * Refresh permissions in @bs subtree. The function is intended to be call= ed + * after some graph modification that was done without permission update. */ -static int bdrv_node_check_perm(BlockDriverState *bs, BlockReopenQueue *q, - uint64_t cumulative_perms, - uint64_t cumulative_shared_perms, - Transaction *tran, Error **errp) +static int bdrv_node_refresh_perm(BlockDriverState *bs, BlockReopenQueue *= q, + Transaction *tran, Error **errp) { BlockDriver *drv =3D bs->drv; BdrvChild *c; int ret; + uint64_t cumulative_perms, cumulative_shared_perms; + + bdrv_get_cumulative_perm(bs, &cumulative_perms, &cumulative_shared_per= ms); =20 /* Write permissions never work with read-only images */ if ((cumulative_perms & (BLK_PERM_WRITE | BLK_PERM_WRITE_UNCHANGED)) && @@ -2294,15 +2291,8 @@ static int bdrv_node_check_perm(BlockDriverState *bs= , BlockReopenQueue *q, if (!bdrv_is_writable_after_reopen(bs, NULL)) { error_setg(errp, "Block node is read-only"); } else { - uint64_t current_perms, current_shared; - bdrv_get_cumulative_perm(bs, ¤t_perms, ¤t_shared); - if (current_perms & (BLK_PERM_WRITE | BLK_PERM_WRITE_UNCHANGED= )) { - error_setg(errp, "Cannot make block node read-only, there = is " - "a writer on it"); - } else { - error_setg(errp, "Cannot make block node read-only and cre= ate " - "a writer on it"); - } + error_setg(errp, "Read-only block node '%s' cannot support " + "read-write users", bdrv_get_node_name(bs)); } =20 return -EPERM; @@ -2358,7 +2348,6 @@ static int bdrv_list_refresh_perms(GSList *list, Bloc= kReopenQueue *q, Transaction *tran, Error **errp) { int ret; - uint64_t cumulative_perms, cumulative_shared_perms; BlockDriverState *bs; =20 for ( ; list; list =3D list->next) { @@ -2368,12 +2357,7 @@ static int bdrv_list_refresh_perms(GSList *list, Blo= ckReopenQueue *q, return -EINVAL; } =20 - bdrv_get_cumulative_perm(bs, &cumulative_perms, - &cumulative_shared_perms); - - ret =3D bdrv_node_check_perm(bs, q, cumulative_perms, - cumulative_shared_perms, - tran, errp); + ret =3D bdrv_node_refresh_perm(bs, q, tran, errp); if (ret < 0) { return ret; } diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245 index 11104b9208..fc5297e268 100755 --- a/tests/qemu-iotests/245 +++ b/tests/qemu-iotests/245 @@ -905,7 +905,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): # We can't reopen hd1 to read-only, as block-stream requires it to= be # read-write self.reopen(opts['backing'], {'read-only': True}, - "Cannot make block node read-only, there is a writer o= n it") + "Read-only block node 'hd1' cannot support read-write = users") =20 # We can't remove hd2 while the stream job is ongoing opts['backing']['backing'] =3D None --=20 2.29.2