[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/5] qom: Make container_get() strict to always walk or retur
From: |
Peter Xu |
Subject: |
Re: [PATCH 5/5] qom: Make container_get() strict to always walk or return container |
Date: |
Tue, 19 Nov 2024 15:25:10 -0500 |
On Tue, Nov 19, 2024 at 10:03:22AM +0000, Daniel P. Berrangé wrote:
> The docs are a welcome addition, but at the same time the docs won't get
> read most of the time.
>
> With this in mind, IMHO, it is a conceptually *terrible* design for us to
> have a method called "get" which magically *creates* stuff as a side-effect
> of its calling. We'd be well served by fixing that design problem.
>
> If I look in the code at what calls we have to container_get, and more
> specifically what "path" values we pass, there are not actually that many:
>
> /objects
> /chardevs
> /unattached
> /machine
> /peripheral
> /peripheral-anon
> /backend
> /dr-connector
>
>
> Ignoring the last one, those other 7 containers are things we expect
> to exist in *every* system emulator.
>
> Second, every single one of them is a single level deep. IOW, the for()
> loop in container_get is effectively pointless.
>
> We can fix this by having a single method:
>
> void container_create_builtin(Object *root)
>
> which creates the 7 built-in standard containers we expect
> everywhere, with open coded object_new + add_child calls.
>
> Then all current users of container_get() can switch over
> to object_resolve_path, and container_get() can be eliminated.
>
> The 'dr-connector' creation can just be open-coded using
> object_new() in the spapr code.
Yes I think this could make sense, also after I noticed that the assert I
added may not always work.. Please ignore this series then, I'll prepare
something else soon.
--
Peter Xu