qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 1/2] qom: Add can_be_deleted callback to User


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH v5 1/2] qom: Add can_be_deleted callback to UserCreatableClass
Date: Mon, 30 Mar 2015 14:02:08 +0200

On Sat, 28 Mar 2015 01:53:28 +0800
Lin Ma <address@hidden> wrote:

> 
> 在 2015年03月28日 01:20, Igor Mammedov 写道:
> > On Sat, 28 Mar 2015 00:55:29 +0800
> > Lin Ma <address@hidden> 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 <address@hidden>
> >> ---
> >>   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 {
> >>   
> >>       /* <public> */
> >>       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?
Yep, make it a separate patch though.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]