From nobody Thu Apr 18 23:54:14 2024 Delivered-To: importer2@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+importer2=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=1623326970; cv=pass; d=zohomail.com; s=zohoarc; b=Jzm35ftmyTqzf4CxEm4mu9c1V67hKc/a/XoUFU9gz3nP19M6GdLAv2HDexfHbk7iCdHzocjwmuNGSO8NQj5zkKZDU4YpbnHvpoVIqoRhm/Pnx61FbZ7AbZyPiVSHExfGcBuvjLOJk1YZHp8CGPXA+OoN5R6UvHNhW09TuXIduY4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623326969; 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=msJTkS3JEFSqI2vjJG7PxI6OCjazUBWikpBftL78WGI=; b=mbmK6BYh39fvV35LIe7dJfxX/icraNRqvjjnvMvlcE5s5l0jlco86NAk1RYaaPG0I/7HivxqGNtNom5N+wt5kL0mpFLX7Ck4uRmk5tBnXfryoVHFhoZ8V70XmWa7If4k0NVeQisbuWCbrfa7JTN6BREt2XoTNJiyzgEWjLDh6bM= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623326969992709.6804828025749; Thu, 10 Jun 2021 05:09:29 -0700 (PDT) Received: from localhost ([::1]:53250 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJV2-0001ZR-VN for importer2@patchew.org; Thu, 10 Jun 2021 08:09:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39466) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRk-00026h-GU; Thu, 10 Jun 2021 08:06:04 -0400 Received: from mail-eopbgr80125.outbound.protection.outlook.com ([40.107.8.125]:56129 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 1lrJRi-0004D6-RQ; Thu, 10 Jun 2021 08:06:04 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:05:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:05:55 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mQFF7EU3Tb/mZYWWUU+Q215DO6dzJzkfEkqummKvYRopwLZ4sLEZ47m6oTEf404wlCatOIZ7s+tb1I+EO/33j5JqSj2ze4oFydg8qbwfi4cIkREDOXM7WRy2m4+9gFqDGsAfX9/KXSoNiTlOIKf/NM7IxmPW2M5s1p5tKYDe88EhUMrzrQvc4NUESNtjAWW5IAXUeZdJA/OxxFQvptgji0EGHjn5NIVVSSclcKywMLdqDcDCRqhpLwOsN9g/taXlJIpeVoTUSh5x4H24Mls9BZ3gEoEqDtQpmLtpom59ZsxyQ/oBzBTgDOyuYwrCmRjfBMc2JI8FyaY+QTRBzUdkFQ== 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=msJTkS3JEFSqI2vjJG7PxI6OCjazUBWikpBftL78WGI=; b=HMO2ZN8N4ndNiPD+HANv1uACv/JIOjF3v0RpmfCXpRtEmxbINYMsFLJHXs/7NGYoQClKMvbRigSnRNtJJTq4BiPr5RnOylgR+FfxrGsSh0sexcRBd456Zk7mvtbeJsGlek4rvOG2rVMjoLUeT3aIfwBniW2Ribejlh8NXLGveS0ELoSyp8JWKEIjLydsewUxz3hccYCFcT20uoPg5b+Dum2RiaEXLej+GyxZLEcY9e4wa+GitG28NGfxdAptP/DGvu5gbkaHmVTfNjK6WU4UQt6nG2qG78c/5hu+KDNmlo9LsRvluy9knyG0vb0q2Xb8LFqV+N8MpAHJGYl89hTuKg== 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=msJTkS3JEFSqI2vjJG7PxI6OCjazUBWikpBftL78WGI=; b=c/JlTE/MjgSPV7600RRChzhBZLxLiInOklCf1/cn1bOZyXy9FnZz1+7aMsLZPJ1Tfw80wn6J0TFeMUqG3HTLApWArunTjCnAdHrciQ0JonfyRmv/ZpeoTAkw3HyfCnzGZZMTQiP+jOa/ZRB3eyNOo1/BY/SGhBVG+nCbXupP9JQ= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 1/9] block: introduce bdrv_remove_file_or_backing_child() Date: Thu, 10 Jun 2021 15:05:29 +0300 Message-Id: <20210610120537.196183-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 6bd5d838-941f-4d69-1c47-08d92c0818ce X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:76; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NUiJYsLUdecav3/feAfpr62pai2GqrpGomz/+PLNnfnU31Uthg1giQRyywKVAqPDOpftNMC0wP633njFOdPnnqFMHPISMbCMu7P1hPOuLhS6m3NvmY4NpW7kNg2YfyTe0V1IzgQICkqjyve5gs1TyXww407IEeTnNlGm7dgpNOgcn3U1EOJM1C/vqH6O7AltMiEnXjY7Dz9ekB5ayG39TStNXhE/wgd+XNvYsQ/HEMj2uf1hzxhZ0Nu5uyamyfpudchaaDPhTnf0p/0sES5fWfL0IQCiK/lCaLN/yK/obdgwDrJg6syxDRz2qPskI2al6fpdzRF+jBS+j/NlZUvaq0X2fhAGqfhiIUVRt/pUJEeEJNhvS22eKRu3qoYIEelDKkdJy/m3q2dbYP6bwXli/Lq277G2eba7afgqd9LpSdIPDbffj/SeTq4DdKeDL3/ab3cbu05nY82TLqVPJyIAl58N4bhgvyBAfqxi5syFOgGxuOIUjV9f7K1PnKNlCwqxHQbFcPFv00hlw4Y3fStMydA8nG2GPZXXH2tJeLPI39oZAyLXDKjn69NqHnVESiBMcQk9Nvul0m8YXG/6Ilok7XwqsP4WNhiDIiX43x3Ho7imyMlKRwvhuWbFtcMS4SeU5FA+6OgZssUQAW847q5HGZiNyuGwc5DKwfUXEB7WvX5gwT6zvkOem1eZvVNqgYfs 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?6MfevXdsDe+nNznrE/cba91lF0odpRfF6OtW1llE5eUoiN1RrPmdbHl/QShc?= =?us-ascii?Q?bR2/z1XMkIQuq1z+QZ0QFN31fV04spG+X9RJc+suiI9EwV4iGJZ4t+rHthmc?= =?us-ascii?Q?rOwNzLnumiraGibg1P1ZnFh8bfq9auFPsS2pvNJ0L3JjglJyyQRK6a2LVirp?= =?us-ascii?Q?SuRjHviwPiNEvKMPLJHC9r91xirMbl/E9mKPc6w6IsZW42dY4PxNXhrpbPQk?= =?us-ascii?Q?KdBmovECLbmWpS+vWeZDC5nfb+V4tUi1X+UdOgZQwCUmc9UNgTjmMfl85n4F?= =?us-ascii?Q?oyxvv7zmMavPxV9Rf7MxbV5TVXlzQyJZvXyJL1E6MvD6olyPsIyF6vIjM9Si?= =?us-ascii?Q?J7Jl9dXefA75EdVs0Uy/n/GUfNUX/3CBNcDuW/g/GAts6o/A3vObeMEbjE2U?= =?us-ascii?Q?P/E0ZxPZyBEElXUuKBqDP2vQ99SjS35HDzKc5HnNCr1DT1r66AMl6jWaqnJz?= =?us-ascii?Q?oYjZSaGrSKhpjPigzKSVH3jUPcOI9YxpkN0229VVCs86hPOniSkYfXvytKzl?= =?us-ascii?Q?yy8168YP/goV66ren1gWXYh2vvuvGpRldczTNEfysuuwGaRx2y0C24h51zIF?= =?us-ascii?Q?ciC9qxXQD+sFBh/YsccAopzxZwOkjr8KbhjfiVL4A8TAYONz9rSbqXwAY4TE?= =?us-ascii?Q?WitDh3ttN2OMDlL2E/s+EIvaOy69JTbEJA7v884PkKRlWtjxckreL9ncRRZZ?= =?us-ascii?Q?QeIBQIVDK33f4ESZVuJn/Rl4oLHY/tC/6gvOz0EygC1hF+EV8eNERQzSSi5t?= =?us-ascii?Q?eBPMawqYfPMHKmq/OBB6CLlUxfEvJ95zGiOmmS81pvR3aHooFlbf0PqmrNJ2?= =?us-ascii?Q?JbdeKHT1eTfeJXk8dR2Cm22QxyfKAxK9GYcZ/z9laFiFrd0rYcxfMH/cyo9N?= =?us-ascii?Q?UM+YTwL/SEiVTsveddCWuGDFfEwkkvJjMCDgrfhAC1ZQs4d0dwj83IN6AuoX?= =?us-ascii?Q?WRHLLiDhdgA5tJ0ksKg1GPDosExmtsrgOQ3lzaWmsoJWZ2GVIxpPUni8btlf?= =?us-ascii?Q?nv9HYCxMQdyPEcVib18eSllsOJUdmLdAoMi4Wf6Uco5HOzMlT4+W71bF5Krw?= =?us-ascii?Q?bAcBLJsNx6qzA0NqFLGGN9BjSJ+9R8CuCU5JrxhibVXuJKkBfU6+ht66xUmv?= =?us-ascii?Q?yNAGi79ks6Etem5eB48VnyVyhVCN4czYdm8IhWIXKVdcpS+SOc474sc2XDQs?= =?us-ascii?Q?MwOK7R0lhnUTIQyugxmhbsGmHCU1as2UV41eu/hKLB6CEQPhJJjWthvAe2+3?= =?us-ascii?Q?GeslVPfby/DHPhDJNYcTXsRMGANuZoguZL6C75qmbd0tQ54PIoHCNyTur2gp?= =?us-ascii?Q?/fjZ2Zpfa7fCPjBCto+ewd0y?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6bd5d838-941f-4d69-1c47-08d92c0818ce X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:53.8710 (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: fEpvQs5lSwm8xR1l4/dHXJhRH2X8zV3mZS1ArXiYkFwjhranvQR8uRsfNNYgmUozM8JNWQV+QrmZkoKZbEPCtMnm74K47o3DJktMLIlwC6s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.125; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" To be used for reopen in future commit. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/block.c b/block.c index 98673e788a..d21c9e4316 100644 --- a/block.c +++ b/block.c @@ -4795,17 +4795,16 @@ static TransactionActionDrv bdrv_remove_filter_or_c= ow_child_drv =3D { }; =20 /* - * 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) - * + * A function to remove backing or file child of @bs. * Function doesn't update permissions, caller is responsible for this. */ -static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, - Transaction *tran) +static void bdrv_remove_file_or_backing_child(BlockDriverState *bs, + BdrvChild *child, + Transaction *tran) { BdrvRemoveFilterOrCowChild *s; - BdrvChild *child =3D bdrv_filter_or_cow_child(bs); + + assert(child =3D=3D bs->backing || child =3D=3D bs->file); =20 if (!child) { return; @@ -4830,6 +4829,17 @@ static void bdrv_remove_filter_or_cow_child(BlockDri= verState *bs, } } =20 +/* + * 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) + */ +static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, + Transaction *tran) +{ + bdrv_remove_file_or_backing_child(bs, bdrv_filter_or_cow_child(bs), tr= an); +} + static int bdrv_replace_node_noperm(BlockDriverState *from, BlockDriverState *to, bool auto_skip, Transaction *tran, --=20 2.29.2 From nobody Thu Apr 18 23:54:14 2024 Delivered-To: importer2@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+importer2=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=1623326874; cv=pass; d=zohomail.com; s=zohoarc; b=ZE2orf5MGb+diRH2eNO0llti2iLo8sA2/B6B/AoAuilrYGtRUMPYk10gTkAUSJwecRUAZCj0ggyrBpXUmyheI3zgvhTXnny9XnTXMionMk6WA4BUQco0dgugFe2Gi70b13unMKRHuzEaXsn14tKlpzPD98yLZNkkQlRPdViBBMo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623326874; 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=HLwvfeZNR0GMOZYF69z0AUqFyYqMUbRgkzxCNO3jgiM=; b=iWpL7mED1gb/xFqWIepepkcTq38qvEHq4mAeV0cqYwP6jGTRS7bliqSKCJO7JTNmkWS4gYfxGBXkJGFjMnRFJ6+PJ+Z7ud2KWJzUi//UuNa9Vt05nrUuCutk33/5i+Sd76AqidCpy3DMAMgcyUzjGQpEZOisou1Ik2V6i8bKOjE= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162332687491664.59279315339268; Thu, 10 Jun 2021 05:07:54 -0700 (PDT) Received: from localhost ([::1]:47262 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJTV-0005wF-Ou for importer2@patchew.org; Thu, 10 Jun 2021 08:07:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39560) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRs-0002Ah-1k; Thu, 10 Jun 2021 08:06:13 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:15424 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 1lrJRo-0004Nw-C7; Thu, 10 Jun 2021 08:06:11 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:05:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:05:55 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TTjMeNW9lLw5GC7xqoYwwDEQqQ5JLOsHqIhoKpNbF99at+y/9N+yU/bcKGiqhfJOhf8txu5R+0XAAlL0vBy6YCLaX/wI0hRCZZSbzJg+8yvS8zTCi/PhSszJOd5/hKe9osW+VPFoi7nkjUrf7Cr7pmwWrv62Ld3Q1i/Bw+iL4VRdzbokYoshyXJHINDCzukjGho0Xjf+4jgx0ORekqK4Lq1t+Jun4u5+m7Ji83SMQSzupv3AqUDamdWiz/cE0tg97V01ESxQpbffx9DummWztLuG24t4RBgyY5E+7qOJS5t0sQt76g5x7jLofucQN2QBHeSXnxFbUp++56cFf3XDHQ== 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=HLwvfeZNR0GMOZYF69z0AUqFyYqMUbRgkzxCNO3jgiM=; b=oAzCQrF/8HcYiayTgeknJ502uad1gKoh+8s32YzbBlMsV2buPBmrzbfYniz7G0G6IUOzU6zaGhkjSX7HBrnbxribRZcQT/a/06S+2HHLWD7pfuSbCb+KglAVwR+mBa9MUrmb+Ga2fsAia+BjUlGLEwgMR0jYNBFIZuNEIJGI3I+TZ9CODY9BGHelnuLLJOsz6z38Ny2cf/ZkZEoXJ5bzngXe6hT1V3n0Apm6g+Ei690DdtpcFfesrOQupvhIBsQWlb2oP//GEuF7TmHyOiWx+9op/nh5gmmLcHMJ4zgbjML/HXZ8iffcRevFXCAeyqi3mlBD69kTQKksYXY6IgVxFw== 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=HLwvfeZNR0GMOZYF69z0AUqFyYqMUbRgkzxCNO3jgiM=; b=UbH62RoZcUULzmIQS7L5yDcpABLdirsm6eEvmhFWuolE6k+VmwfEIKQYZwgwy7g6RPSejGSqXvy1rGKlPbOj4VbLTEjO5T4FfWppcWcf8w4KMuiknimlemNerPLl6x2JjtIkv5lYDD6bczR1xTc/dpHGMylr2YLBmFP0y6gc3Tw= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 2/9] block: introduce bdrv_set_file_or_backing_noperm() Date: Thu, 10 Jun 2021 15:05:30 +0300 Message-Id: <20210610120537.196183-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 02714b27-0c62-4171-d0ec-08d92c081964 X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:376; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OMlWvUNxv6pcuTTcgqJrUec8UKMKWNuoTwcvdyCO4QUY4KpfRit5XwDnOKTho1jNLb77WX2hMFC9cTCEME6Yw3FurAMWlqmiALZKA1lKLyPEDufHoCCYfop6s01MlJ3JBFK5sGAbQlYdixqkl+wxO/IC96Nxn2O+Pn/UdcGLknUbk/cJ2yGSn7XcqjXR6QAVQAgOoyiSPjRSLr7cM5PNXC8vD+zLiCG1tbPJz3xFvFEYHOWNO6lkTMww9+0WBJc8wgl43g4zMjLm1zoQl+t/74J4d8Cc0NjEYkijOIzbxNwsxqY0Ex8W2be8gISVdbXQsG1392X+MDP5l+rQAuo4O7NYlZjEQVJdIwIUmJOm9/dTse/12I/uQc2qPtfYx9EIqZ0ie6c2ga5fkgPK868exYLffS7jMrAh5J4hQPMP5gYB1Yqa+JEfr9k5pTgvUSjx383qIju9T6XgXHajg0Tx5fs4LqYdsWEQ4ueNS+gVuDXBapXWjVFvUMEmebCxBOU4/zyaLGtAbnEbGN8mLQg4NZ1B7HmBhBo38YEzhUGP8hBuA9ee8x/USaYCwC6/5R/VsCzjmdu7TB5pL+zZspCJ8QEfaTiN2+kL9hrh984IuWHWoM91oO6qWvGDYL3kuxNAg0f2DCR0T0f09Vp3wULW2tbpYUrgaBalPbsLNn0eJVb99KPbe5hAuF39ZNlRLOFl 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?E3c+UJSI3QtN7IV4nvVcFd5DzWJGt/U9okEknunPk/FFdT4hDWjRn/HaOYdO?= =?us-ascii?Q?roOrbNmgpaAgIfXMgw1trDXJTBTtAquUyqMvb+oblGIPi93sUGI4G87XcTp8?= =?us-ascii?Q?d6e0S1uNMpCI1/5oCZTT1Xi4LQJshNMig8OZIzOo02TZidAz6dlUOxtSAyV+?= =?us-ascii?Q?sLbSP5LDZc10XOC3AwcD7VSZo02rLB+YTli6146Qb+lZTr5E4mDKrzC7MN1o?= =?us-ascii?Q?mUIPtAmVQAyKxtMlL31jNivTTGOoTDeAfnHk5dMq9eb3TPVhbn98JJwXo3ch?= =?us-ascii?Q?FY/ahCzW+xo4MmOysk9DLA3miPA1r7QNTxSkIAc0yc1oq6ptU7SJuSDv+ZQ7?= =?us-ascii?Q?ryv1SQJArlLnZuI/2v8S0giK6ICRFYq5SNC/iZ6qsmBUzCvwV1/wmtMvR9rO?= =?us-ascii?Q?wTR1ewJVRhfPiPVP52of2yoBRV7rlZ+/m3b8Bk7/5DTah7Uw+IOhpxtvE0h8?= =?us-ascii?Q?pC1TORgC5aMPYcFf2/ymSDO9swB99Pl56Z0XsBwdAIvyjc6Xx/8vfVR5tz4g?= =?us-ascii?Q?GrDeJ7YYI5q1DHdnEFrcAFiVVjx39538VuTpvK+zkG6wKfgqNWzywQ/MmLiw?= =?us-ascii?Q?hfZl00OdrEwOs0aCCx0mD0fi54HZC3Ty0v7MhnZ2hU8UDM59DKoeXlcfe746?= =?us-ascii?Q?/9FDJyXtR2Hyev1wiia+Qpy6pRIYWsgTI529jIJ0vKIAHsLU7zglYILbiUKB?= =?us-ascii?Q?Ny+DUsguXVJdhbhTx64Eic/leyukglO6/JfxCo8NvkcRF4/LNpmqxVFnKwAx?= =?us-ascii?Q?ZOPVcFpmtnA1xU5dj7anvu4O60HsjhtYC1kfYcuRINY+k/wrqSdZLrmGTBrz?= =?us-ascii?Q?d5ZMpctYZaZX/Jnu5zxyxdeTtDJwcfKLOi+PFlB+cnRxz51lbSgk2MycmvlL?= =?us-ascii?Q?Fey2Z/Uw/bZ2IGbTPPzGV1dDttiXUaoCDjQnCclP42n51xfSpQsjuWwKlN7y?= =?us-ascii?Q?vb4tKfIjEm6wEPIRcgFazAu/YseuvmnqH9GUESQbhjK/c1UN4wVDZjZ5mTnL?= =?us-ascii?Q?0DPluwnGXPOuIkgxuuHFiPItMrsz5TH44PW0pSapbA2gVg9/5as9JLrOPUyZ?= =?us-ascii?Q?ETyQ6gLEdrRD44E5pDWqo7O2TMzNtnLuuCZ7xUq18xU3EjaEhqY7DB1rG3AS?= =?us-ascii?Q?f65sv5epXL97AndaDafw2n4l2U74Y9Uiyw39pY/yuIfWp76dzPxOq6iwZ+oL?= =?us-ascii?Q?BQcZviorPMDEcDFatpBe7UdqBj4QZyJo/bKq6ep/+W+VtWd+ZX0OvZYgRXfh?= =?us-ascii?Q?5a099g1XXLiIm9/evHaHPBod5QQBT6ha3J+89ofbAMOqoJ2bVOLl440CI9Yh?= =?us-ascii?Q?pWBMqHihdIF1Oww0fcutJ8/E?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02714b27-0c62-4171-d0ec-08d92c081964 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:54.8676 (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: Vy2rKAvZxO0FBikDlxjmpb0YInUQbAlPTyjPbRrAgIHnSTaC08fFO+HLWPVQAxROIJm/lWhxKrHo2AwOeLz8XcrOVmaaR6nZmaHx4ZwXp8E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.90; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" To be used for reopen in future commit. Notes: - It seems OK to update inherits_from if new bs is recursively inherits from parent bs. Let's just not check for backing_chain_contains, to support file child of non-filters. - Simply check child->frozen instead of bdrv_is_backing_chain_frozen(), as we really interested only in this one child. - Role determination of new child is a bit more complex: it remains the same for backing child, it's obvious for filter driver. But for non-filter file child let's for now restrict to only replacing existing child (and keeping its role). Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 83 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 63 insertions(+), 20 deletions(-) diff --git a/block.c b/block.c index d21c9e4316..89c61fe93d 100644 --- a/block.c +++ b/block.c @@ -84,6 +84,9 @@ static BlockDriverState *bdrv_open_inherit(const char *fi= lename, =20 static void bdrv_replace_child_noperm(BdrvChild *child, BlockDriverState *new_bs); +static void bdrv_remove_file_or_backing_child(BlockDriverState *bs, + BdrvChild *child, + Transaction *tran); static void bdrv_remove_filter_or_cow_child(BlockDriverState *bs, Transaction *tran); =20 @@ -3117,56 +3120,96 @@ static BdrvChildRole bdrv_backing_role(BlockDriverS= tate *bs) } =20 /* - * 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(). + * Sets the bs->backing or bs->file link of a BDS. A new reference is crea= ted; + * callers which don't need their own reference any more must call bdrv_un= ref(). * * Function doesn't update permissions, caller is responsible for this. */ -static int bdrv_set_backing_noperm(BlockDriverState *bs, - BlockDriverState *backing_hd, - Transaction *tran, Error **errp) +static int bdrv_set_file_or_backing_noperm(BlockDriverState *parent_bs, + BlockDriverState *child_bs, + bool is_backing, + Transaction *tran, Error **errp) { int ret =3D 0; - bool update_inherits_from =3D bdrv_chain_contains(bs, backing_hd) && - bdrv_inherits_from_recursive(backing_hd, bs); + bool update_inherits_from =3D + bdrv_inherits_from_recursive(child_bs, parent_bs); + BdrvChild *child =3D is_backing ? parent_bs->backing : parent_bs->file; + BdrvChildRole role; =20 - if (bdrv_is_backing_chain_frozen(bs, child_bs(bs->backing), errp)) { + if (!parent_bs->drv) { + /* + * Node without drv is an object without a class :/. TODO: finally= fix + * qcow2 driver to never clear bs->drv and implement format corrup= tion + * handling in other way. + */ + error_setg(errp, "Node corrupted"); + return -EINVAL; + } + + if (child && child->frozen) { + error_setg(errp, "Cannot change frozen '%s' link from '%s' to '%s'= ", + child->name, parent_bs->node_name, child->bs->node_name= ); return -EPERM; } =20 - if (bs->backing) { - /* Cannot be frozen, we checked that above */ - bdrv_unset_inherits_from(bs, bs->backing, tran); - bdrv_remove_filter_or_cow_child(bs, tran); + if (parent_bs->drv->is_filter) { + role =3D BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY; + } else if (is_backing) { + role =3D BDRV_CHILD_COW; + } else { + /* + * We only can use same role as it is in existing child. We don't = have + * infrastructure to determine role of file child in generic way + */ + if (!child) { + error_setg(errp, "Cannot set file child to format node without= " + "file child"); + return -EINVAL; + } + role =3D child->role; } =20 - if (!backing_hd) { + if (child) { + bdrv_unset_inherits_from(parent_bs, child, tran); + bdrv_remove_file_or_backing_child(parent_bs, child, tran); + } + + if (!child_bs) { goto out; } =20 - ret =3D bdrv_attach_child_noperm(bs, backing_hd, "backing", - &child_of_bds, bdrv_backing_role(bs), - &bs->backing, tran, errp); + ret =3D bdrv_attach_child_noperm(parent_bs, child_bs, + is_backing ? "backing" : "file", + &child_of_bds, role, + is_backing ? &parent_bs->backing : + &parent_bs->file, + tran, errp); if (ret < 0) { return ret; } =20 =20 /* - * If backing_hd was already part of bs's backing chain, and - * inherits_from pointed recursively to bs then let's update it to + * If inherits_from pointed recursively to bs then let's update it to * point directly to bs (else it will become NULL). */ if (update_inherits_from) { - bdrv_set_inherits_from(backing_hd, bs, tran); + bdrv_set_inherits_from(child_bs, parent_bs, tran); } =20 out: - bdrv_refresh_limits(bs, tran, NULL); + bdrv_refresh_limits(parent_bs, tran, NULL); =20 return 0; } =20 +static int bdrv_set_backing_noperm(BlockDriverState *bs, + BlockDriverState *backing_hd, + Transaction *tran, Error **errp) +{ + return bdrv_set_file_or_backing_noperm(bs, backing_hd, true, tran, err= p); +} + int bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd, Error **errp) { --=20 2.29.2 From nobody Thu Apr 18 23:54:14 2024 Delivered-To: importer2@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+importer2=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=1623327124; cv=pass; d=zohomail.com; s=zohoarc; b=fA8XsmVIvgIAWadRkYwAvglhlIoWK3GeNmrEVpK5p3rGvyvtSbZ3blV6X7U5SLXe0f28FdhPrSbindrIwz3bbYwkFrQOcP5xZETFvCFuPaZ60EiZsoFsxVVX5MkUS7s1uMZXAVT70WbsWlqP+qgb43VmYUOSP8ufnhSNMK8wt0w= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623327124; 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=0h2qZiQe70wxQbc8p/7oGmG3rv1djzbseL5Xp5NChVs=; b=FWaspUVvVwmBIPBnHymtTHCRBc9UMj4K9HpJsl7OjjnyQtlUoLmcxdb4huDa3Irz3ytfljmYQhnlDOx/3SztU43XdKYLpiU9JIggk/IzkMAF13uR4WyNvsYeSYC847gsmM01KhXtewSgNL/GR4+0k0Sj+5B0W94rnepcwaPvl0g= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623327124150855.6560330742167; Thu, 10 Jun 2021 05:12:04 -0700 (PDT) Received: from localhost ([::1]:60182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJXX-0006TR-0F for importer2@patchew.org; Thu, 10 Jun 2021 08:12:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39506) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRp-00028r-5I; Thu, 10 Jun 2021 08:06:09 -0400 Received: from mail-eopbgr80125.outbound.protection.outlook.com ([40.107.8.125]:56129 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 1lrJRm-0004D6-G9; Thu, 10 Jun 2021 08:06:08 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:05:56 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:05:56 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GgiWAP/JCEgAGqcA95Lfk9gsBYNxRD9QbFu+fDRWmwK0T0r28WInal8Fo31rz2jyrmxAGMhESW5VVgeXqwd0xv1W2ik+7TUC7xnIxSsmOpVKKsVjnQWAK0+BYGbZpKBe2lCrivC3HErnhHQReMFmrH6dZ5lQ8rABEuwIXMsV1EIhiPoD6wQRaG42lCGsAYUgA/7/gxOD7Bex0qt7ROj/PTAUTaLqSwC0EmwlB7n6lcPZ1WwtLwGDAbeX6vam687YDZbwuhUEjy2G78CZSy9fkG7q4ckuJ48PQBByAiT8fMDcKGQGlApNrdbdU2ASH1AJOpgplQGPj88MRsQDUbfpPw== 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=0h2qZiQe70wxQbc8p/7oGmG3rv1djzbseL5Xp5NChVs=; b=ILgN45Z7NSbTs1L0bL+x231zJdsJsgvdnDnJkZQR56YO8Gpb0NvOxwxSb0IWqHAYCXCvqMwd/n8lc2m/LRB5VrEhhKL8CRZkmpBoWjGr9ezvZOrIdcEwkqzck8hECiZqzLy6+xRKljbK45PNdlk38Q/KDynmvgMjl6nWvZQ7UypgUKpCHNP4sVMTH+/bCJ6HKb5uwrgIwJlpBbw+O4bL+HwsRADpb1g17LSQ9/t9ZKzNnRKSuRNwvbugFtHr9HCF3J6lNm6eCNK6x8G6vBAAOLdwqEXr9iLZVmOBqdE4NiWGGyQt1cRpbCEku9Ja6yg0Ixby1ZODut5n67L369hkVA== 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=0h2qZiQe70wxQbc8p/7oGmG3rv1djzbseL5Xp5NChVs=; b=mmA4FfsMZSNbhG8gMUxwrVMwFvF8IQXGjt3G6LGG/MgCmvCB0a/hOfzT5kH16gvodyT4gPXUngpwKB0P3vsC7/iXvhHv7pSjfPQTvp82lJ5K4RdXqgFOM5GYbEfHVBz1zbSepZTWgUMPRqS4IW9Wuj0kdbE+EhzSnr0en5/nhsU= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 3/9] block: bdrv_reopen_parse_backing(): don't check aio context Date: Thu, 10 Jun 2021 15:05:31 +0300 Message-Id: <20210610120537.196183-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 1ef95f59-5bcb-41a3-afdc-08d92c081a00 X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1122; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4KW01GpHPVLdyMXSA4W5y8Cx2W1sDE08sQWILXzpY4TE/OidwfZrXxLwtZs6kLMuybx4/frMLgHslyVHAEtvd2J2SfXBZBkCAox7JWaOxu6EfBIDBDAdsj55jphaKQf5AwpWphdMKMNRmM71uYf1tdSwyEBqu14nKUTM4Curo+SSwnxlR7FE5LK6MAALmwaEiNVPmCdoELDDgLS9WJlRpkrK2gBCbNuq+DOqzxa8gE0S4Jkvb7Q2HefGrjYBF7C9ZgVU5btPM2pVveyEEvq8FntCgeXvT2Z9V3SuiW4tSsEiGRBTaZmYV36vQpUdhJtyURxmu2zdj04KjzNyzgpNWBgHmhtloHiMTwZMSSWYAoMsgXaWCpwvKP2nSM3hZeHHN67OuwNZcRBlmv2ScPbN/g9IUeotD5jBh+JcI+W/CLegPIa5Xd+KC1xeOeoSKoUF5xz554uaondtrt121k0v0UWvfboUeoljmYqaqofAw5lNDirvPTDEsqYizLtQ0MMdWBkds898botwyt3Pt88gx+O5QpStRHNSXoFKWOvLTSlvPRBWXZOBLJNThwVGr4A9WFSjIv3yDkyo+hMhcpRRtibs+tkKlSL98woKI6aS9IuZ4d571+TGs3XNwmQSYSAd8V2KxA6Ieiowlj32YSTzrov8EbHphuSYdzmIr86d5qexyxMFsqo+ARA1upeUhPNE 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?DjawqiLWe/xH6M7VAw9UWKbigHHX3l1SJJJk2uVCpzyt1xJ4BSM2iu/2YtG3?= =?us-ascii?Q?VXBqseYlKtW/GSWdSRE8YLYhrPWnrg+dD80eDzrG6iJvCRYAZCCI8V/Tz9EI?= =?us-ascii?Q?x466VXDNUY2gLpNQK0MH9DqrWs9CVCBJZEGmco7EnTRCgcK4D640FiJ9VrZQ?= =?us-ascii?Q?4MD5XOiXBL317OdJa57INp9WS6UWQ1ow7iIBUHK+IeKuX+AVZmhxhPxjb/Kp?= =?us-ascii?Q?m9fMe9qnylXgIB6TiDKv9JTNwVm8IvVbQs9TuDxoqOX6H9gunL4otHzB2CQi?= =?us-ascii?Q?gCbbiMmHOIROuYvUoqRd28wElK+3shl9BddmRMto2aR2+l6AASC4Ob0BhTTX?= =?us-ascii?Q?46zQOjnHzPMSeDEncWK9npe+Js6aSUPMBCV/iWjxC/t7QNZbY1Op3PK2qh3G?= =?us-ascii?Q?HTAZ4tLbicM6Vl3LenL+YCcXCmDQYSKItVjdosp2rGBwY5XtFZQzLMo/B6MO?= =?us-ascii?Q?grb9ypbdn2gB+VsVGD0cbRHfMuTLLV3x0WrhEP/MspY5oH+V9EQaD6u0ep4O?= =?us-ascii?Q?LPfANrheG4ZKqOycNId9FvWj2Rci3uBgVrwevHpGyFj9gri05oOHR2mBouJ+?= =?us-ascii?Q?6s/wb++YJfwIlY9v2aq5vaLiVxd5+5ckq+gyleAs6sguJdn9kqFSxPqUvqay?= =?us-ascii?Q?wVTIcJDvEUKck8h2mKkXdmFJxGflUG/n/5O842EOhsR263gpEVa4/G9+ExE7?= =?us-ascii?Q?rNHZmto/+o4w50WW0+aHl8OoZ3Oe+0iXY/uXD1YHKAWlr6LbBt14O8/5KwJY?= =?us-ascii?Q?PHlUOfbLPLxkhyGtvc1HR6yBHpoes6ChmGisVHOMWU+4IIgeXM2l6ztlgYj2?= =?us-ascii?Q?e85781zk8kwTc2RuKqBHG4sP67cXllRL3//s4Myd11lsvNq5Mh7UV+yc6DGk?= =?us-ascii?Q?KGVxq/JicA91qyg3hMQ+Nc6j/ZFA0p7rlHVJMjuXIpN+J8fcaQOEMZ1gjqs4?= =?us-ascii?Q?SLBl0mlaUE2gWqZdDWLKs9zazbw+oUMMveaKlG0iNGHO1W4vH/I7rgfZh/4N?= =?us-ascii?Q?yhfzLFroo7NvMODFEzwJdRaRAd2ROucc52wJ5NNJlppYlsMlzcvRApk8IXGq?= =?us-ascii?Q?jkOV5cizRCWCmqzud+CmgT9X9J9V5fYeAM4IRJJQ1ujeX8vQwVqbcSFz8Q1D?= =?us-ascii?Q?/2UVGeyJ/cz/DAEzj1OhfuWRJJiD8SD5YkMqCNdgbYGpMzRMHL88olqHm4aw?= =?us-ascii?Q?uK0MvdMrTfvjW93x4YPA3D96etGWMh/j6wN09O6aTS/8u/nlQtKqk3k9Y9MN?= =?us-ascii?Q?YEOHvVUz2iNZ5zDn6Ekd3I2ODp0sDsnxETjdVSfAA/eiLcRP4FFxy0yrfaHK?= =?us-ascii?Q?8v5luvT1AOQmC+aJc9Pn14G1?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ef95f59-5bcb-41a3-afdc-08d92c081a00 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:55.8603 (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: e3sC+7NvO5QJ8spNAVNoNOq5nIBHGvCK1GHW2shV/laXjvu4B5y+8PKB/0CerSAxgJsVt/h96sFP7NYuYWxhivLX2pnGkKWcRbCZqi0Y2vc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.125; 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+importer2=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 check: bdrv_set_backing_noperm() will do it anyway (actually in bdrv_attach_child_common()). Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/block.c b/block.c index 89c61fe93d..68ac99f2bd 100644 --- a/block.c +++ b/block.c @@ -4215,29 +4215,6 @@ int bdrv_reopen_set_read_only(BlockDriverState *bs, = bool read_only, return ret; } =20 -static bool bdrv_reopen_can_attach(BlockDriverState *parent, - BdrvChild *child, - BlockDriverState *new_child, - Error **errp) -{ - AioContext *parent_ctx =3D bdrv_get_aio_context(parent); - AioContext *child_ctx =3D bdrv_get_aio_context(new_child); - GSList *ignore; - bool ret; - - ignore =3D g_slist_prepend(NULL, child); - ret =3D bdrv_can_set_aio_context(new_child, parent_ctx, &ignore, NULL); - g_slist_free(ignore); - if (ret) { - return ret; - } - - ignore =3D g_slist_prepend(NULL, child); - ret =3D bdrv_can_set_aio_context(parent, child_ctx, &ignore, errp); - g_slist_free(ignore); - return ret; -} - /* * Take a BDRVReopenState and check if the value of 'backing' in the * reopen_state->options QDict is valid or not. @@ -4289,16 +4266,6 @@ static int bdrv_reopen_parse_backing(BDRVReopenState= *reopen_state, g_assert_not_reached(); } =20 - /* - * Check AioContext compatibility so that the bdrv_set_backing_hd() ca= ll in - * bdrv_reopen_commit() won't fail. - */ - if (new_backing_bs) { - if (!bdrv_reopen_can_attach(bs, bs->backing, new_backing_bs, errp)= ) { - return -EINVAL; - } - } - /* * Ensure that @bs can really handle backing files, because we are * about to give it one (or swap the existing one) --=20 2.29.2 From nobody Thu Apr 18 23:54:14 2024 Delivered-To: importer2@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+importer2=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=1623326888; cv=pass; d=zohomail.com; s=zohoarc; b=e9pDUgAsvtkJaK0SOpyM96xVAESQKnpHr8tkqsW58Vk0/JD7ogNkFTYY1x6koiVv2UZmOSCoi4dublSBnITV/Vbxs8T72BcSebrVaUVuh3HB2uGiwZq2FHbqo7iIBF5VvorZVLVJ/PvnsltvA0wTF+uk2PDr2SNfzwZkzf3MrgQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623326888; 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=BYREjeGL3kjIOGBYj8p+Der8eGbcC1/IqIt4pANG1pU=; b=CE3XZqsIIZ2xJaJlw1oErHPpasauzZ0VMASS+Q/JcPZXxAp9BeuB7u958JExyBBV6b+Lz78WGQfM/oYEULmXVUaBvSEaUO2bRBd7tIqNu+iDR3yKwPlXo3NaqNec396yg/WEzVJ4xSrsD7RU6WZ2v1qWzBYGxe1TbhI2X5iQW2U= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623326888450427.4463465104626; Thu, 10 Jun 2021 05:08:08 -0700 (PDT) Received: from localhost ([::1]:48556 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJTj-0006mk-8d for importer2@patchew.org; Thu, 10 Jun 2021 08:08:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39564) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRs-0002Aj-K3; Thu, 10 Jun 2021 08:06:13 -0400 Received: from mail-eopbgr80125.outbound.protection.outlook.com ([40.107.8.125]:56129 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 1lrJRp-0004D6-Uc; Thu, 10 Jun 2021 08:06:12 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:05:57 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:05:57 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h3Dujaz1Fn+Vb8bXsNNo4IYl9SAnm1a44CWE2+EcUV3KVnbRw4vtajFvaLgOQHifMFcDagEBRPMnoYopnawl0QYyCe6qDosUSj/C1Bfa+Ky4SZhb8cf+mdP9u51WWoS/bpF/vN9NSyggwaw5EUTva3YCuIidGc7DHyW6huKL7eZI6qYivlh+zho1XVxwSSQwxp5DJCz8TlnCvij94xX4qga0kWi1HTKU4yQHSKiLIYFA70pxdE1UTqitVu5KF4uRRyd3FfSbz4BZEM08ngPUnFrP8B01B7mnxZrSvN6EccOl9WdrjJKMGiimkMWCDxxWz0+Ikurw4NOTULxwauu0Hw== 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=BYREjeGL3kjIOGBYj8p+Der8eGbcC1/IqIt4pANG1pU=; b=esYdmgCz/JPnp7zpyr8qfhpNdEB5dH/zb8/RIhXyrnH89Mhev0l4T17UIx+jH+wBs3b/YrVzVchGnVLUpHfXybZIV3+SnGr93EVRebqfrU+eKgsSYkwN6wNjnlg9jzS0PxEbBxw+CnBC7wIPGi37nI0t6iMzrdLJfN5bl203JkKE1leq3wXu+Tjfu/lMJcYuvzHV0NWX5AnGlS7Orv/NAVzOczCRKwuKYWfzRhVAfzQ7ZOzd4kemkTxcqzd7GhSWwBQd44vvv7liDYbHiU0sFrORvpdwjmhZLZRDGJw2wa+iS8AbyqeMEHghmN5UZRv1nkGoO5vml8q1brBaYXjJOg== 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=BYREjeGL3kjIOGBYj8p+Der8eGbcC1/IqIt4pANG1pU=; b=br3qqdcBcveRF3+QkvLX6cBuXPyrviAGxqyWQQf9gT4FmyUaqtlbNZX4cfPtDSN72asDnSKA4ZVv1rEX4BwV7vcLK6JrSRykSkbhjMhNJQSG+itGeSYd8DSLX5veMomn7CCGgmHVbIiXYe6CoMaKe2XHeueoGsHYXwcE4NNq8ds= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 4/9] block: bdrv_reopen_parse_backing(): don't check frozen child Date: Thu, 10 Jun 2021 15:05:32 +0300 Message-Id: <20210610120537.196183-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: c8eb549f-0913-4ce8-bc27-08d92c081a9a X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:265; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2nHyt16CnZiDOQMk4DlRKYP6unZ8MhrOcGOnjdvaKlXiSu1GbqdbpDTQe98/dIzAx0RKPOiOv8XKvvYGxNyghlbkm1tqPGQRlWllxiv7G18z3Lbug7ftgfb/wLjPKqc+xM4LTjA0GOiGWOnqQuocypcNjSsnPWDap/x8l/RULhu69sHJlmHpZg3dcnbUTsQghBNLaKheBqqfAHv6MYKseeDylheVp8LIpTqtn+YDYFQqMkqJsNms26ZHMzeXSz9ss+yLsaSrTeZ+DAkdifFtQq9hxCnQrjVh3CJ6fhZX1xNWPr7YSYhD8aGcj0v2ibaNy/zpDPrfsvI4B9Z/cFiRygpNS4YgViwzGotN9El4ukf8Sc6c+/ybmDiP8xX2S6t4C6AMEZdd94Q/sQAA3H2exewbAbwj26aWhx4gm2S9d3Jb7KBNaMw52Xu0uEaALsc1OYehdmtu2sRSBal3nCjcCxRD4bPfkjJnPTFguH79M8unI21/BrgUx++8o5YAOLmJt9TmSUAn7Q68q4oVAiwF7jzytNwtMqFS7+UQJcE9iaAGF/Lrvp2t+HhgWrFkx66dzDz0ErKoQLou40wstJJ44sb8i1ZBDJIow5DD0MinP8TqriCKYjNkzuum98Y/tnfiSVC++5wHXCtcjxqiVMb0JqEFm9EAFbd3gQDCBd97iWTLZKAsANaFzHXjQ06bnTCA 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?bu+JPtFx38Nez356I/Z2gY6I+qmbxYihxuJxpVDkXScTEabEXtGKAzqADSM1?= =?us-ascii?Q?okOFt9PkWngGiuHFFGdvuOIfjUT6mzPoy2oNvtdMIouGR9Wnf7e4+/F5jYYA?= =?us-ascii?Q?vpXMVKbvmvtB+3zUo2A8IGTMSFmhcMkC9+c0MYSpLQ0YYi4ziF+41YThIMl4?= =?us-ascii?Q?PAa8qTCnJv/EzYceB6eYJwTXrvw6vVXq6WP0g9MtR3xo08kM0qoeXLa3ZIqu?= =?us-ascii?Q?POord2XWI9QSMzOKX6w3ZXPE7vyz+UjI8bSadpbiTg9dOflZPLA8XxdcJimh?= =?us-ascii?Q?TBy7/r/qs0mMeeyIUEZPwMEzsfx7a1fWQM8Z89iSdunUVnJ8g99mtSUo7a/k?= =?us-ascii?Q?PBg9g4GA5C+TklecFT1MJV2sEBEX5ByymD1OPTxuGrVYHKEyOyiW16TCMNG+?= =?us-ascii?Q?Bn14TqMb9JyVX0zNpGx7BXiPMNW6tWVpz3Y7AeNfZAftYEKdiM2J3DUL0G5I?= =?us-ascii?Q?ZgHuQPWH8Zq3HlhIqOhKeud3x4n/2jLMHCxKjdu+P4a/RBqXGK5gpinsTz+v?= =?us-ascii?Q?PWdA8NZkHZIzGps+CoEZpFN2ppo84qbYJU3MqEkETKk2q9/EfNpbv4yRUTdr?= =?us-ascii?Q?FuOLvMsGQ/XYlKt/H1FimfcKchr4Uijp2j4ybs8hpFm38fvo41M79/F0tWvp?= =?us-ascii?Q?x9XMtOtkJ9OFLRtzfuo1LM3vs5c7+IC2+pRtORveAblj2Z5/ptLk7FpEs625?= =?us-ascii?Q?ulVYUvEJFN+dk9O02+FmR6dRrIhenuRskbinxi8kRjIS3wQy5Xyoo1qDeY0Z?= =?us-ascii?Q?3bI9n3DjHJbkNgB8xEcdllf8iOPUmHefPmdPsZYWRJG2gPPqaR1TUis3Wnw7?= =?us-ascii?Q?5MyoOFJuJPKFuyjpzITTqLJm4TXa1JGwbohw2YHigbIRKx3tA995752hjc8l?= =?us-ascii?Q?PcxAofHuxmQwLoeXi+0orA4ZcwiEP2vxS3wxDi8K9lrhjei0HQ9v0QqJfcZu?= =?us-ascii?Q?e6UN8K93J7eWNIGQSg0NXzoCzk607Hgt9m7czOnY+RVWeF91lPK00hJWe+rw?= =?us-ascii?Q?N2toObyLVI7TiTGQ2/RT4dmsQmLyOQxTp9hRvfTe+bpSeEQDKb/e0xO4z7nb?= =?us-ascii?Q?FslhbudNgyDkBCAPm3drCyLtlZI09r9TqkSQfRglG/ad4W9nsublRC773Vaa?= =?us-ascii?Q?Mf9+2sZJtNLZCuIVcg5j1Vf7mkI/qbfJ0RcO8sRJ4W8i8ZSCue4e136NOcJi?= =?us-ascii?Q?IXA5l8tu+DKsvYShjEiiuUE9L41fKSN4W/o9J96KtzwCLMzKIbm4Ml/osM4o?= =?us-ascii?Q?T4i+Qaml+R1C9We4SrCCDg4ADdlGTelEXO5mvK3wP2KDVpmyS0GrhIDaDnac?= =?us-ascii?Q?JwtbIbOh40I5hvFusHKpWMod?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8eb549f-0913-4ce8-bc27-08d92c081a9a X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:56.8967 (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: 6cDDoIWS233KL+fcqv5Pub0N/W8vYuh+vwKIlxim3rALdwJgVelLHA/aR2gTo0g8dik5wCCafZx7khW/guTFzlFj/wf2v9QJ3nmnZ536tKM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.125; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" bdrv_set_backing_noperm() takes care of it (actual check is in bdrv_set_file_or_backing_noperm()), so we don't need to check it here. While being here, improve error message a bit. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 14 +------------- tests/qemu-iotests/245 | 8 ++++---- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/block.c b/block.c index 68ac99f2bd..d86e26299e 100644 --- a/block.c +++ b/block.c @@ -4308,19 +4308,7 @@ static int bdrv_reopen_parse_backing(BDRVReopenState= *reopen_state, "an implicit backing file", bs->node_name); return -EPERM; } - /* - * Check if the backing link that we want to replace is frozen. - * Note that - * bdrv_filter_or_cow_child(overlay_bs) =3D=3D overlay_bs->backing, - * because we know that overlay_bs =3D=3D bs, and that @bs - * either is a filter that uses ->backing or a COW format BDS - * with bs->drv->supports_backing =3D=3D true. - */ - if (bdrv_is_backing_chain_frozen(overlay_bs, - child_bs(overlay_bs->backing), er= rp)) - { - return -EPERM; - } + reopen_state->replace_backing_bs =3D true; 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, diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245 index fc5297e268..c7d671366a 100755 --- a/tests/qemu-iotests/245 +++ b/tests/qemu-iotests/245 @@ -878,7 +878,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # We can't remove hd1 while the stream job is ongoing opts['backing'] =3D None - self.reopen(opts, {}, "Cannot change 'backing' link from 'hd0' to = 'hd1'") + self.reopen(opts, {}, "Cannot change frozen 'backing' link from 'h= d0' to 'hd1'") =20 self.vm.run_job('stream0', auto_finalize =3D False, auto_dismiss = =3D True) =20 @@ -910,7 +910,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): # We can't remove hd2 while the stream job is ongoing opts['backing']['backing'] =3D None self.reopen(opts['backing'], {'read-only': False}, - "Cannot change 'backing' link from 'hd1' to 'hd2'") + "Cannot change frozen 'backing' link from 'hd1' to 'hd= 2'") =20 # We can detach hd1 from hd0 because it doesn't affect the stream = job opts['backing'] =3D None @@ -933,11 +933,11 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # We can't remove hd2 while the commit job is ongoing opts['backing']['backing'] =3D None - self.reopen(opts, {}, "Cannot change 'backing' link from 'hd1' to = 'hd2'") + self.reopen(opts, {}, "Cannot change frozen 'backing' link from 'h= d1' to 'hd2'") =20 # We can't remove hd1 while the commit job is ongoing opts['backing'] =3D None - self.reopen(opts, {}, "Cannot change 'backing' link from 'hd0' to = 'hd1'") + self.reopen(opts, {}, "Cannot change frozen 'backing' link from 'h= d0' to 'hd1'") =20 event =3D self.vm.event_wait(name=3D'BLOCK_JOB_READY') self.assert_qmp(event, 'data/device', 'commit0') --=20 2.29.2 From nobody Thu Apr 18 23:54:14 2024 Delivered-To: importer2@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+importer2=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=1623326865; cv=pass; d=zohomail.com; s=zohoarc; b=P7sv8AtEKZmnK6iIV/Q/vmWNiZ7ykhgh5uAf0SZz+YtFcSaFsk9CDbgxI8TSij7wEisWdoKuAxrnMZFjVwLPk7Cn6/sr3ys8CUCnGTBvGwbguQ+mL970CSHSFxWSiu38Wg0cKGPQy/uPlCiqQDblwgSXE+vqzfjVIS2m7jDWR6s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623326865; 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=+K6v85Em6NlHRpNUMJVT92lfLPbH5vPdbKcny2F2KZc=; b=PSyHs3sPRQi3TNqIvvdX9j3khA5swPGwu/IuDki4UYQ0q7QmjSEHsz8kJjFIjGW2rq8SuFXXHogf6dq0uloPpKIw3BgXdKgyIKakwvztKWL58wiKUCyVykLrdMO0hUjfT0UF8NKmtfcwwe5I+yZAOZ/JKPukDWSpa/5t5ttZ1/E= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623326865155785.8508899335022; Thu, 10 Jun 2021 05:07:45 -0700 (PDT) Received: from localhost ([::1]:46402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJTM-0005Mo-20 for importer2@patchew.org; Thu, 10 Jun 2021 08:07:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRu-0002BQ-Ij; Thu, 10 Jun 2021 08:06:15 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:15424 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 1lrJRs-0004Nw-RD; Thu, 10 Jun 2021 08:06:14 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:05:58 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:05:58 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FpgtGQMOilFvtYLnZ24nzozd5CHtxBjHctmPgAXCyqLJyGpQcvzISx+OQu0yKj1dNJPHhlRDIPzsACvVxwtiAHpC2K+BJ7Aavsz3eat1PkDMckfs6SmJBe/0FAIaFZ9ucGbCvehw+GQ76aYR6KUwPkQc1Ogio3zXNVT5gbqa4LJwv6Y5tjPqtdrfqhFxcvPsR60LbmaeUhfiXFOZ48u2gmXrj2yISATVdRNYOHMbvxHvNIVsJT0QrowJLMi6Jk2xcnI9tds2Go+YWaZISR4nTj0lxGrxHo8xGufYFVfiwS5B83tdVGlr3s9AwBMD2zqo4sc/RuRFIVWQadv0vsyDJA== 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=+K6v85Em6NlHRpNUMJVT92lfLPbH5vPdbKcny2F2KZc=; b=obkI6C8tNFOqh1c9BCVOnkGRd9Yh1RMGMROCuozd4y0kDNiQCD/BJVhfh5CEg3oLQTmM2rTM0giA5sudilpoKyPM54nTK9N2JCD6Zzwoqh6zGCvx6wo5nIAYb/I5biYQ6WvmKJ0ksDmZmtsgn7w4gd6Pbt4JwkJhhFp0tKZ6YWtEN0mdfnZ6LrgEPZVSixaRH1CEB609ey589NR6EeEvyup9e3x2v0CtTgQJIxANdhVjZ7zNsZ9jf74tOhaSXcD9vFqtRCZEh6TPc1mLikrjiO1ipVW7SQJrK+YVQTQA8d8I3rmi2dqbFssHxlktzGdUVOBeAk0H8RQL56nwaaDvrA== 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=+K6v85Em6NlHRpNUMJVT92lfLPbH5vPdbKcny2F2KZc=; b=sCS6nrriSf+wpicz8iyHeXnJF/glKOTkOCnTHuiMEs8cXBGvFR4MvJ8jWg3U/MYzjjbqUpJyVMgAijTx5g7AsEdhaf9NDed2ijGcr6aWhQyfvoP6xHVtqp6Fh26DxjYQvWg/8649vGoIYIHDzu90QJFVpRebHNbeITtlGPRv0Ks= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 5/9] block: bdrv_reopen_parse_backing(): simplify handling implicit filters Date: Thu, 10 Jun 2021 15:05:33 +0300 Message-Id: <20210610120537.196183-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 931ff29c-9b34-44c0-94c1-08d92c081b38 X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: 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: 6AocsElK7nXz94h+ZRexPvJI3mchr9T4WVF7sd61a/+nfe7BHt4+AjcM3Yvad0c8sjveNX8GDVVt0MvHV/snxbR50yRP8mVRkjFK2mXAupA7r5uiFhFjPtYlj3K+moSJg1Y6Rq2XBtoHkS4SFdhfmWd0YnBt6QS7fxd8zNxFPsnmAKNk3XJzTfu/m+8mrLvPy1SIiY/TNS+BSlQwKF/8bzoaAMRJMnR5OGepOvCJb8t+iRNSNBv66kxOZtksr0HCDZsNhVsmDTBpSWvP8BJUZYyHNA4IUZVpAuh4U9gIr9QqCxzSBVyKQX2V8jz17oYrHKCr5RTl/a5R5s8KuiSRGZQ2c13/wjyateKqI2INJy41+3zE82J2SFeq2S1tgOAJyy0wb3uMzuBVJAGY6zwa6THZnYhQfVRHPUPwpy7fsjwNDRxhdR8ZPCeMkfB0db/ZggvUoFwbZFavG47mniGQRgYPJXsN3DmFeuwrI+ZHyP5qDZpq8bM+2Ss4e0WHlLoHA+6j5Z5v2g/E+GYw1jQQJqTS9YJBiv+4AudiBiUm0Z193DmTYNcjJPfhHmXpAE4zPdh9cMUrpVtJYsVaReMLPlmfO1KuRlu3y6AeiHxNTvZeSBDcbW5e3fZrFyWxyjhAe7PHlFI31r6HZ3Kl3jE+xL0YFHqUo8oVSo0Fq0dJjS0XVKBEamuyx+ro4zt9ksuS 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?o9Oz2k2Ue9qfdOm7ThWZrd7iq2iDlN+dxqLnldDsQ03j3sQ98R3DZtp/ypWv?= =?us-ascii?Q?EI6BC2lxpCWuSptEBz41fWBPs8sDhVoR7456Knh8dmVeCvR/M8ec/QVTkiOA?= =?us-ascii?Q?3hec115t3XbdS39fWMJ+SSlYjeKnHpHto44Dq6TSdukmk8VJRxG7bfMHlkMM?= =?us-ascii?Q?Pexe2ZSMahSEnC97Yp3+ObqPH1yYD8IUIbtGeAv7qL4q1oUAZKoNgeTF8Nyt?= =?us-ascii?Q?is57M3NKm9t7GcuU6r+0ikMzLpxs3znM1VgS/0WWJsKKSm0pJjYWVDKok3m9?= =?us-ascii?Q?dL2ac3muoZ6oXyhnwbjPcHIoU8KH8ifY1EX9+wdBgTJjySx2BIW85UhuxItW?= =?us-ascii?Q?gHhLUj4SK45XWRC75VqLHBNspwNQFQfHeL2dsLVKOC7o0oINY7NmT1a3dGtq?= =?us-ascii?Q?4BNdaAp+Wr3vodFh2/33m+w3YAccV6rcryy/K7LZTXMiDy0zQsLZwt+dOYcF?= =?us-ascii?Q?l2dzhEAb32aux1pUvqjKuETDvv7uH/yexyEiUi1rRpi+qjfcJZbM9WDmudnB?= =?us-ascii?Q?NiaVooDzTaTo27mlByHvM/NlCgRQyCoOVdIM6tfskQyGyYEaDpW569XjvhFI?= =?us-ascii?Q?VHvcSwtT0/NW70454RvLxL7E5MlEbzNIFvE+9VuNQleByuxiRH3UbNuj2nWu?= =?us-ascii?Q?YX1RzHczm4IrugCyPG7GQCcyq6+MHs89GaAABSX2o0HWva0aLfty5V6aoD4b?= =?us-ascii?Q?WF/xdAA3QCU/rdneg8gXWnJO67i1ru4cNv+M9LEhTQF7HUZ70cKECKYxd6iF?= =?us-ascii?Q?mlz4VXAcIunbxoMsHsX+1vBF08HuOx6yrtQTnCRmtjA/BkkitFQZYbYSWnlM?= =?us-ascii?Q?9f/veSf3gRDQd4uVxRE5DkD6SV6Z87F5swBiLOVNi7PljtSEcZ/O3sFkQ6N7?= =?us-ascii?Q?aYSsBxEK+bu4YS1KqBHQb54gao2Mc9LnKAfA/bCvzfogMyufc6yT25L5j41t?= =?us-ascii?Q?WpCglWpLoj9pDF0yFC64Amos8XznLno3tOEnwLzMo+xHLz6PQA7LgTRrhNSX?= =?us-ascii?Q?62bpiEHeWK64YPz5Y9OXmtXD/D67qVP5FwJ/Ex1Iio4h98rBHQdrq01az0Yq?= =?us-ascii?Q?aSXDAo07d4Cs13jhX7aJE9T4NCmqDDTrX7NJHpWgyp788C1BCQSDl6QGpvDb?= =?us-ascii?Q?jy/CCaSs+kxeybnOm2uN9IH8SIxqitrDFJLN+4L2qkG8fJ+fVA0E4RIlb22R?= =?us-ascii?Q?F75ebTZPycxDq/lK+YeusHrC8grdO5dW/pd4qRg/mJP5PRIwp3p8oZvNrpzK?= =?us-ascii?Q?qIsXds5HbayPISVzIhZFBDG2it4hPA7gOBwE3VKv5sRTcxXWeYsphG3+Ms2w?= =?us-ascii?Q?Nu0PrSHlQc6UvyBabok+cMLJ?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 931ff29c-9b34-44c0-94c1-08d92c081b38 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:57.8983 (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: F7UWZIGFloEkz1Ag1GFUsAxJ9rbf1onxMoiZEnYP33+v8AKREoP6qBcj+9n8CJXk/WkJG0WqBwHOCndcCcZyvWc7KkzEcegXJ//sQ3RCC4A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.90; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" The logic around finding overlay here is not obvious. Actually it does two simple things: 1. If new bs is already in backing chain, split from parent bs by several implicit filters we are done, do nothing. 2. Otherwise, don't try to replace implicit filter. Let's rewrite this in more obvious way. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 53 ++++++++++++++++------------------------------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/block.c b/block.c index d86e26299e..1717e5cb98 100644 --- a/block.c +++ b/block.c @@ -4237,7 +4237,7 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, Error **errp) { BlockDriverState *bs =3D reopen_state->bs; - BlockDriverState *overlay_bs, *below_bs, *new_backing_bs; + BlockDriverState *new_backing_bs; QObject *value; const char *str; =20 @@ -4266,6 +4266,18 @@ static int bdrv_reopen_parse_backing(BDRVReopenState= *reopen_state, g_assert_not_reached(); } =20 + if (bs->backing) { + if (bdrv_skip_implicit_filters(bs->backing->bs) =3D=3D new_backing= _bs) { + return 0; + } + + if (bs->backing->bs->implicit) { + error_setg(errp, "Cannot change backing link if '%s' has " + "an implicit backing file", bs->node_name); + return -EPERM; + } + } + /* * Ensure that @bs can really handle backing files, because we are * about to give it one (or swap the existing one) @@ -4283,42 +4295,9 @@ static int bdrv_reopen_parse_backing(BDRVReopenState= *reopen_state, return -EINVAL; } =20 - /* - * Find the "actual" backing file by skipping all links that point - * to an implicit node, if any (e.g. a commit filter node). - * We cannot use any of the bdrv_skip_*() functions here because - * those return the first explicit node, while we are looking for - * its overlay here. - */ - overlay_bs =3D bs; - for (below_bs =3D bdrv_filter_or_cow_bs(overlay_bs); - below_bs && below_bs->implicit; - below_bs =3D bdrv_filter_or_cow_bs(overlay_bs)) - { - overlay_bs =3D below_bs; - } - - /* 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 " - "an implicit backing file", bs->node_name); - return -EPERM; - } - - reopen_state->replace_backing_bs =3D true; - 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; - } - } - - return 0; + reopen_state->replace_backing_bs =3D true; + reopen_state->old_backing_bs =3D bs->backing ? bs->backing->bs : NULL; + return bdrv_set_backing_noperm(bs, new_backing_bs, set_backings_tran, = errp); } =20 /* --=20 2.29.2 From nobody Thu Apr 18 23:54:15 2024 Delivered-To: importer2@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+importer2=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=1623327007; cv=pass; d=zohomail.com; s=zohoarc; b=Rv8dfcGb05EHNCMAry2JBK9yPratRsSP26rPdL38qgFBFW/vi9QTzGilBnXEl0wfLTU7AQYbQFOgPdi8Jnf/M5seXSPKYYQ98YzP5Cv455mmHHB9/tXs0cwoLU6RGwJObFnFrKPJA/bvJNFO07zVW8FhDFA9xuJitZTlOv9GZeg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623327007; 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=XojueE0NUoG8LVPazb2DhQu5QuPuiIXyBWdMtA48LlY=; b=Bj559SbOy41bCqVfSHtVYhI3uZqyUvZEiTGuA5WRY3MuZh6Usaez7YxdvFYbGpcAuF9eE7xHAkhIaalA03lFed8RBAleeLQwHLDLqH3N300o9j0kqTZUuQ5j4yvAsMRrWon0KyW3Z0Rq+mq6kZrYcH0uUzLmdvXsOxedcw4V274= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162332700774037.49478280100709; Thu, 10 Jun 2021 05:10:07 -0700 (PDT) Received: from localhost ([::1]:54954 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJVe-0002o6-MK for importer2@patchew.org; Thu, 10 Jun 2021 08:10:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39600) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRv-0002BR-5T; Thu, 10 Jun 2021 08:06:15 -0400 Received: from mail-eopbgr80125.outbound.protection.outlook.com ([40.107.8.125]:56129 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 1lrJRt-0004D6-Ax; Thu, 10 Jun 2021 08:06:14 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:05:59 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:05:59 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ltHJXH9+/p3wtsB6u3DDOsrEnSg8K/OQxbdzC9BgA5DalZwGKzyVh8mfCL1Pniigx76SJQvupGLNVBHGb/j5PqtrvI7cSW0EXarRajsjqE+Z9GTqLKCfhDEhplsd7uhVywBDcN8QTkGTzHCj6vj+sh91h77alxKynWQ4GlhX6ymLx66N+RG1J1VsKHGK4k9fpOyADbVWC0LXWbUzwpzyiHmj8sJkppfMpU67djSASDJjZGGNd+HikG627IWhbv6GNelrgbPloT+GIsnAGi+XeLWvqcIxtigxJWCPxqkArZbx17h0zcoDjzLM8t1Fkw7oXE0qfNW9Xh429VMBmGj34w== 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=XojueE0NUoG8LVPazb2DhQu5QuPuiIXyBWdMtA48LlY=; b=Ut90/SFeEo/MOaN2xPpXZgmjKZ25ySDdpUqXhChmN11H6QRmdId6UfdT4gWIBaS4UjCrMjD9+h7PLYh/PEGkKrur8oyRu+ZZAPnzX9IlI7PL5vZPqCZDQqEqZxowZ2BjyXkKXxXMcLLyQwhLg7eEHkNmP5MDqBs6fPY2WaM+V73IKYC0kr5NURoTAYBop5TNJ3HI/AAtcATLvwkx8CHrgwyI4ZoM7X2i0qaTHtIgVdez9pCwmUZWG6nEvq7EAFbKncW8kseXNzZTt1NK16HI22FoPKACm6KGTvmwotRvxWp+UneTUbMcciGma4V/RsEqkPzVYBRmL5g5xZCMXNQXnA== 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=XojueE0NUoG8LVPazb2DhQu5QuPuiIXyBWdMtA48LlY=; b=bFlPq2SWNfTXUlLbTlwpeeb/DBifOhLZkWVtRaEM58Up8e5jdRfHb/PD6EbgJRnuJFRSpwEQAVkucYKhIsmrVnUw3VQCikOHZjaDTf2fmHXiWkgeB9YXJDfMyzW0GZIOgKMDaOgQ2DDBv83lBzTEne1IfMXjCgHbfzrKzzAU9kU= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 6/9] block: move supports_backing check to bdrv_set_file_or_backing_noperm() Date: Thu, 10 Jun 2021 15:05:34 +0300 Message-Id: <20210610120537.196183-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: fe549e58-003a-4fc2-de8a-08d92c081bd1 X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:265; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8G6n3Y9nuczQrfdPUss5VNJRvPPb4o4qb81tTzwRZnQaOCV7t8CZCCFmNhNRn8VROfQC1T1YVX/+6mgBkIUcDbXo6tYVBv0MXk0l0AwSX6GneTCaKSxsW17j/kYey2511BmaLGYCO6Nh6uBad4WkhDilq7wllb/SQU+0kU1TJR+bEMoC4n0z/9ayeE4PlfkSXCUcUF59r4tYj8iJhYP+HtGzsa/Glh+mvwpfnMx8xK8yrnGA3uPLu+G4XAXePtNkO9wJ/dfm+o+PG0YKBBJus2umFQFs2IjcOojmjxe6T4hdZ8e3UYSly8XZ11uTzT7Uo8h7uM3nn57En60g3Bg+46i5MvoLs92/acdKfK0m55Or9Lo4M7hJLK5wrbHjmlRqZOumiRfFBT88Z5hTjId+bOIHLy4UjN/GzlPIDQtk3yGi0tQZTKAQCMbVeon0yK363PTsN14tGWuyP42AWSYmBa/WssO6JlRzfD1tOVssevNPqCnSCiTLaXZRJNMfqePt2+aBW8Tz4QkUHGRpvjPPvzNWwK6jQ+0l1zpdat08DWBi4xlxd3qA0BaTOkXT5FuJzQtsHM9nzTSSSWlbDHUmH49NOcIa7mC+wTgMV/a0CWAjQlJWOrQqNrhd801zj6wD451IjzBVQiuAfARQRTpnrnYkmoOJzd7fzo4zdcrTAqI5XSliZxtCLZL27XtHUN6a 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?na9zVC3ugcP3CTi8zIbMSZTe+Y88hHdjQCR1HYNDayGiJX5qs5uY/wZAOt78?= =?us-ascii?Q?V+YnlkdWulwJVk2u6WFWFgCvmT0PrZJxqEijQOiA9RQ3oN9w8YsxAIgD+jz2?= =?us-ascii?Q?WlILjGKZmbItXlQboiUkUyujRUxV1daEdgiyUJiP+op/6Lu+GMs+ZciunLO/?= =?us-ascii?Q?ClAyQytho1xiaKy75sWmCo6pE8E1wbdVLTw2glAgXMR4IZ1OYJhasoGzJ1mw?= =?us-ascii?Q?6F4YJbpuLX7Ktl2zcHjJxhIs8BC8ubb39G3RjZDnw4tO6kvHQUv9cBsFsGHy?= =?us-ascii?Q?2CXIeZfbde9eRFbzsIWYpGTGj3RgqJ6ZZGapYgCELlsRLUhdVaQSVGJX9evw?= =?us-ascii?Q?lsqTnGdkkDolmDVxFKnKFToA/wgSFIJqPxyRsjwsIvkS1oD35G/omtJM5USN?= =?us-ascii?Q?qpNV/ii3i/dFxBtMkU0EB1TqMuNPsAfKub1hkoIoGb1MolA5+4CoFvqahTsB?= =?us-ascii?Q?m0OclOX4K9t5VYvGcivS4KbX6Z+ITSSe2AEPMqbMGtG/hSwKOsozNg2a6GMN?= =?us-ascii?Q?epDKg43LqLnXTg0SPJQOUNcz2MkJounL7hFnGvU6K5Gj7yztcYGOT9vsv5q/?= =?us-ascii?Q?4KzC1hNbrN/dqYx4+klaNj32BApiIpD9TdFCgT3WsJ+DKt3xKq73ZLSLuEcr?= =?us-ascii?Q?mylfvySxsKZw07VNmTZ1ooRApETCxFW8kDTsL1anecIyQIV5xRoKYQfXgQQE?= =?us-ascii?Q?NT27DL/eW9lRW8xPh+vrnTQvi2TU5yRyFyLTjJi7Cy8EUtfPoNtJLpeAUViC?= =?us-ascii?Q?u6/r0NWpCeg6qB7/sYjYuDJYGAiQfE/lJhS3C4TCOE6GcCAAqo76yX3RFLa9?= =?us-ascii?Q?Te0EnOdgYfKRvg2ct6BbYgkzhU4lP0RqngQibnNHk2D5Y6+0am+0UcCUcCjZ?= =?us-ascii?Q?XZeDQT2aWJ/NSQi06MJmPC3bWy/YyYaX1yACqpjnYcoQDPcrcNI+n4129RtR?= =?us-ascii?Q?n6XLhbF8+UbFcRzCF8Q5qbTMWhcaE62rx9sq1H+pXtZddpj+fUxYTXCSizgu?= =?us-ascii?Q?uTQaHw+gM736s0n6tHfXf1p4IPJ/z6YCcR5kljVz1vziD8htPM93gCxwE0/8?= =?us-ascii?Q?NyUS8sNH7I8dWRgDZc8MKLsiIJ2rzah4VTOEJU0nkBJnRhV8k6A7irWOKQni?= =?us-ascii?Q?FGJhqzgP/vR/kVgH8e3iajzAPS5cZz8jAWEoCHKetAEdacvsLY0xXArZ89/+?= =?us-ascii?Q?Ovt6M38PxKJSHKN34FdPgV3qIsms6nWBG5cemDvDMoj5OvqpQSOkVHkwaplj?= =?us-ascii?Q?T1pU6W6WaiSlcSCd7EI/bIL1SWJT5Um9tMu4VZOwIw3ff7Mv8G0iowQ8Mg7z?= =?us-ascii?Q?rf1eb8NpC2nyCU9WLMVIq+fp?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe549e58-003a-4fc2-de8a-08d92c081bd1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:58.8959 (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: IQb1yzwUKMkTttQw26yovlQBGWzvWHpkCFddAqDuctxOe395MQRpINCmHwB48fPUT7NP9SWW6l+epD0BFu3sxZKeQXqLQs4Exdz/rdkBFZI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.125; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Move supports_backing check of bdrv_reopen_parse_backing to called (through bdrv_set_backing_noperm()) bdrv_set_file_or_backing_noperm() function. The check applies to general case, so it's appropriate for bdrv_set_file_or_backing_noperm(). We have to declare backing support for two test drivers, otherwise new check fails. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block.c | 29 +++++++++++++++-------------- tests/unit/test-bdrv-drain.c | 1 + tests/unit/test-bdrv-graph-mod.c | 1 + 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/block.c b/block.c index 1717e5cb98..f835b576a9 100644 --- a/block.c +++ b/block.c @@ -3152,6 +3152,14 @@ static int bdrv_set_file_or_backing_noperm(BlockDriv= erState *parent_bs, return -EPERM; } =20 + if (is_backing && !parent_bs->drv->is_filter && + !parent_bs->drv->supports_backing) + { + error_setg(errp, "Driver '%s' of node '%s' does not support backin= g " + "files", parent_bs->drv->format_name, parent_bs->node_n= ame); + return -EINVAL; + } + if (parent_bs->drv->is_filter) { role =3D BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY; } else if (is_backing) { @@ -4278,20 +4286,13 @@ static int bdrv_reopen_parse_backing(BDRVReopenStat= e *reopen_state, } } =20 - /* - * Ensure that @bs can really handle backing files, because we are - * about to give it one (or swap the existing one) - */ - if (bs->drv->is_filter) { - /* Filters always have a file or a backing child */ - if (!bs->backing) { - error_setg(errp, "'%s' is a %s filter node that does not suppo= rt a " - "backing child", bs->node_name, bs->drv->format_nam= e); - return -EINVAL; - } - } else if (!bs->drv->supports_backing) { - error_setg(errp, "Driver '%s' of node '%s' does not support backin= g " - "files", bs->drv->format_name, bs->node_name); + if (bs->drv->is_filter && !bs->backing) { + /* + * Filters always have a file or a backing child, so we are trying= to + * change wrong child + */ + error_setg(errp, "'%s' is a %s filter node that does not support a= " + "backing child", bs->node_name, bs->drv->format_name); return -EINVAL; } =20 diff --git a/tests/unit/test-bdrv-drain.c b/tests/unit/test-bdrv-drain.c index 892f7f47d8..ce071b5fc5 100644 --- a/tests/unit/test-bdrv-drain.c +++ b/tests/unit/test-bdrv-drain.c @@ -95,6 +95,7 @@ static int bdrv_test_change_backing_file(BlockDriverState= *bs, static BlockDriver bdrv_test =3D { .format_name =3D "test", .instance_size =3D sizeof(BDRVTestState), + .supports_backing =3D true, =20 .bdrv_close =3D bdrv_test_close, .bdrv_co_preadv =3D bdrv_test_co_preadv, diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-= mod.c index 88f25c0cdb..a6e3bb79be 100644 --- a/tests/unit/test-bdrv-graph-mod.c +++ b/tests/unit/test-bdrv-graph-mod.c @@ -41,6 +41,7 @@ static void no_perm_default_perms(BlockDriverState *bs, B= drvChild *c, =20 static BlockDriver bdrv_no_perm =3D { .format_name =3D "no-perm", + .supports_backing =3D true, .bdrv_child_perm =3D no_perm_default_perms, }; =20 --=20 2.29.2 From nobody Thu Apr 18 23:54:15 2024 Delivered-To: importer2@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+importer2=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=1623327201; cv=pass; d=zohomail.com; s=zohoarc; b=IAM+hhIX+nIj2dFOAOtP8Tmtw8SRV3Rgs6w20qiCl6VO4ShpuSe0vix14j3DuSup6fmyD5oVGb1IXcXCQmQYtpS9SJFDO8yYR8rPKKoQ/VQkllhh3qsJgSM0N5IZE+QuvF2dyzxeziE7r0eNVvW5cN1SnnEPWY7I1ZNu9Xbirys= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623327201; 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=R7JfD+Iv1a1uMrRzPGe28zUw4jVfNKDQhLGkEcmRh3A=; b=nGcuEC93r32+rduC/CIVlRi27EHgUO6Rx0XHLbnJq0HK3SsRM5VABUACYCZ6+DG8KYpCqFJxljX7O5WtCoHGsaWW4mGl7LKkJrDPSqi6+tZxClC0CaqpQNPq6O1VpZr0Gab774o0MG4mMMgAM1iCemPxIVV+1xJDN6jbLuJji5U= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623327201125509.75209945017684; Thu, 10 Jun 2021 05:13:21 -0700 (PDT) Received: from localhost ([::1]:37068 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJYl-0001RP-Vb for importer2@patchew.org; Thu, 10 Jun 2021 08:13:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39622) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJRx-0002Dy-0g; Thu, 10 Jun 2021 08:06:17 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:15424 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 1lrJRv-0004Nw-AU; Thu, 10 Jun 2021 08:06:16 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:06:00 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:06:00 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:05:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NRl7y1j44M/nhTr1QaVJrNustxTJBlSkjJH3QUQFeiOJzPsOg1PiFvQ0h7FohSRXoIgGISoPg1vhynRRjWM0hS6GUWsn7hWShpvjaiFDAqNpACAJTqEZiQG1Gvq60rrAYFOtPe8A2iPSweEQinpMw3tlSqQYN02+Os92JFuiLeK6ugesEswL/wFGViKR0wsF+LpIM0DOCigaGpHZndOeZ7yQtA/WJlqBMWLnlOTrDxIqEVeWP/7ukEEdwMBumQyek/0ay1Mm3eoVRFtpSRKv2I9+/uI8w2WaqJ1onacHOVUC3q5+QZ2/5Vps6Pdc0iH+kU7AGRf6MIoFR3PBO32GjQ== 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=R7JfD+Iv1a1uMrRzPGe28zUw4jVfNKDQhLGkEcmRh3A=; b=By0B3bJ+huIsGdhleOnGw1pLvf2gDRIYYv48073AmrxoL6JORKNiAEehOMYRtthPse5I0YIJlcXjBE9Pe7+l/31/EC2zEmTwrHvWRPnmKj2c3+2m4lXOMF8B+Hnfo0Pwwcuhb6x+MNTE5M+U0iiGcMgLJ8s7yyo7x84IZDlVTmBjR7fKLbt/xBJH256ZJlN4pIJf6Nz5OmOYcEdvLMcKUpA4ZeZ/PfAIr6ks05O/61Su1MopgCjQMStlTEfOQipdoCFzdmnZRParVXHOhme0fZAgbyIAA6cHbva3sT0UH+k28H/F8aetgcHqks7o3q+Nbl2Fqt20GQjqBhWKBpJO0A== 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=R7JfD+Iv1a1uMrRzPGe28zUw4jVfNKDQhLGkEcmRh3A=; b=HGwfqe0Eah5akcU8nQ3rVgbr6sk3ctEyOGV2LNjhV1SzcFvStIPL0uZI75M6fR6NT8GhC2h31ZaSE1778gpfx+xWhJwl8nNN+iMsa2zPM+/54DRgbkw8EuW16cXMKU815LA5LihlS3oD8QO8IRu8394bjXGjJGXK0w203kBNPtA= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 7/9] block: BDRVReopenState: drop replace_backing_bs field Date: Thu, 10 Jun 2021 15:05:35 +0300 Message-Id: <20210610120537.196183-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 68559fe4-bf0e-4bc1-4ed7-08d92c081c5f X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:669; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iz4KG2eVBsUjSilCrHHZk2ES8P5+y7XraT24tH3CDtwAiu0HWqckSlM16Wkaky/7g4Pviqnxg1wCKXPC4Ek0hoIayCVxJc3Kjo6kCnvIgZ5Odn/xoNMk3DjLplFAy3QpA079jO1jv48GLgO7GtJzsMnmSmdC1Rtt/ayIllo3jSOxHXGYKDJd+FvF+8jSMrLtOc9G2+ARiM44WuE5cuMiatIySLRrG2HXXupjBx8/rZ6AY1VKsCpsCcBeHTd791PDC/DraqaGTYZAHUJubLWyJ2iLAqkEzXDNqXnIWyl2LnDvwxpHRrtvX/U/R7aEtpLdfCQ3PKqlG9JGP2ir7WNR3e1DiqyCLtNL5pVsUS75igLfm9W1oEN4LmxfroP13jPFoHiMrS/sXCSn3zzcCzIu5/dbssIVG6F3b/aCD6W5oEEBA6p2Y27CXbp2mHBMzuChE+awYc2+ux1z1VkUEvzYzIM4UgmC416ILDeyvafFmwvqWrRAMySr+vnB7V6bOLcC+TlPkbipEheDQzjr/Tvh0B5X8BS0SzSFPnv36a8V9cNsmR8jr7l7L8sLRpxDVvu8LZEKAeAHVG8rD5EFrxkqHCJNzLDhI4uQVYHK5y8/GZ8Oug7RdzmtndfuWJY3RASwQthYwRQBtPK2Orr5HMao5tP0VNpGDU3GcZ5Noeby9NL6M94HPkLLNwjSQlS5JrWL 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?ohUhLyQ4lE+Wbn7gUR3J/1urSjInZy1I7km+wmeznqlOT2tnHruUMSqbG9R3?= =?us-ascii?Q?/wiwSrqqMDheREHEHrO49Wh0aTgJkoJbsv+7zG+6IW2pkS8Pjye5axB1pVWE?= =?us-ascii?Q?GVCQZaPLm/4WgChh+Q8xHzyOKq+yv+a281ltHldvbODflFg+MB/H5BPJ4U9A?= =?us-ascii?Q?lIH3eS8j39V9+yRZOKH/iSwsLbwTqMdlkw056kvJzcWWI5+BwU81b3pryzWB?= =?us-ascii?Q?+4m9chMhwkyYSS+jQn6A4UxEcyYZZiIlB+3svl9lO8JbBr1g1fCmp+7YCuwT?= =?us-ascii?Q?CgBZdcivN5DCnRubCWDg5ZLVoaE6sEplZifhQs7PD7vBd46qi77Oedy0a/x+?= =?us-ascii?Q?jV0io3eL8PkRfpd/CIlHzAeoxuOtVlwabUgCUXZyAmyqaxhemMwdBClIBXCd?= =?us-ascii?Q?qnYCTR5SZXJoacGy1+ARykyBRn2K7IvkbM6T0MPbezj31l5fYG+PGzM9zEFN?= =?us-ascii?Q?FGC4P1TBnk9gg8c6w8RG7dj9sEhPVLnavV0dQlToR64Vb638UgDLfTSc0zj6?= =?us-ascii?Q?8Kah5LK1WVU97zyuuqKb/je+gwLX/5DT32Dr9/FSW1XCx+Rvo2UHmJ9fIytq?= =?us-ascii?Q?ygNRirsuZXppv+Jqat/ldfr8j/3SbpUENHBY/n3i1EX2MyupeQobmgLa+YLn?= =?us-ascii?Q?AkBsWR3gv+yu6qudkDmI46NHyJcQIi61Aepn6NkhiqH2FvD3NrCFBmAqB30e?= =?us-ascii?Q?uaBwo+yzKqh5bWJ2Nf+2b1sQ9+od96hnJwz9AybkaHG1E8xLLkEJGEj8+l/I?= =?us-ascii?Q?kAf1csm+2Mtia2etOWKT0+J22O8w5twJPKi34RJeQvjQBPIgs2w4teohySHm?= =?us-ascii?Q?HGuOhR9NGCjwYF8d8dYwAzu44zx9+0Mic/6P1fihpJjdEtenK617V5liminL?= =?us-ascii?Q?1fK40sXzBCbEKV8ZKBaLO1s2UUNoDO2sG/bZPaL9H4MyH/F6IHsycHe4oZXn?= =?us-ascii?Q?L4FXFDUGumxDxXvMmND27XDbMHQaX/YG6i7wLyp1nUvlkBMNE7gtGY7cfoUU?= =?us-ascii?Q?3M2zF76NeAuIk1CSmV+kw5qfRe43Uuc9XE3a+oEDDX7aXkGHH4Q+dFh4QHfZ?= =?us-ascii?Q?OmZBCuCiHAA1EBXOqCCwwCcZ4mN6uUDVaDh4q3XMWzY3XWYvFdTD94zzGFu1?= =?us-ascii?Q?HisROIqOoZeazfDp9KcHouefLMDb5uCkyZI6OgvhMKOc3rLtDHsKMNdaPxCf?= =?us-ascii?Q?vJ5pXd/FwdM0QLpo554n29AlntQ0AKLv4o0z6czrkq6JU+52FWvmlIRWz4F4?= =?us-ascii?Q?gryXXgJl87PxINhhhUkREBTT9fc0ZANF9BswSaugfeK+QnP8DsddV1V2vwZp?= =?us-ascii?Q?1xjCewp2745i+uXVVIrO3iia?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68559fe4-bf0e-4bc1-4ed7-08d92c081c5f X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:05:59.8338 (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: I13pKGUQ9fUPodcarv0SvE0fOpSFWGn7wS1MNbqd8qQTz2bFaytWgnV1uMyJchto3dOTnLgm5EQW+iA3Km23uNZsuThwmkGy/X0hbeoqLTI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.90; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" It's used only in bdrv_reopen_commit(). "backing" is covered by the loop through all children except for case when we removed backing child during reopen. Make it more obvious and drop extra boolean field: qdict_del will not fail if there is no such entry. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/block.h | 1 - block.c | 10 ++++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index 8e707a83b7..d28022e761 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -208,7 +208,6 @@ typedef struct BDRVReopenState { int flags; BlockdevDetectZeroesOptions detect_zeroes; bool backing_missing; - bool replace_backing_bs; /* new_backing_bs is ignored if this is fals= e */ BlockDriverState *old_backing_bs; /* keep pointer for permissions upda= te */ QDict *options; QDict *explicit_options; diff --git a/block.c b/block.c index f835b576a9..eb98aced9d 100644 --- a/block.c +++ b/block.c @@ -4296,7 +4296,6 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, return -EINVAL; } =20 - reopen_state->replace_backing_bs =3D true; reopen_state->old_backing_bs =3D bs->backing ? bs->backing->bs : NULL; return bdrv_set_backing_noperm(bs, new_backing_bs, set_backings_tran, = errp); } @@ -4550,17 +4549,16 @@ static void bdrv_reopen_commit(BDRVReopenState *reo= pen_state) bs->open_flags =3D reopen_state->flags; bs->detect_zeroes =3D reopen_state->detect_zeroes; =20 - if (reopen_state->replace_backing_bs) { - qdict_del(bs->explicit_options, "backing"); - qdict_del(bs->options, "backing"); - } - /* Remove child references from bs->options and bs->explicit_options. * Child options were already removed in bdrv_reopen_queue_child() */ QLIST_FOREACH(child, &bs->children, next) { qdict_del(bs->explicit_options, child->name); qdict_del(bs->options, child->name); } + /* backing is probably removed, so it's not handled by previous loop */ + qdict_del(bs->explicit_options, "backing"); + qdict_del(bs->options, "backing"); + bdrv_refresh_limits(bs, NULL, NULL); } =20 --=20 2.29.2 From nobody Thu Apr 18 23:54:15 2024 Delivered-To: importer2@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+importer2=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=1623327064; cv=pass; d=zohomail.com; s=zohoarc; b=UxwrHx7pg9DdOpJ+aiVpRdIqYP2rlbYQIKcVUS7hv/sk5nQqvB/sfyElRH+DSov5sgqCs5veEHZzyBIJojKy0TeEXs4f98imbsVt3p96G9ADVgtDuYL1YWICOr1R4ZRxTzAsbmhEY5v+MajRrNbObo8QwHeEU9KRItaVnUZVv/Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623327064; 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=4QJOe/GYl8SJ2H5NZjtoK4jH8XcIAFqR+/6sw7/HTpo=; b=SC0oG3S59SvDmWyijARKGvV4vxFeIr6VYpNrZBl1BAEJVkDmknpUOYJARvEyjxwsEzYz74zp+8jVgLza+M86IHgkG1Rizm/ZOPP2wkuFsXZu8K6HAgzuTUMJQJtKvEio5GKGBp/44Zz1S7wzixNDdQYV/Gn6wy9eT3b2lVz/HeA= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623327064844894.722616766524; Thu, 10 Jun 2021 05:11:04 -0700 (PDT) Received: from localhost ([::1]:56414 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJWZ-0003ol-Ni for importer2@patchew.org; Thu, 10 Jun 2021 08:11:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJS3-0002LV-C7; Thu, 10 Jun 2021 08:06:23 -0400 Received: from mail-eopbgr80125.outbound.protection.outlook.com ([40.107.8.125]:56129 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 1lrJRv-0004D6-Ri; Thu, 10 Jun 2021 08:06:23 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:06:00 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:06:00 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:06:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aMh2+HNisaGPEK3t1NraTLgFbbGegnDyiMPT+7SW8RsclbbtTKT0nu/Pg1102I78rv5T1m1IaIY0PIGMYmeGnPtf6BrIRUF763BimpK3tPfLQfGhzZoUBG1aSB62nynz1Un4scNdfQScqKmoE3oWj6vaso/auxVowrzFHW+uhLXqyJ3zm4ONPFZ+ZdSHf7EUr7rr9+tHo9S5NpVBLpdxDD6IOwfaImo3Lde5moKr7EKYx6uMZspn02tzNDWRY9WM37cUkMcFfGVm0aZs6/efC8Ar3+EzmOikGdX2Q/QxFbCpV1DjY0WOtQc/86gPHaZy6NFL4lB9jwla0AuqsMC+1Q== 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=4QJOe/GYl8SJ2H5NZjtoK4jH8XcIAFqR+/6sw7/HTpo=; b=VQbmP7HWSPiDXCQZj6TkzU1nwi4FeGHQrsRa0iiCMZCfnXu9ltmCBos3vlV+neC4lQnpefHGdMe+Ggmgq1wdQr835YlyBI6XmKvFB5N+873+EXSBMXzemdzTp/Y12i/MIvvf2Ifc0NXOp9Oq7vUCX+0WQiDiebn5r1RKC8q0ilmcO21moX/jHm+2NXx9f/IX9wQI12LhJE0/OHj3d75yuQ57bMo4DldR1z3JK2zC4LHkCVrepeIwZDw8nFgd5qiiCXtl2poltGJrpi68+4QTepNPyRclQllcgoR3S5HjwbA8QuI61LdRV1BrUKs4H7msjM1LN17DVmSs73vjq1qQNQ== 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=4QJOe/GYl8SJ2H5NZjtoK4jH8XcIAFqR+/6sw7/HTpo=; b=ebtoLdpyCeei5YYw22AbT3AjqoddQw/r94xWqTE4H35K+RgQuPQ2Ir6E9LMywrEEJTBGCSxaIxOtA2xSxzd/00zcYSfEKfH/oi8vwujSlJsPELUovJEbI/P/IoGML9AR1AhrA7f6TPo7p6bWMlDzqig9ANeJnPHveYvtAx0KgMs= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 8/9] block: Allow changing bs->file on reopen Date: Thu, 10 Jun 2021 15:05:36 +0300 Message-Id: <20210610120537.196183-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 4173b4d0-3359-4ff6-b245-08d92c081cf0 X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: 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: RT7hufi1kguAE6mr2GoDLMD1lWjdiotG2tcebH1l6nCLipIb9ryAV40Aa5oSPGCyvXM9tpe37IRm8/Ye3EKubbJk4PzH66ouMYE62nRt9Zf/E6JdP9e0RO4DKqBomE4xMsmcAwcDA49HxXMozX6ozvnT+pNl5u5NZecHejCxUpaM7r4ukTaZxOI/N6RfKjtCDhnC5tk4iJOSZpfX3S5l6fWqAyLOmkTuRSnB9dfI/ekCX67puwqn7Kc/bJFEHNTm5ksCrHPnSc83waIrvSZKDAKy0fVdEMtFf8TSAtFf6V2eOKoVMQqfUuf9acN/mEYbE5Kzm/xMiNXsYdbKq3tiBJh5ZBt763Ua/cosJzq4C4I4slKZgC+xluLYnT1i1iLwDoDWfGy5e1fcwT/vRBJoF8SfsHXXgxuZ8x1IaFPBMRthspw1fK7jxgTEP7sQhxNIzXrfXLHSoTS3E3RYutMVbqwIljaYcMCcAVe6Yxar3/tYgRDvDDtTy9EwA45CjH3f6SctE4gcFzisFspw2ZpHAvZvmdLiIMNH8CCunp2NrsjA1OHXijWCnrQjFLgmW4wlhGd7kbLSiZnPF1Myg4RCTotuRNVPwKgTXZKbe81MxXKw9hXBdueEbObvRFX232e5ZIXyTGNCtN0vFRczjBEoHzpTtELS/k7JVfkcnaHPpNzx8G6c4mCZemwd1TM1+E48 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(30864003)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?2oKQLBkHn4weZ0isFa95GcTt1Ax49/3nqHWB05UNnOUDW+5t/Y32tHwqjD39?= =?us-ascii?Q?QwLNWZGmYxQMuwkxRApRIEuSKTlWCLVH/Di3x8MFz6T1a6lMT+zZELB9gwjF?= =?us-ascii?Q?YVBjU4wWhlrLiwKlYxMt9ToTCxP/rv3SHHsfMLhCEek0VlALoEZcOGBHd9GI?= =?us-ascii?Q?nlD2GtTl98pj6N+WUqUnbCw+wLiwvcva1mEivZGLeb1J/zYPRFq82WAAmI1D?= =?us-ascii?Q?ow8YoY57y/2uxXOonygBrslWTEFjgUEkCU0xI22tigFh5/62E0XWLgZxYSqT?= =?us-ascii?Q?BaXaaBzucMqGH+Z7vk07UkfoXTHiUHWStFa2zHdMJM3BtSWbrb2rLzbO18eN?= =?us-ascii?Q?pUu6nVFlBNY6ZWdPhFHpvC8gsjni542fQfHljR6HGOEUlNz9/DNNxzlhmW8l?= =?us-ascii?Q?mdDcJ/yeGMpbUNDdTvTTAxYTmHpK6Zhnd7ggbBiRokbXc+9Qmr19IOrCIH2g?= =?us-ascii?Q?dkkSRTXZqHXIW+MfqA1H5+L7BwghljV7VJpDMwo5l7CV9ujCZSBwR+g6XqUf?= =?us-ascii?Q?zuBB6LuBd/IRRXu3tQSIb5wbL9t4BAUa6w6v9CQx6QJPj2R36wzGUwuhJRUp?= =?us-ascii?Q?cWlmhEoTgb3YSv8XUKrut4p/usGbG424wH97JYW/bRhYE0EzAtJS+3tFMBPK?= =?us-ascii?Q?NkUzdrK8cH8h2VnXCJnuG5gE4k6tJ9Caloy6e/F3Xhej2CYyfr1Ve5462DZK?= =?us-ascii?Q?fhs21M2T9wDaMOV/cMo0+0qVdpqXJ7sDRJybuGTvEN1/T28qOZoSCsbREAe+?= =?us-ascii?Q?IDziEE4eAh4v3FPp6FI5d7/KMSq9Yg/21jo9Qpwxmg1cM1unWbAlUY0SEeiB?= =?us-ascii?Q?jrbTZpp/BCwbmuNj4QSM2i+VTWXMkzCgMFVW4vBWlYWpTiZdryRAaQ64I1E7?= =?us-ascii?Q?J4+uFpKztXzEUrl4JnLTlrmelk4yslVcfuwVDVcUs4X/T2pbjSo8JdZEV6et?= =?us-ascii?Q?TaifVWp/AEtu30ZSOtQO1eZY8ub+pPEojTmFxVjkQb6jUbczU9AYE35GZ+vr?= =?us-ascii?Q?9rC0sBlSpDUChCgKBPYOhpQV2S0UvZAdlJXJe4sSnHSpjXgPmGahoPHk96en?= =?us-ascii?Q?HtdGuWus198pDLAs9LqzmY/sekUEZcjezFFrl8WsWuZ7K+lUeePN/naUZ7e6?= =?us-ascii?Q?GB8JHQLYraWLb0InPiOoagStQx+7w3iPjYXF8tYXr1OeyHF16VTleIihDK4h?= =?us-ascii?Q?Ybq7btOOnQYx1AXZhiEYGc0Uq0P6KammXbwwd92rTVHMoM33+reU+v3aVIeB?= =?us-ascii?Q?59QbDVJel/vHC9cTuSrU5FczVpcQKxJevEpN3+f8weicxfLO1fT7MVGxWyAo?= =?us-ascii?Q?w9jKrByuj45R0u9gAwkWo1Gl?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4173b4d0-3359-4ff6-b245-08d92c081cf0 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:06:00.8613 (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: e1wof5YNTk7IiTyIEtADfhMeR8j4vn4bmjhNkSp5+6Su0mH+E4PuXgvk23bUJoBwvcqg/Oj9QzSFAePi+WoTavvVwLtk0n9jKPDQTWYRjq8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.125; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" From: Alberto Garcia When the x-blockdev-reopen was added it allowed reconfiguring the graph by replacing backing files, but changing the 'file' option was forbidden. Because of this restriction some operations are not possible, notably inserting and removing block filters. This patch adds support for replacing the 'file' option. This is similar to replacing the backing file and the user is likewise responsible for the correctness of the resulting graph, otherwise this can lead to data corruption. Signed-off-by: Alberto Garcia [vsementsov: bdrv_reopen_parse_file_or_backing() is modified a lot] Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/block.h | 1 + block.c | 78 +++++++++++++++++++++++++++++------------- tests/qemu-iotests/245 | 23 +++++++------ 3 files changed, 67 insertions(+), 35 deletions(-) diff --git a/include/block/block.h b/include/block/block.h index d28022e761..7ec77ecb1a 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -209,6 +209,7 @@ typedef struct BDRVReopenState { BlockdevDetectZeroesOptions detect_zeroes; bool backing_missing; BlockDriverState *old_backing_bs; /* keep pointer for permissions upda= te */ + BlockDriverState *old_file_bs; /* keep pointer for permissions update = */ QDict *options; QDict *explicit_options; void *opaque; diff --git a/block.c b/block.c index eb98aced9d..d7d309cf52 100644 --- a/block.c +++ b/block.c @@ -92,7 +92,7 @@ static void bdrv_remove_filter_or_cow_child(BlockDriverSt= ate *bs, =20 static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue, - Transaction *set_backings_tran, Error **err= p); + Transaction *change_child_tran, Error **err= p); static void bdrv_reopen_commit(BDRVReopenState *reopen_state); static void bdrv_reopen_abort(BDRVReopenState *reopen_state); =20 @@ -4148,6 +4148,10 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue,= Error **errp) refresh_list =3D bdrv_topological_dfs(refresh_list, found, state->old_backing_bs); } + if (state->old_file_bs) { + refresh_list =3D bdrv_topological_dfs(refresh_list, found, + state->old_file_bs); + } } =20 /* @@ -4240,64 +4244,81 @@ int bdrv_reopen_set_read_only(BlockDriverState *bs,= bool read_only, * * 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) +static int bdrv_reopen_parse_file_or_backing(BDRVReopenState *reopen_state, + bool is_backing, Transaction = *tran, + Error **errp) { BlockDriverState *bs =3D reopen_state->bs; - BlockDriverState *new_backing_bs; + BlockDriverState *new_child_bs; + BlockDriverState *old_child_bs =3D is_backing ? child_bs(bs->backing) : + child_bs(bs->file); + const char *child_name =3D is_backing ? "backing" : "file"; QObject *value; const char *str; =20 - value =3D qdict_get(reopen_state->options, "backing"); + value =3D qdict_get(reopen_state->options, child_name); if (value =3D=3D NULL) { return 0; } =20 switch (qobject_type(value)) { case QTYPE_QNULL: - new_backing_bs =3D NULL; + assert(is_backing); /* The 'file' option does not allow a null val= ue */ + new_child_bs =3D NULL; break; case QTYPE_QSTRING: str =3D qstring_get_str(qobject_to(QString, value)); - new_backing_bs =3D bdrv_lookup_bs(NULL, str, errp); - if (new_backing_bs =3D=3D NULL) { + new_child_bs =3D bdrv_lookup_bs(NULL, str, errp); + if (new_child_bs =3D=3D NULL) { return -EINVAL; - } else if (bdrv_recurse_has_child(new_backing_bs, bs)) { - error_setg(errp, "Making '%s' a backing file of '%s' " - "would create a cycle", str, bs->node_name); + } else if (bdrv_recurse_has_child(new_child_bs, bs)) { + error_setg(errp, "Making '%s' a %s child of '%s' would create = a " + "cycle", str, child_name, bs->node_name); return -EINVAL; } break; default: - /* 'backing' does not allow any other data type */ + /* + * The options QDict has been flattened, so 'backing' and 'file' + * do not allow any other data type here. + */ g_assert_not_reached(); } =20 - if (bs->backing) { - if (bdrv_skip_implicit_filters(bs->backing->bs) =3D=3D new_backing= _bs) { + if (old_child_bs =3D=3D new_child_bs) { + return 0; + } + + if (old_child_bs) { + if (bdrv_skip_implicit_filters(old_child_bs) =3D=3D new_child_bs) { return 0; } =20 - if (bs->backing->bs->implicit) { - error_setg(errp, "Cannot change backing link if '%s' has " - "an implicit backing file", bs->node_name); + if (old_child_bs->implicit) { + error_setg(errp, "Cannot replace implicit %s child of %s", + child_name, bs->node_name); return -EPERM; } } =20 - if (bs->drv->is_filter && !bs->backing) { + if (bs->drv->is_filter && !old_child_bs) { /* * Filters always have a file or a backing child, so we are trying= to * change wrong child */ error_setg(errp, "'%s' is a %s filter node that does not support a= " - "backing child", bs->node_name, bs->drv->format_name); + "%s child", bs->node_name, bs->drv->format_name, child_= name); return -EINVAL; } =20 - reopen_state->old_backing_bs =3D bs->backing ? bs->backing->bs : NULL; - return bdrv_set_backing_noperm(bs, new_backing_bs, set_backings_tran, = errp); + if (is_backing) { + reopen_state->old_backing_bs =3D old_child_bs; + } else { + reopen_state->old_file_bs =3D old_child_bs; + } + + return bdrv_set_file_or_backing_noperm(bs, new_child_bs, is_backing, + tran, errp); } =20 /* @@ -4319,7 +4340,7 @@ static int bdrv_reopen_parse_backing(BDRVReopenState = *reopen_state, */ static int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue, - Transaction *set_backings_tran, Error **err= p) + Transaction *change_child_tran, Error **err= p) { int ret =3D -1; int old_flags; @@ -4439,12 +4460,21 @@ static int bdrv_reopen_prepare(BDRVReopenState *reo= pen_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, set_backings_tran, err= p); + ret =3D bdrv_reopen_parse_file_or_backing(reopen_state, true, + change_child_tran, errp); if (ret < 0) { goto error; } qdict_del(reopen_state->options, "backing"); =20 + /* Allow changing the 'file' option. In this case NULL is not allowed = */ + ret =3D bdrv_reopen_parse_file_or_backing(reopen_state, false, + change_child_tran, errp); + if (ret < 0) { + goto error; + } + qdict_del(reopen_state->options, "file"); + /* Options that are not handled are only okay if they are unchanged * compared to the old state. It is expected that some options are only * used for the initial open, but not reopen (e.g. filename) */ diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245 index c7d671366a..d955e0dfd3 100755 --- a/tests/qemu-iotests/245 +++ b/tests/qemu-iotests/245 @@ -146,8 +146,8 @@ class TestBlockdevReopen(iotests.QMPTestCase): self.reopen(opts, {'driver': 'raw'}, "Cannot change the option 'dr= iver'") self.reopen(opts, {'driver': ''}, "Invalid parameter ''") self.reopen(opts, {'driver': None}, "Invalid parameter type for 'd= river', expected: string") - self.reopen(opts, {'file': 'not-found'}, "Cannot change the option= 'file'") - self.reopen(opts, {'file': ''}, "Cannot change the option 'file'") + self.reopen(opts, {'file': 'not-found'}, "Cannot find device=3D'' = nor node-name=3D'not-found'") + self.reopen(opts, {'file': ''}, "Cannot find device=3D'' nor node-= name=3D''") self.reopen(opts, {'file': None}, "Invalid parameter type for 'fil= e', expected: BlockdevRef") self.reopen(opts, {'file.node-name': 'newname'}, "Cannot change th= e option 'node-name'") self.reopen(opts, {'file.driver': 'host_device'}, "Cannot change t= he option 'driver'") @@ -443,7 +443,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # Illegal operation: hd2 is a child of hd1 self.reopen(opts[2], {'backing': 'hd1'}, - "Making 'hd1' a backing file of 'hd2' would create a c= ycle") + "Making 'hd1' a backing child of 'hd2' would create a = cycle") =20 # hd2 <- hd0, hd2 <- hd1 self.reopen(opts[0], {'backing': 'hd2'}) @@ -454,8 +454,9 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # More illegal operations self.reopen(opts[2], {'backing': 'hd1'}, - "Making 'hd1' a backing file of 'hd2' would create a c= ycle") - self.reopen(opts[2], {'file': 'hd0-file'}, "Cannot change the opti= on 'file'") + "Making 'hd1' a backing child of 'hd2' would create a = cycle") + self.reopen(opts[2], {'file': 'hd0-file'}, + "Permission conflict on node 'hd0-file': permissions '= write, resize' are both required by node 'hd0' (uses node 'hd0-file' as 'fi= le' child) and unshared by node 'hd2' (uses node 'hd0-file' as 'file' child= ).") =20 result =3D self.vm.qmp('blockdev-del', conv_keys =3D True, node_na= me =3D 'hd2') self.assert_qmp(result, 'error/class', 'GenericError') @@ -497,18 +498,18 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # Illegal: hd2 is backed by hd1 self.reopen(opts[1], {'backing': 'hd2'}, - "Making 'hd2' a backing file of 'hd1' would create a c= ycle") + "Making 'hd2' a backing child of 'hd1' would create a = cycle") =20 # hd1 <- hd0 <- hd2 self.reopen(opts[2], {'backing': 'hd0'}) =20 # Illegal: hd2 is backed by hd0, which is backed by hd1 self.reopen(opts[1], {'backing': 'hd2'}, - "Making 'hd2' a backing file of 'hd1' would create a c= ycle") + "Making 'hd2' a backing child of 'hd1' would create a = cycle") =20 # Illegal: hd1 cannot point to itself self.reopen(opts[1], {'backing': 'hd1'}, - "Making 'hd1' a backing file of 'hd1' would create a c= ycle") + "Making 'hd1' a backing child of 'hd1' would create a = cycle") =20 # Remove all backing files self.reopen(opts[0]) @@ -530,7 +531,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # Illegal: hd0 is a child of the blkverify node self.reopen(opts[0], {'backing': 'bv'}, - "Making 'bv' a backing file of 'hd0' would create a cy= cle") + "Making 'bv' a backing child of 'hd0' would create a c= ycle") =20 # Delete the blkverify node result =3D self.vm.qmp('blockdev-del', conv_keys =3D True, node_na= me =3D 'bv') @@ -563,7 +564,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): # You can't make quorum0 a backing file of hd0: # hd0 is already a child of quorum0. self.reopen(hd_opts(0), {'backing': 'quorum0'}, - "Making 'quorum0' a backing file of 'hd0' would create= a cycle") + "Making 'quorum0' a backing child of 'hd0' would creat= e a cycle") =20 # Delete quorum0 result =3D self.vm.qmp('blockdev-del', conv_keys =3D True, node_na= me =3D 'quorum0') @@ -969,7 +970,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): =20 # We can't remove hd1 while the commit job is ongoing opts['backing'] =3D None - self.reopen(opts, {}, "Cannot change backing link if 'hd0' has an = implicit backing file") + self.reopen(opts, {}, "Cannot replace implicit backing child of hd= 0") =20 # hd2 <- hd0 self.vm.run_job('commit0', auto_finalize =3D False, auto_dismiss = =3D True) --=20 2.29.2 From nobody Thu Apr 18 23:54:15 2024 Delivered-To: importer2@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+importer2=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=1623327279; cv=pass; d=zohomail.com; s=zohoarc; b=OKJQUp3P62pCi6eA5+g6Jb0LOBpwO/UEBMFT6JN17r4/u4/ilU8R/qM3rng1+v+5kRlzbSwpbwiBesmk46KlZD9HmchjCcHFi1NVJxansPQSok/s1dFAiKBTcygk3O8mrc5r809JEoQOyKtRESGslFr6YxuadSPsbH9vELKvV6w= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1623327279; 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=lt429nleZHEMCHaQcRAcAxidX+sO6LfRY8Vn2VYzAm4=; b=gPd/ckbeq/B7M0krFtV3tb2UCqxT/l6jjFCXDrUigJ7hZ2qRpjmRDR6gdC0OHmP74BEkr9praePm/iVZ75BoahXoV79Db4LJ4c0oB2wnhn14lb/+hgSJnmRQZ2YqEobqfD0sZ5i5JXZPa/KO+jBGOUGW8y1/1Qd8CHa+y6vmSfk= 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+importer2=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1623327279464866.5735716743287; Thu, 10 Jun 2021 05:14:39 -0700 (PDT) Received: from localhost ([::1]:39440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lrJa2-00033q-7n for importer2@patchew.org; Thu, 10 Jun 2021 08:14:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39644) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lrJS1-0002Hj-RW; Thu, 10 Jun 2021 08:06:21 -0400 Received: from mail-eopbgr80090.outbound.protection.outlook.com ([40.107.8.90]:15424 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 1lrJRx-0004Nw-Np; Thu, 10 Jun 2021 08:06:21 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4277.eurprd08.prod.outlook.com (2603:10a6:20b:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Thu, 10 Jun 2021 12:06:01 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f928:f4f2:77c0:74b4%9]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 12:06:01 +0000 Received: from localhost.localdomain (185.215.60.215) by HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 12:06:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GvZPxpScKNKHNlvI34R/TBA47l+E5KvUpMrkCbWde/p7yoFWXVbLPn41ZAmerDcuQA3Ey8Sp2aWSKw1sCu/ABeWbFnaCfnaYMTmr0kaLRZlGWTJs4M+koCFWest5XoBD/yKl2HQ7XE24W365VtVS7ZqdTkYi7ahjezaHX2xMDDGAFZiOvmnXi3scr6Tpvgod91VYAMsGFTrWYAosA6B3SPCdoHFEfkvQtCCQK0QOUB6qUeBpd71JJ77aO/ZQO5Je1LjTPVN4sBOWO5zjAn/jIwA9PWYNavkM6QpQNSG85OinXq5I1BU2xm5IdWBp6sEt/pLb3kK5EoFgYrtuoEjH9w== 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=lt429nleZHEMCHaQcRAcAxidX+sO6LfRY8Vn2VYzAm4=; b=mFuvG3w2JTgIstzi4j2JT1DLVnrQGykdSI+42ciY/DL6TQTgcnrwlg86rvnH7d77aHXzWJ2cTzNWuSguObUpoI1F1Me1XMxUFio+zR957b48UtnO31dlBWa3BGPVzGvAgo9wmGO1xHpQuyWYZahIlqoRKwlky+N7gHE6otXzEaNr1Ao27WKCNpkm9GVBP3PBr6Dvh7hCelkBRNo+Ml+c+x5u9ZOKo98WZFpi9DBwgpxhD0wdEB28Oh8SPw57j/+1MeLB1mrsOYBLZ6x85c5aoqgM83xQZGi8hloNEdl+aE12H/NyHQNz4hQf2zvr+xwghRRaRvbeiVxVu8o5BE02rg== 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=lt429nleZHEMCHaQcRAcAxidX+sO6LfRY8Vn2VYzAm4=; b=vGQsZSa1u29ghDd8abyVDkGChQf3XU6GSoQXQRxshjMQupwjpLGyfBFvadNR8H8XnDuNoPbczgXFRubem8AIGhjhCWOe7rp9EvatVbPWpX+XHE1esFvW93OyLbAaGeyMup/zGSlKq6h1c/A1Kfy8OaYNABcHdlwJHNE8hM6uYKk= 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, mreitz@redhat.com, kwolf@redhat.com, berto@igalia.com, vsementsov@virtuozzo.com Subject: [PATCH v6 9/9] iotests: Test replacing files with x-blockdev-reopen Date: Thu, 10 Jun 2021 15:05:37 +0300 Message-Id: <20210610120537.196183-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210610120537.196183-1-vsementsov@virtuozzo.com> References: <20210610120537.196183-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.215] X-ClientProxiedBy: HE1PR0802CA0005.eurprd08.prod.outlook.com (2603:10a6:3:bd::15) 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: 01693c7b-31c2-46bc-6dc4-08d92c081d91 X-MS-TrafficTypeDiagnostic: AM6PR08MB4277: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YIH17FiKYAqz1yF2DaeYSrJv4nI/z1J7492Dafj0zm7P35unYkxOFSSgdsg7Vxy2FP3CVmVuN5hNA8vQ/OrgEhULzQbqJRXwOOsj8nNJObkO7Zqcztd912jR6ZBzfOR41tWn/ZI5HcEwp9UcwIpU143e0bjV9YMRr6s1i08aCUaxess7E+5WqTLkxKKRLRYe3u7/siPKjrMwwHWvW90eS9oIWa+VpPCeIvypZJcLoYRzm5BIgY6FR0FoP6Accw3nA9oIoVuqcytS62vIAZZy0cvOcNYNbOgXgDyY5oo4M94Iog4YB8uMazpbCfa6n3YXucn4342qNjyvWFcfCcIBLRkk3ljnVxSm9DxUMcm+2lDQW/taNgxTWhy9IhONIwon4M1KMyRSbRr24b7v21L7BVA/N2Z4uySWvzoefZ4ivLrCUxP6sAdchawxEPilZTHMuXeqG1Bxmof9kULnHoqu6sC8ViJgTKS9CgUtgb8l13GN0Xi0XLhcSBMAdjrQRUgykcHsesp3pRdXGNCh02OTncccRIgt9vsR+TiCK36CWALQYs+bvu0yfAJX5OqVwEbmm8U0JFm9DdxptU6m/XsARuGKA/pCeJlHiiF2i4a36q7CMyPIbV9DJ7r1dM+Z3uowk+RlW1BKUXPL8BFUHKFXrfulr8wI5MFn9YZUH1VB9nAdxEoVcMItxN3LgKQWRSnUrZQ2g3JkiDLQjDinOa/bCQ== 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)(366004)(376002)(396003)(136003)(956004)(6486002)(2616005)(6916009)(6666004)(186003)(478600001)(2906002)(5660300002)(38100700002)(36756003)(107886003)(8936002)(26005)(16526019)(6512007)(38350700002)(86362001)(1076003)(6506007)(66556008)(66476007)(66946007)(316002)(8676002)(52116002)(4326008)(83380400001)(69590400013)(21314003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?3gquDZ0X9SeGQw/9obK8kIEE+C0T9iDMVoNUTUwtfX3KhXPYvKPTn2cUg7Md?= =?us-ascii?Q?YByHTnjVsaljkGTrODxyKbxS1KELwjS913K6b/N+rxJ3DLbpsJVsmm/9tJWY?= =?us-ascii?Q?A1fcpzlAFz/qPg/w//jIqBwgxSvCIHgc1kodVZgfbjLV7Ob6rLOYF5Jo6UQS?= =?us-ascii?Q?oL0Gi5DeduUpVwicOf25gYsINsM5ntrpUqqoF3fGukIRiUFzvAAIsjQFY/fp?= =?us-ascii?Q?I8JMfx8hDwrZWd32kFpzv8tM4pfWkYG3HivgCGnnX2HkzPs7Ie15sz7j8zRC?= =?us-ascii?Q?iEPNs9qtKdUftV1z62ymkmao5eL7IhbJD+rPAhFMmEP79OTStBxXjPMdOFgI?= =?us-ascii?Q?s5Q1YcTns9pg00S4JvfnvEetQTlvwplS3oxDPaXs+/L8e1Yhi2ucsJIHAodA?= =?us-ascii?Q?iW76bttnMXD6hstodFRyqVLmvzqovH3FznV6DAEc2roRMMqPvpeOSZqdk1gR?= =?us-ascii?Q?yVMedXRezRXWP/2SI/HH8f6vsfwp3IR5O4fEnGMYxSxPBLXWRkGujSEDN1ZY?= =?us-ascii?Q?T+MTzkvf0F4/3J3hrB1l3J6K2uKBSMPq28hWFHkcp9cCdAfg1E+lN/QI7qIM?= =?us-ascii?Q?2pxIBqZEVI1IS0izCbTIzvQ1fNprZzNdO9ca43lUQ7V56EmYvLnPNqsMAGQE?= =?us-ascii?Q?F0waMqkM8XtdQxDxQQ3MG0qjN5iz+t5kTQs64LrsEe2GSyyFg3Xj4JElgCei?= =?us-ascii?Q?9A53Jfuq73NbJ3Dft1p+brglGO8IBqgFIVP4JVq0U1DpONTC+OAmW8K4qaOz?= =?us-ascii?Q?Zug8CjZpDIXuVGkZ2GPv3kBKOYpw+fH2IRb0GtISFrjb+aS8ElxpxaqMjSOR?= =?us-ascii?Q?VN1SC1YLRFtpnwUKshZkYl15VdlHuoZE01WuiDJBY638FUydcM/ZTrSxtido?= =?us-ascii?Q?L0y00BvtCVyx22WgN/x5FjiSLkC6rKSJGZ47dEifKQ+wkWjfmkA2vl2JwjF7?= =?us-ascii?Q?4/TuzxbPdXffU8K6MX+CHckZUCB4NrzY3zrsSow3/OyXm/MIkr3aB+1gYkxO?= =?us-ascii?Q?hlTuxT7CpPilv5tF41Xgve86kUQEcvAyvxvkT1AF7KTUIbY8yay2GKX9Hvvz?= =?us-ascii?Q?tIfTwRZyeN7CNfhgMYGrwmnmfoJCCWYT7GQBRrEvqXdjw5SK2LXS4SXhwEe8?= =?us-ascii?Q?7uLYsuzayh1BgEg5mGe74TW1rvdhhKQ/1VryMYpWlCh0QCIciG1xXCgu/2QK?= =?us-ascii?Q?tbJKCr0mChQY0OlCzsUkIV5cZTap2OWnXnNU3dExUCzeSx/QuMdVkePmEMeW?= =?us-ascii?Q?z0CXYpjxzsppK23DEYEhtzd6fEZgxZUqr3na0P4V2DfED8XX3IWGr3/aU2i/?= =?us-ascii?Q?DxyAWwQB7DVu8Cqd6XeXWV0B?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01693c7b-31c2-46bc-6dc4-08d92c081d91 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 12:06:01.8759 (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: Qxzq9EBXUGB6vjgEGvNv9N34I9q/rXHdJ7h1Bl0c5QW13dYZGaesF01/vwzo7BksVgkzTC7GBl/uhGDJaJLFaHmc6qwmvG521ZQ/V9Gp9Mo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.90; 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+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" From: Alberto Garcia This patch adds new tests in which we use x-blockdev-reopen to change bs->file Signed-off-by: Alberto Garcia --- tests/qemu-iotests/245 | 109 ++++++++++++++++++++++++++++++++++++- tests/qemu-iotests/245.out | 11 +++- 2 files changed, 117 insertions(+), 3 deletions(-) diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245 index d955e0dfd3..0295129cbb 100755 --- a/tests/qemu-iotests/245 +++ b/tests/qemu-iotests/245 @@ -79,7 +79,7 @@ class TestBlockdevReopen(iotests.QMPTestCase): for line in log.split("\n"): if line.startswith("Pattern verification failed"): raise Exception("%s (command #%d)" % (line, found)) - if re.match("read .*/.* bytes at offset", line): + if re.match("(read|wrote) .*/.* bytes at offset", line): found +=3D 1 self.assertEqual(found, self.total_io_cmds, "Expected output of %d qemu-io commands, found %d= " % @@ -537,6 +537,113 @@ class TestBlockdevReopen(iotests.QMPTestCase): result =3D self.vm.qmp('blockdev-del', conv_keys =3D True, node_na= me =3D 'bv') self.assert_qmp(result, 'return', {}) =20 + # Replace the protocol layer ('file' parameter) of a disk image + def test_replace_file(self): + # Create two small raw images and add them to a running VM + qemu_img('create', '-f', 'raw', hd_path[0], '10k') + qemu_img('create', '-f', 'raw', hd_path[1], '10k') + + hd0_opts =3D {'driver': 'file', 'node-name': 'hd0-file', 'filename= ': hd_path[0] } + hd1_opts =3D {'driver': 'file', 'node-name': 'hd1-file', 'filename= ': hd_path[1] } + + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **hd0_= opts) + self.assert_qmp(result, 'return', {}) + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **hd1_= opts) + self.assert_qmp(result, 'return', {}) + + # Add a raw format layer that uses hd0-file as its protocol layer + opts =3D {'driver': 'raw', 'node-name': 'hd', 'file': 'hd0-file'} + + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **opts) + self.assert_qmp(result, 'return', {}) + + # Fill the image with data + self.run_qemu_io("hd", "read -P 0 0 10k") + self.run_qemu_io("hd", "write -P 0xa0 0 10k") + + # Replace hd0-file with hd1-file and fill it with (different) data + self.reopen(opts, {'file': 'hd1-file'}) + self.run_qemu_io("hd", "read -P 0 0 10k") + self.run_qemu_io("hd", "write -P 0xa1 0 10k") + + # Use hd0-file again and check that it contains the expected data + self.reopen(opts, {'file': 'hd0-file'}) + self.run_qemu_io("hd", "read -P 0xa0 0 10k") + + # And finally do the same with hd1-file + self.reopen(opts, {'file': 'hd1-file'}) + self.run_qemu_io("hd", "read -P 0xa1 0 10k") + + # Insert (and remove) a throttle filter + def test_insert_throttle_filter(self): + # Add an image to the VM + hd0_opts =3D hd_opts(0) + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **hd0_= opts) + self.assert_qmp(result, 'return', {}) + + # Create a throttle-group object + opts =3D { 'qom-type': 'throttle-group', 'id': 'group0', + 'limits': { 'iops-total': 1000 } } + result =3D self.vm.qmp('object-add', conv_keys =3D False, **opts) + self.assert_qmp(result, 'return', {}) + + # Add a throttle filter with the group that we just created. + # The filter is not used by anyone yet + opts =3D { 'driver': 'throttle', 'node-name': 'throttle0', + 'throttle-group': 'group0', 'file': 'hd0-file' } + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **opts) + self.assert_qmp(result, 'return', {}) + + # Insert the throttle filter between hd0 and hd0-file + self.reopen(hd0_opts, {'file': 'throttle0'}) + + # Remove the throttle filter from hd0 + self.reopen(hd0_opts, {'file': 'hd0-file'}) + + # Insert (and remove) a compress filter + def test_insert_compress_filter(self): + # Add an image to the VM: hd (raw) -> hd0 (qcow2) -> hd0-file (fil= e) + opts =3D {'driver': 'raw', 'node-name': 'hd', 'file': hd_opts(0)} + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **opts) + self.assert_qmp(result, 'return', {}) + + # Add a 'compress' filter + filter_opts =3D {'driver': 'compress', + 'node-name': 'compress0', + 'file': 'hd0'} + result =3D self.vm.qmp('blockdev-add', conv_keys =3D False, **filt= er_opts) + self.assert_qmp(result, 'return', {}) + + # Unmap the beginning of the image (we cannot write compressed + # data to an allocated cluster) + self.run_qemu_io("hd", "write -z -u 0 128k") + + # Write data to the first cluster + self.run_qemu_io("hd", "write -P 0xa0 0 64k") + + # Insert the filter then write to the second cluster + # hd -> compress0 -> hd0 -> hd0-file + self.reopen(opts, {'file': 'compress0'}) + self.run_qemu_io("hd", "write -P 0xa1 64k 64k") + + # Remove the filter then write to the third cluster + # hd -> hd0 -> hd0-file + self.reopen(opts, {'file': 'hd0'}) + self.run_qemu_io("hd", "write -P 0xa2 128k 64k") + + # Verify the data that we just wrote + self.run_qemu_io("hd", "read -P 0xa0 0 64k") + self.run_qemu_io("hd", "read -P 0xa1 64k 64k") + self.run_qemu_io("hd", "read -P 0xa2 128k 64k") + + self.vm.shutdown() + + # Check the first byte of the first three L2 entries and verify th= at + # the second one is compressed (0x40) while the others are not (0x= 80) + iotests.qemu_io_log('-f', 'raw', '-c', 'read -P 0x80 0x40000 1', + '-c', 'read -P 0x40 0x40008 1', + '-c', 'read -P 0x80 0x40010 1', h= d_path[0]) + # Misc reopen tests with different block drivers @iotests.skip_if_unsupported(['quorum', 'throttle']) def test_misc_drivers(self): diff --git a/tests/qemu-iotests/245.out b/tests/qemu-iotests/245.out index 99c12f4f98..daf1e51922 100644 --- a/tests/qemu-iotests/245.out +++ b/tests/qemu-iotests/245.out @@ -10,8 +10,15 @@ {"return": {}} {"data": {"id": "stream0", "type": "stream"}, "event": "BLOCK_JOB_PENDING"= , "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} {"data": {"device": "stream0", "len": 3145728, "offset": 3145728, "speed":= 0, "type": "stream"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"micro= seconds": "USECS", "seconds": "SECS"}} -............... +....read 1/1 bytes at offset 262144 +1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 1/1 bytes at offset 262152 +1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 1/1 bytes at offset 262160 +1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +.............. ---------------------------------------------------------------------- -Ran 21 tests +Ran 24 tests =20 OK --=20 2.29.2