From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 053B6EE4993 for ; Tue, 22 Aug 2023 18:21:20 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qYVzx-0004dV-1F; Tue, 22 Aug 2023 14:21:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qYVzg-0004bW-Nu for qemu-devel@nongnu.org; Tue, 22 Aug 2023 14:20:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qYVzc-0002wz-KL for qemu-devel@nongnu.org; Tue, 22 Aug 2023 14:20:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1692728439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=uz4mTpWJCFf+zsl/d28coWttwsaeODoHR1I/5hZ2Cl4=; b=VHc2M2BwqmAwgQrIxklATMcPJYnKMTOUPRUjcJdgr7QXfb8l/+14HGAyee2sSGnyJYGWjT 7JtS12HTvnAxnhdwz1DmwKBfdl5q7mojOdDuqlRYWAgsK+Gw3sMwBMLJIN9UOr70YHHGTN 34/7ySwQrXQPI+pv9LES6URJD6LSmQ0= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-396-5SCg6gnSPs69Cwvfc1g9hA-1; Tue, 22 Aug 2023 14:20:37 -0400 X-MC-Unique: 5SCg6gnSPs69Cwvfc1g9hA-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 74F5485CBE6; Tue, 22 Aug 2023 18:20:37 +0000 (UTC) Received: from localhost (unknown [10.39.195.69]) by smtp.corp.redhat.com (Postfix) with ESMTP id DDE644A9004; Tue, 22 Aug 2023 18:20:36 +0000 (UTC) Date: Tue, 22 Aug 2023 14:20:35 -0400 From: Stefan Hajnoczi To: Kevin Wolf Cc: qemu-block@nongnu.org, eblake@redhat.com, eesposit@redhat.com, pbonzini@redhat.com, vsementsov@yandex-team.ru, qemu-devel@nongnu.org Subject: Re: [PATCH 00/21] Graph locking part 4 (node management) Message-ID: <20230822182035.GC727224@fedora> References: <20230817125020.208339-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="v+1VXga1ZYzaIzg7" Content-Disposition: inline In-Reply-To: <20230817125020.208339-1-kwolf@redhat.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Received-SPF: pass client-ip=170.10.133.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org --v+1VXga1ZYzaIzg7 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Aug 17, 2023 at 02:49:59PM +0200, Kevin Wolf wrote: > The previous parts of the graph locking changes focussed mostly on the > BlockDriver side and taking reader locks while performing I/O. This > series focusses more on the functions managing the graph structure, i.e > adding, removing and replacing nodes and updating their permissions. >=20 > Many of these places actually need to take the writer lock to avoid > readers seeing an inconsistent half-updated graph state. Therefore > taking the writer lock is now pushed down from the very low-level > function bdrv_replace_child_noperm() into its more high level callers. The word "down" confuses me. It seems like the direction is up instead of down and the scope of the lock is increasing rather than decreasing. But I haven't read the actual patches yet... >=20 > Kevin Wolf (21): > block: Remove unused BlockReopenQueueEntry.perms_checked > preallocate: Factor out preallocate_truncate_to_real_size() > preallocate: Don't poll during permission updates > block: Take AioContext lock for bdrv_append() more consistently > block: Introduce bdrv_schedule_unref() > block-coroutine-wrapper: Add no_co_wrapper_bdrv_wrlock functions > block-coroutine-wrapper: Allow arbitrary parameter names > block: Mark bdrv_replace_child_noperm() GRAPH_WRLOCK > block: Mark bdrv_replace_child_tran() GRAPH_WRLOCK > block: Mark bdrv_attach_child_common() GRAPH_WRLOCK > block: Call transaction callbacks with lock held > block: Mark bdrv_attach_child() GRAPH_WRLOCK > block: Mark bdrv_parent_perms_conflict() and callers GRAPH_RDLOCK > block: Mark bdrv_get_cumulative_perm() and callers GRAPH_RDLOCK > block: Mark bdrv_child_perm() GRAPH_RDLOCK > block: Mark bdrv_parent_cb_change_media() GRAPH_RDLOCK > block: Take graph rdlock in bdrv_drop_intermediate() > block: Take graph rdlock in bdrv_change_aio_context() > block: Mark bdrv_root_unref_child() GRAPH_WRLOCK > block: Mark bdrv_unref_child() GRAPH_WRLOCK > block: Mark bdrv_add/del_child() and caller GRAPH_WRLOCK >=20 > include/block/block-common.h | 4 + > include/block/block-global-state.h | 30 +- > include/block/block_int-common.h | 34 +- > include/block/block_int-global-state.h | 14 +- > include/sysemu/block-backend-global-state.h | 4 +- > block.c | 340 ++++++++++++++------ > block/blklogwrites.c | 4 + > block/blkverify.c | 2 + > block/block-backend.c | 29 +- > block/copy-before-write.c | 10 +- > block/crypto.c | 6 +- > block/graph-lock.c | 23 +- > block/mirror.c | 8 + > block/preallocate.c | 133 +++++--- > block/qcow2.c | 4 +- > block/quorum.c | 23 +- > block/replication.c | 9 + > block/snapshot.c | 2 + > block/stream.c | 20 +- > block/vmdk.c | 13 + > blockdev.c | 23 +- > blockjob.c | 2 + > tests/unit/test-bdrv-drain.c | 23 +- > tests/unit/test-bdrv-graph-mod.c | 20 ++ > tests/unit/test-block-iothread.c | 3 + > scripts/block-coroutine-wrapper.py | 18 +- > tests/qemu-iotests/051.pc.out | 6 +- > 27 files changed, 580 insertions(+), 227 deletions(-) >=20 > --=20 > 2.41.0 >=20 --v+1VXga1ZYzaIzg7 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmTk/HMACgkQnKSrs4Gr c8i8Hgf/S8w8Rs1R/7+QScPFpmc73EoiXhzX4fV+K8na3tbqbZ+gUxVIVMm45Mok c9VyAahC7i+ICr3jQQlEF02LGd/h1x12m86hVaUPmoiKftAfYHE7eaRHM6cWrnJv 0NRAbVV2VL6I2QhCvfo2PgtFlHdegSX0d7W5XguEFSO4R46hA+2PLBSaLZpHA0yg rWXZAfo2eRm1IW1f4bCwItRSbiEhOXTsuibKqlaWU4bV4YI6fIgZe5e7fpsU6vNv lgrTqC5/MmZ30x/F55ZehYF5ig/dZvJTsIXJI7V7Tf1E18MjD/aRwNXc5pL8RGzR guQQpKqqr9cQ3SKxJYT0DmSJFDY1hA== =BY4v -----END PGP SIGNATURE----- --v+1VXga1ZYzaIzg7--