Messages in this thread | | | Date | Mon, 17 Aug 2009 13:29:48 +0800 | From | Gui Jianfeng <> | Subject | Re: [PATCH 02/24] io-controller: Core of the elevator fair queuing |
| |
Vivek Goyal wrote: ... > +static void place_entity(struct io_service_tree *st, struct io_entity *entity, > + int add_front) > +{ > + u64 vdisktime = st->min_vdisktime; > + struct rb_node *parent; > + struct io_entity *entry; > + int nr_active = st->nr_active - 1; > + > + /* > + * Currently put entity at the end of last entity. This probably will > + * require adjustments as we move along > + */ > + if (io_entity_class_idle(entity)) { > + vdisktime = elv_delta_fair(ELV_IDLE_DELAY, entity); > + parent = rb_last(&st->active); > + if (parent) { > + entry = rb_entry(parent, struct io_entity, rb_node); > + vdisktime += entry->vdisktime; > + } > + } else if (!add_front && nr_active) { > + parent = rb_last(&st->active); > + if (parent) { > + entry = rb_entry(parent, struct io_entity, rb_node); > + vdisktime = entry->vdisktime; > + } > + } else > + vdisktime = st->min_vdisktime;
Hi Vivek,
Should we set vdisktime a little small than st->min_vdisktime to ensure putting this entity at the left-most position when add_front is set?
> + > + entity->vdisktime = max_vdisktime(st->min_vdisktime, vdisktime); > +} > + > +static inline void io_entity_update_prio(struct io_entity *entity) > +{ > + if (unlikely(entity->ioprio_changed)) { > + /* > + * Re-initialize the service tree as ioprio class of the > + * entity might have changed. > + */ > + init_io_entity_service_tree(entity, parent_entity(entity)); > + entity->ioprio_changed = 0; > + } > +} > +
-- Regards Gui Jianfeng
| |