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 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel