From: Lin Ma <lma@suse.com>
To: Igor Mammedov <imammedo@redhat.com>,
afaerber@suse.de, peter.crosthwaite@xilinx.com,
pbonzini@redhat.com
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/2] object: Add can_be_deleted callback to TypeInfo and TypeImpl
Date: Wed, 25 Mar 2015 23:47:46 +0800 [thread overview]
Message-ID: <5512D8A2.3030100@suse.com> (raw)
In-Reply-To: <20150323143051.4cab2004@nial.brq.redhat.com>
在 2015年03月23日 21:30, Igor Mammedov 写道:
> On Mon, 23 Mar 2015 14:13:07 +0100
> Andreas Färber <afaerber@suse.de> wrote:
>
>> Hi,
>>
>> For consistency in git-log, please use "qom:" rather than "object:".
>>
>> Am 23.03.2015 um 13:06 schrieb Paolo Bonzini:
>>> On 23/03/2015 11:36, Peter Crosthwaite wrote:
>>>> I don't think TypeInfo is the right place for this. You can however
>>>> define function hooks for Object in ObjectClass. See the unparent
>>>> field of ObjectClass for a precedent.
>> Agree.
>>
>>> In this case, the right place could be UserCreatable.
>> Maybe, not so familiar with that interface myself. Does object_del allow
>> to delete non-UserCreatable objects? Then it wouldn't help much.
> object_del() works only with /objects children, and so far the only way
> that child placed there is via object_add() which requires a new object
> to have TYPE_USER_CREATABLE interface.
> I'd go this way rather than overhaul object_unparent() in this case.
What about these changes?
1. Add a callback function named 'ObjectCanBeDeleted *can_be_deleted' to
struct ObjectClass in object.h
2. Call the function in qmp_object_del of qmp.c, says:
ObjectClass *obj_class = object_get_class(obj);
if (obj_class->can_be_deleted)
if (!obj_class->can_be_deleted(obj))
error out
3. Then implement can_be_deleted callback in backends, says:
static bool host_memory_backend_can_be_deleted(Object *obj) {......}
static void host_memory_backend_class_init(ObjectClass *oc, void
*data) {
......
oc->can_be_deleted = host_memory_backend_can_be_deleted;
}
>
>>> Alternatively...
>>>
>>>> But is a better way to do this to add error handling to
>>>> object_unparent API and override object_unparent for your device in
>>>> question to throw the error? Then your change doesn't have to be
>>>> limited to QMP.
>>> ... this is also a good choice.
>> Well, I have doubts about asking someone who's not ultimately familiar
>> with that code to refactor the API. For instance, we wouldn't want QEMU
>> on shutdown or in error cases refusing to unparent some object.
>>
>> Doing it at QMP level (ObjectClass/UserCreatable) seems safer, given
>> that Chun Yan's trivial block option fix ended up respinning a QemuOpts
>> refactoring some twenty times before it got merged.
>>
>> Regards,
>> Andreas
>>
>
>
next prev parent reply other threads:[~2015-03-25 15:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-23 10:10 [Qemu-devel] [PATCH 1/2] object: Add can_be_deleted callback to TypeInfo and TypeImpl Lin Ma
2015-03-23 10:10 ` [Qemu-devel] [PATCH 2/2] memory-backend: Add can_be_deleted impl for ram-backend and file-backend Lin Ma
2015-03-23 10:36 ` [Qemu-devel] [PATCH 1/2] object: Add can_be_deleted callback to TypeInfo and TypeImpl Peter Crosthwaite
2015-03-23 12:06 ` Paolo Bonzini
2015-03-23 13:13 ` Andreas Färber
2015-03-23 13:30 ` Igor Mammedov
2015-03-25 15:47 ` Lin Ma [this message]
2015-03-26 10:05 ` Igor Mammedov
2015-03-26 10:07 ` Andreas Färber
2015-03-26 10:29 ` Igor Mammedov
2015-03-26 13:37 ` Paolo Bonzini
2015-03-26 14:18 ` Igor Mammedov
2015-03-23 15:47 ` Lin Ma
2015-03-23 12:52 ` Andreas Färber
2015-03-23 15:25 ` Lin Ma
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5512D8A2.3030100@suse.com \
--to=lma@suse.com \
--cc=afaerber@suse.de \
--cc=imammedo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.crosthwaite@xilinx.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.