From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YbYSJ-0003lh-8S for qemu-devel@nongnu.org; Fri, 27 Mar 2015 13:54:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YbYSG-0003Fm-2H for qemu-devel@nongnu.org; Fri, 27 Mar 2015 13:54:03 -0400 Received: from smtp2.provo.novell.com ([137.65.250.81]:60090) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YbYSF-0003FP-QB for qemu-devel@nongnu.org; Fri, 27 Mar 2015 13:53:59 -0400 Message-ID: <55159918.7020502@suse.com> Date: Sat, 28 Mar 2015 01:53:28 +0800 From: Lin Ma MIME-Version: 1.0 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> In-Reply-To: <20150327182029.39d6392f@nial.brq.redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v5 1/2] qom: Add can_be_deleted callback to UserCreatableClass Reply-To: lma@suse.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov Cc: pbonzini@redhat.com, peter.crosthwaite@xilinx.com, afaerber@suse.de, qemu-devel@nongnu.org 在 2015年03月28日 01:20, Igor Mammedov 写道: > 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_interfaces.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 { >> >> /* */ >> void (*complete)(UserCreatable *uc, Error **errp); >> + bool (*can_be_deleted)(UserCreatable *uc, Error **errp); >> } UserCreatableClass; >> >> /** >> @@ -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 inherited >> + * 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); > [...] >> >> +bool user_creatable_can_be_deleted(Object *obj, Error **errp) >> +{ >> + >> + UserCreatableClass *ucc; >> + UserCreatable *uc = 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. But If so, Does prototype of user_creatable_complete need to be changed as well by a new patch?