Lines Matching refs:e
63 struct elevator_queue *e = q->elevator; in elv_iosched_allow_bio_merge() local
65 if (e->type->ops.allow_merge) in elv_iosched_allow_bio_merge()
66 return e->type->ops.allow_merge(q, rq, bio); in elv_iosched_allow_bio_merge()
101 static bool elevator_match(const struct elevator_type *e, const char *name, in elevator_match() argument
104 if (!elv_support_features(e->elevator_features, required_features)) in elevator_match()
106 if (!strcmp(e->elevator_name, name)) in elevator_match()
108 if (e->elevator_alias && !strcmp(e->elevator_alias, name)) in elevator_match()
125 struct elevator_type *e; in elevator_find() local
127 list_for_each_entry(e, &elv_list, list) { in elevator_find()
128 if (elevator_match(e, name, required_features)) in elevator_find()
129 return e; in elevator_find()
135 static void elevator_put(struct elevator_type *e) in elevator_put() argument
137 module_put(e->elevator_owner); in elevator_put()
143 struct elevator_type *e; in elevator_get() local
147 e = elevator_find(name, q->required_elevator_features); in elevator_get()
148 if (!e && try_loading) { in elevator_get()
152 e = elevator_find(name, q->required_elevator_features); in elevator_get()
155 if (e && !try_module_get(e->elevator_owner)) in elevator_get()
156 e = NULL; in elevator_get()
159 return e; in elevator_get()
165 struct elevator_type *e) in elevator_alloc() argument
173 eq->type = e; in elevator_alloc()
184 struct elevator_queue *e; in elevator_release() local
186 e = container_of(kobj, struct elevator_queue, kobj); in elevator_release()
187 elevator_put(e->type); in elevator_release()
188 kfree(e); in elevator_release()
191 void __elevator_exit(struct request_queue *q, struct elevator_queue *e) in __elevator_exit() argument
193 mutex_lock(&e->sysfs_lock); in __elevator_exit()
194 blk_mq_exit_sched(q, e); in __elevator_exit()
195 mutex_unlock(&e->sysfs_lock); in __elevator_exit()
197 kobject_put(&e->kobj); in __elevator_exit()
215 struct elevator_queue *e = q->elevator; in elv_rqhash_add() local
218 hash_add(e->hash, &rq->hash, rq_hash_key(rq)); in elv_rqhash_add()
231 struct elevator_queue *e = q->elevator; in elv_rqhash_find() local
235 hash_for_each_possible_safe(e->hash, rq, next, hash, offset) { in elv_rqhash_find()
306 struct elevator_queue *e = q->elevator; in elv_merge() local
345 if (e->type->ops.request_merge) in elv_merge()
346 return e->type->ops.request_merge(q, req, bio); in elv_merge()
400 struct elevator_queue *e = q->elevator; in elv_merged_request() local
402 if (e->type->ops.request_merged) in elv_merged_request()
403 e->type->ops.request_merged(q, rq, type); in elv_merged_request()
414 struct elevator_queue *e = q->elevator; in elv_merge_requests() local
416 if (e->type->ops.requests_merged) in elv_merge_requests()
417 e->type->ops.requests_merged(q, rq, next); in elv_merge_requests()
425 struct elevator_queue *e = q->elevator; in elv_latter_request() local
427 if (e->type->ops.next_request) in elv_latter_request()
428 return e->type->ops.next_request(q, rq); in elv_latter_request()
435 struct elevator_queue *e = q->elevator; in elv_former_request() local
437 if (e->type->ops.former_request) in elv_former_request()
438 return e->type->ops.former_request(q, rq); in elv_former_request()
449 struct elevator_queue *e; in elv_attr_show() local
455 e = container_of(kobj, struct elevator_queue, kobj); in elv_attr_show()
456 mutex_lock(&e->sysfs_lock); in elv_attr_show()
457 error = e->type ? entry->show(e, page) : -ENOENT; in elv_attr_show()
458 mutex_unlock(&e->sysfs_lock); in elv_attr_show()
467 struct elevator_queue *e; in elv_attr_store() local
473 e = container_of(kobj, struct elevator_queue, kobj); in elv_attr_store()
474 mutex_lock(&e->sysfs_lock); in elv_attr_store()
475 error = e->type ? entry->store(e, page, length) : -ENOENT; in elv_attr_store()
476 mutex_unlock(&e->sysfs_lock); in elv_attr_store()
492 struct elevator_queue *e = q->elevator; in elv_register_queue() local
497 error = kobject_add(&e->kobj, &q->kobj, "%s", "iosched"); in elv_register_queue()
499 struct elv_fs_entry *attr = e->type->elevator_attrs; in elv_register_queue()
502 if (sysfs_create_file(&e->kobj, &attr->attr)) in elv_register_queue()
508 kobject_uevent(&e->kobj, KOBJ_ADD); in elv_register_queue()
510 e->registered = 1; in elv_register_queue()
517 struct elevator_queue *e = q->elevator; in elv_unregister_queue() local
521 if (e && e->registered) { in elv_unregister_queue()
522 struct elevator_queue *e = q->elevator; in elv_unregister_queue() local
524 kobject_uevent(&e->kobj, KOBJ_REMOVE); in elv_unregister_queue()
525 kobject_del(&e->kobj); in elv_unregister_queue()
527 e->registered = 0; in elv_unregister_queue()
531 int elv_register(struct elevator_type *e) in elv_register() argument
534 if (WARN_ON_ONCE(!e->ops.insert_requests || !e->ops.dispatch_request)) in elv_register()
538 if (e->icq_size) { in elv_register()
539 if (WARN_ON(e->icq_size < sizeof(struct io_cq)) || in elv_register()
540 WARN_ON(e->icq_align < __alignof__(struct io_cq))) in elv_register()
543 snprintf(e->icq_cache_name, sizeof(e->icq_cache_name), in elv_register()
544 "%s_io_cq", e->elevator_name); in elv_register()
545 e->icq_cache = kmem_cache_create(e->icq_cache_name, e->icq_size, in elv_register()
546 e->icq_align, 0, NULL); in elv_register()
547 if (!e->icq_cache) in elv_register()
553 if (elevator_find(e->elevator_name, 0)) { in elv_register()
555 kmem_cache_destroy(e->icq_cache); in elv_register()
558 list_add_tail(&e->list, &elv_list); in elv_register()
561 printk(KERN_INFO "io scheduler %s registered\n", e->elevator_name); in elv_register()
567 void elv_unregister(struct elevator_type *e) in elv_unregister() argument
571 list_del_init(&e->list); in elv_unregister()
578 if (e->icq_cache) { in elv_unregister()
580 kmem_cache_destroy(e->icq_cache); in elv_unregister()
581 e->icq_cache = NULL; in elv_unregister()
650 struct elevator_type *e, *found = NULL; in elevator_get_by_features() local
654 list_for_each_entry(e, &elv_list, list) { in elevator_get_by_features()
655 if (elv_support_features(e->elevator_features, in elevator_get_by_features()
657 found = e; in elevator_get_by_features()
677 struct elevator_type *e; in elevator_init_mq() local
689 e = elevator_get_default(q); in elevator_init_mq()
691 e = elevator_get_by_features(q); in elevator_init_mq()
692 if (!e) in elevator_init_mq()
705 err = blk_mq_init_sched(q, e); in elevator_init_mq()
711 "falling back to \"none\"\n", e->elevator_name); in elevator_init_mq()
712 elevator_put(e); in elevator_init_mq()
745 struct elevator_type *e; in __elevator_change() local
761 e = elevator_get(q, strstrip(elevator_name), true); in __elevator_change()
762 if (!e) in __elevator_change()
767 elevator_put(e); in __elevator_change()
771 return elevator_switch(q, e); in __elevator_change()
791 struct elevator_queue *e = q->elevator; in elv_iosched_show() local
802 elv = e->type; in elv_iosched_show()