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 lists1p.gnu.org (lists1p.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 40D1BCD98C5 for ; Mon, 15 Jun 2026 08:13:43 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZ2RG-0004Uy-5C; Mon, 15 Jun 2026 04:12:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZ2RD-0004P5-Sf for qemu-devel@nongnu.org; Mon, 15 Jun 2026 04:12:55 -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 1wZ2RB-0002DV-98 for qemu-devel@nongnu.org; Mon, 15 Jun 2026 04:12:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781511172; h=from:from:reply-to: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=jqypivbagkTNbjCV+c9t2nwVIwPsQA6zndwF6SQ876M=; b=dn2FooOeJB4X9YwRZIOE9Gg2r86Z5jcnAtL5tGUOgLd1kBXRCWFQYHhpGrHR9cORymNGFX sfrUHd7/Fmv23PzM5oSXIT+vi6sQtfYbVAdKCJ01GuYUCS5326fswF8aoUwgJT8kffTIoI jiH0GE0iBcXKwIg9xYY8nMI3lpkcyME= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-390-NOdZBsdgOjiQaYqDoP94VQ-1; Mon, 15 Jun 2026 04:12:48 -0400 X-MC-Unique: NOdZBsdgOjiQaYqDoP94VQ-1 X-Mimecast-MFC-AGG-ID: NOdZBsdgOjiQaYqDoP94VQ_1781511167 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8FF711955E87; Mon, 15 Jun 2026 08:12:46 +0000 (UTC) Received: from redhat.com (unknown [10.44.49.222]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 492EB3008B35; Mon, 15 Jun 2026 08:12:41 +0000 (UTC) Date: Mon, 15 Jun 2026 09:12:38 +0100 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= To: Akihiko Odaki Cc: qemu-devel@nongnu.org, Paolo Bonzini , Manos Pitsidianakis , qemu-rust@nongnu.org, Peter Xu , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Alberto Garcia , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org Subject: Re: [PATCH 2/2] qom: Manage references to embedded child objects Message-ID: References: <20260615-embedded-v1-0-bb0c65bf126c@rsg.ci.i.u-tokyo.ac.jp> <20260615-embedded-v1-2-bb0c65bf126c@rsg.ci.i.u-tokyo.ac.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20260615-embedded-v1-2-bb0c65bf126c@rsg.ci.i.u-tokyo.ac.jp> User-Agent: Mutt/2.3.2 (2026-04-26) X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org On Mon, Jun 15, 2026 at 01:11:07PM +0900, Akihiko Odaki wrote: > Problem > ======= > > The Rust wrapper for object_ref() is marked unsafe and has: > > The object must not be embedded in another unless the outer > > object is guaranteed to have a longer lifetime. > > In other words, object_ref() does not work for embedded objects and > does not keep embedded objects alive. MemoryRegion has its own > memory_region_ref() helper to call object_ref() on its owner for this > reason. > > However, this is insufficient to avoid calling object_ref() for all > embedded objects. For example, consider an embedded Device that has a > MemoryRegion. When referencing a MemoryRegion for guest memory access, > QEMU automatically references the owning Device to keep the MemoryRegion > alive. However, that reference is ineffective if the Device itself is > embedded, because object_ref() does not keep the containing storage > alive. Do we know how many examples we have of embedding objects inside another ? I would much prefer if we forbid the embedding of objects. It is horrible design practice to have some QOM objects which can be freed via reference count and some which cannot. With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|