diff mbox

qom/object.h: remove some child/parent doc

Message ID 1441400485-29167-1-git-send-email-marcandre.lureau@redhat.com
State New
Headers show

Commit Message

Marc-André Lureau Sept. 4, 2015, 9:01 p.m. UTC
From: Marc-André Lureau <marcandre.lureau@redhat.com>

It looks like this documentation is obsolete: a child object may lookup
its parent stored in the Object struct.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qom/object.h | 3 ---
 1 file changed, 3 deletions(-)

Comments

Peter Crosthwaite Sept. 4, 2015, 9:25 p.m. UTC | #1
On Fri, Sep 4, 2015 at 2:01 PM,  <marcandre.lureau@redhat.com> wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> It looks like this documentation is obsolete: a child object may lookup
> its parent stored in the Object struct.
>

Using a function wrapper or direct access to Object structure field?

The latter would indicate they are workarounds. Which legit uses of
parent identification are you referring to?

Regards,
Peter

> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  include/qom/object.h | 3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/include/qom/object.h b/include/qom/object.h
> index 2f95ab3..653699f 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -1261,9 +1261,6 @@ Object *object_resolve_path_component(Object *parent, const gchar *part);
>   * Child properties form the composition tree.  All objects need to be a child
>   * of another object.  Objects can only be a child of one object.
>   *
> - * There is no way for a child to determine what its parent is.  It is not
> - * a bidirectional relationship.  This is by design.
> - *
>   * The value of a child property as a C string will be the child object's
>   * canonical path. It can be retrieved using object_property_get_str().
>   * The child object itself can be retrieved using object_property_get_link().
> --
> 2.4.3
>
>
Marc-André Lureau Sept. 4, 2015, 9:42 p.m. UTC | #2
Hi

On Fri, Sep 4, 2015 at 11:25 PM, Peter Crosthwaite
<crosthwaitepeter@gmail.com> wrote:
> On Fri, Sep 4, 2015 at 2:01 PM,  <marcandre.lureau@redhat.com> wrote:
>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>
>> It looks like this documentation is obsolete: a child object may lookup
>> its parent stored in the Object struct.
>>
>
> Using a function wrapper or direct access to Object structure field?

By direct access to the struct field.

>
> The latter would indicate they are workarounds. Which legit uses of
> parent identification are you referring to?

I am not saying this is legit or not to use this field, it's just
wrong documentation to me: the relationship is bidirectionnal. That's
one of the few differences with the link<> properties.

regards
Peter Crosthwaite Sept. 4, 2015, 9:53 p.m. UTC | #3
On Fri, Sep 4, 2015 at 2:42 PM, Marc-André Lureau
<marcandre.lureau@gmail.com> wrote:
> Hi
>
> On Fri, Sep 4, 2015 at 11:25 PM, Peter Crosthwaite
> <crosthwaitepeter@gmail.com> wrote:
>> On Fri, Sep 4, 2015 at 2:01 PM,  <marcandre.lureau@redhat.com> wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> It looks like this documentation is obsolete: a child object may lookup
>>> its parent stored in the Object struct.
>>>
>>
>> Using a function wrapper or direct access to Object structure field?
>
> By direct access to the struct field.
>
>>
>> The latter would indicate they are workarounds. Which legit uses of
>> parent identification are you referring to?
>
> I am not saying this is legit or not to use this field, it's just
> wrong documentation to me: the relationship is bidirectionnal. That's
> one of the few differences with the link<> properties.
>

It is biderctional for the implementation but not for the QOM API. I
think the comment is correct as long as there is no exposed API to do
this.

Regards,
Peter

> regards
>
> --
> Marc-André Lureau
Andreas Färber Sept. 7, 2015, 3:46 p.m. UTC | #4
Am 04.09.2015 um 23:01 schrieb marcandre.lureau@redhat.com:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> It looks like this documentation is obsolete: a child object may lookup
> its parent stored in the Object struct.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  include/qom/object.h | 3 ---
>  1 file changed, 3 deletions(-)

