From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54563) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcYOY-00028f-Kv for qemu-devel@nongnu.org; Mon, 30 Mar 2015 08:02:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YcYOS-0007vK-R6 for qemu-devel@nongnu.org; Mon, 30 Mar 2015 08:02:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51104) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcYOS-0007vC-Jq for qemu-devel@nongnu.org; Mon, 30 Mar 2015 08:02:12 -0400 Date: Mon, 30 Mar 2015 14:02:08 +0200 From: Igor Mammedov Message-ID: <20150330140208.0ce25e5a@nial.brq.redhat.com> In-Reply-To: <55159918.7020502@suse.com> References: <1427475330-4652-1-git-send-email-lma@suse.com> <1427475330-4652-2-git-send-email-lma@suse.com> <20150327182029.39d6392f@nial.brq.redhat.com> <55159918.7020502@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v5 1/2] qom: Add can_be_deleted callback to UserCreatableClass List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Lin Ma Cc: pbonzini@redhat.com, peter.crosthwaite@xilinx.com, afaerber@suse.de, qemu-devel@nongnu.org On Sat, 28 Mar 2015 01:53:28 +0800 Lin Ma wrote: >=20 > =E5=9C=A8 2015=E5=B9=B403=E6=9C=8828=E6=97=A5 01:20, Igor Mammedov =E5=86= =99=E9=81=93: > > On Sat, 28 Mar 2015 00:55:29 +0800 > > Lin Ma wrote: > > > >> If backends implement the can_be_deleted and it returns false, > >> Then the qmp_object_del won't delete the given backends. > >> > >> Signed-off-by: Lin Ma > >> --- > >> include/qom/object_interfaces.h | 14 ++++++++++++++ > >> qmp.c | 5 +++++ > >> qom/object_interfaces.c | 14 ++++++++++++++ > >> 3 files changed, 33 insertions(+) > >> > >> diff --git a/include/qom/object_interfaces.h b/include/qom/object_inte= rfaces.h > >> index b792283..012b653 100644 > >> --- a/include/qom/object_interfaces.h > >> +++ b/include/qom/object_interfaces.h > >> @@ -25,6 +25,8 @@ typedef struct UserCreatable { > >> * UserCreatableClass: > >> * @parent_class: the base class > >> * @complete: callback to be called after @obj's properties are set. > >> + * @can_be_deleted: callback to be called before an object is removed > >> + * to check if @obj can be removed safely. > >> * > >> * Interface is designed to work with -object/object-add/object_add > >> * commands. > >> @@ -47,6 +49,7 @@ typedef struct UserCreatableClass { > >> =20 > >> /* */ > >> void (*complete)(UserCreatable *uc, Error **errp); > >> + bool (*can_be_deleted)(UserCreatable *uc, Error **errp); > >> } UserCreatableClass; > >> =20 > >> /** > >> @@ -59,4 +62,15 @@ typedef struct UserCreatableClass { > >> * nothing. > >> */ > >> void user_creatable_complete(Object *obj, Error **errp); > >> + > >> +/** > >> + * user_creatable_can_be_deleted: > >> + * @obj: the object whose can_be_deleted() method is called if defined > > s/obj/uc/ > > s/defined/implemented/ > > > >> + * @errp: if an error occurs, a pointer to an area to store the error > >> + * > >> + * Wrapper to call can_be_deleted() method if one of types it's inher= ited > >> + * from implements USER_CREATABLE interface, otherwise the call does > >> + * nothing. > > drop ", otherwise the call does nothing" > > > >> +bool user_creatable_can_be_deleted(Object *obj, Error **errp); > > [...] > >> =20 > >> +bool user_creatable_can_be_deleted(Object *obj, Error **errp) > >> +{ > >> + > >> + UserCreatableClass *ucc; > >> + UserCreatable *uc =3D USER_CREATABLE(obj); > > Function description doesn't match what it does, I mean part > > "otherwise the call does nothing." > > > > How about changing prototype to: > > > > bool user_creatable_can_be_deleted(UserCreatable *uc, Error **errp) > > > > and calling it in qmp.c like: > > user_creatable_can_be_deleted(USER_CREATABLE(obj), errp); > That makes sense. >=20 > But If so, Does prototype of user_creatable_complete need to be changed=20 > as well by a new patch? Yep, make it a separate patch though.