[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to obje
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM |
Date: |
Tue, 27 Jun 2017 14:02:55 +0100 |
User-agent: |
Mutt/1.8.0 (2017-02-23) |
On Mon, Jun 26, 2017 at 07:58:32PM +0300, Manos Pitsidianakis wrote:
> On Mon, Jun 26, 2017 at 03:52:34PM +0100, Stefan Hajnoczi wrote:
> > On Fri, Jun 23, 2017 at 03:46:56PM +0300, Manos Pitsidianakis wrote:
> > > +static bool throttle_group_exists(const char *name)
> > > +{
> > > + ThrottleGroup *iter;
> > > + bool ret = false;
> > > +
> > > + qemu_mutex_lock(&throttle_groups_lock);
> >
> > Not sure if this lock or the throttle_groups list are necessary.
> >
> > Have you seen iothread.c:qmp_query_iothreads()? All objects are put
> > into a container (the parent object), so you can just iterate over its
> > children. There's no need for a separate list because QOM already has
> > all the objects.
> >
>
> > > +static void throttle_group_obj_complete(UserCreatable *obj, Error **errp)
> > > +{
> > > + char *name = NULL;
> > > + Error *local_error = NULL;
> > > + ThrottleGroup *tg = THROTTLE_GROUP(obj);
> > > +
> > > + name = object_get_canonical_path_component(OBJECT(obj));
> > > + if (throttle_group_exists(name)) {
> > > + error_setg(&local_error, "A throttle group with this name
> > > already \
> > > + exists.");
> > > + goto ret;
> > > + }
> >
> > QOM should enforce unique id=<ID>. I don't think this is necessary.
> >
> > > +
> > > + qemu_mutex_lock(&throttle_groups_lock);
> > > + tg->name = name;
> > > + qemu_mutex_init(&tg->lock);
> > > + QLIST_INIT(&tg->head);
> > > + QTAILQ_INSERT_TAIL(&throttle_groups, tg, list);
> > > + tg->refcount++;
> > > + qemu_mutex_unlock(&throttle_groups_lock);
> > > +
>
> Sorry for the multiple replies but I just remembered this.
>
> This is necessary because throttle groups are created by other interfaces as
> well. Of course block/throttle-groups.c could use only QOM objects
> internally to eliminate the housekeeping.
I suggest all throttle group objects are visible in QOM. Who are the
non-QOM users?
I have CCed Pradeep who has been working on virtio-9p throttling.
Pradeep: You may be interested in this series, which makes the throttle
group a QOM object (-object throttle-group,id=group0,bps=1235678). In
other words, groups are becoming first-class objects instead of being
hidden behind the member devices that use them.
Stefan
signature.asc
Description: PGP signature
- [Qemu-block] [PATCH RFC v3 0/8] I/O Throtting block filter driver, Manos Pitsidianakis, 2017/06/23
- [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM, Manos Pitsidianakis, 2017/06/23
- Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM, Stefan Hajnoczi, 2017/06/26
- Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM, Manos Pitsidianakis, 2017/06/26
- Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM,
Stefan Hajnoczi <=
- Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM, Alberto Garcia, 2017/06/27
- Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM, Manos Pitsidianakis, 2017/06/27
- Re: [Qemu-block] [PATCH RFC v3 4/8] block: convert ThrottleGroup to object with QOM, Stefan Hajnoczi, 2017/06/28
[Qemu-block] [PATCH RFC v3 5/8] block: add BlockDevOptionsThrottle to QAPI, Manos Pitsidianakis, 2017/06/23