Either once again you are trying to do stuff behind my back, or your
setup is really broken: I double-checked that include/qom/ is listed in
MAINTAINERS, so I should've been CC'ed rather than just -trivial.

It's been a valid rule not to mess with these internal fields, therefore
this is not trivial at all, and that's one reason why my x86 CPU series
using it was an RFC. We should either come up with a proper wrapper
function object_get_parent(), or with a wrapper function adding a link<>
property (where we would need to be careful with ref counts) - long time
only the composition tree needed to mess with an object's parent.

If you have a concrete use case of parent access, please point to it.

Regards,
Andreas
Michael Tokarev Sept. 11, 2015, 10:13 a.m. UTC | #5
07.09.2015 18:46, Andreas Färber wrote:
> Am 04.09.2015 um 23:01 schrieb marcandre.lureau@redhat.com:
>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>
>> It looks like this documentation is obsolete: a child object may lookup
>> its parent stored in the Object struct.
>>
>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>> ---
>>  include/qom/object.h | 3 ---
>>  1 file changed, 3 deletions(-)
> 
> Either once again you are trying to do stuff behind my back, or your
> setup is really broken: I double-checked that include/qom/ is listed in
> MAINTAINERS, so I should've been CC'ed rather than just -trivial.
> 
> It's been a valid rule not to mess with these internal fields, therefore
> this is not trivial at all, and that's one reason why my x86 CPU series
> using it was an RFC. We should either come up with a proper wrapper
> function object_get_parent(), or with a wrapper function adding a link<>
> property (where we would need to be careful with ref counts) - long time
> only the composition tree needed to mess with an object's parent.
> 
> If you have a concrete use case of parent access, please point to it.

So, should the current documentation remain, or should the patch be
applied?  If the latter, Andreas, please take care of it.

Thanks,

/mjt
Andreas Färber Sept. 11, 2015, 11:14 a.m. UTC | #6
Am 11.09.2015 um 12:13 schrieb Michael Tokarev:
> 07.09.2015 18:46, Andreas Färber wrote:
>> Am 04.09.2015 um 23:01 schrieb marcandre.lureau@redhat.com:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> It looks like this documentation is obsolete: a child object may lookup
>>> its parent stored in the Object struct.
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>>> ---
>>>  include/qom/object.h | 3 ---
>>>  1 file changed, 3 deletions(-)
>>
>> Either once again you are trying to do stuff behind my back, or your
>> setup is really broken: I double-checked that include/qom/ is listed in
>> MAINTAINERS, so I should've been CC'ed rather than just -trivial.
>>
>> It's been a valid rule not to mess with these internal fields, therefore
>> this is not trivial at all, and that's one reason why my x86 CPU series
>> using it was an RFC. We should either come up with a proper wrapper
>> function object_get_parent(), or with a wrapper function adding a link<>
>> property (where we would need to be careful with ref counts) - long time
>> only the composition tree needed to mess with an object's parent.
>>
>> If you have a concrete use case of parent access, please point to it.
> 
> So, should the current documentation remain, or should the patch be
> applied?  If the latter, Andreas, please take care of it.

This patch should not be applied, NACK.

I outlined ideas for a v2 series above though.

Thanks,
Andreas

> 
> Thanks,
> 
> /mjt
>
diff mbox

Patch

diff --git a/include/qom/object.h b/include/qom/object.h
index 2f95ab3..653699f 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -1261,9 +1261,6 @@  Object *object_resolve_path_component(Object *parent, const gchar *part);
  * Child properties form the composition tree.  All objects need to be a child
  * of another object.  Objects can only be a child of one object.
  *
- * There is no way for a child to determine what its parent is.  It is not
- * a bidirectional relationship.  This is by design.
- *
  * The value of a child property as a C string will be the child object's
  * canonical path. It can be retrieved using object_property_get_str().
  * The child object itself can be retrieved using object_property_get_link().