Lines Matching full: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()
87 * elevator_match - Check whether @e's name or alias matches @name
88 * @e: Scheduler to test
91 * Return true if the elevator @e's name or alias matches @name.
93 static bool elevator_match(const struct elevator_type *e, const char *name) in elevator_match() argument
95 return !strcmp(e->elevator_name, name) || in elevator_match()
96 (e->elevator_alias && !strcmp(e->elevator_alias, name)); in elevator_match()
101 struct elevator_type *e; in __elevator_find() local
103 list_for_each_entry(e, &elv_list, list) in __elevator_find()
104 if (elevator_match(e, name)) in __elevator_find()
105 return e; in __elevator_find()
111 struct elevator_type *e; in elevator_find_get() local
114 e = __elevator_find(name); in elevator_find_get()
115 if (e && (!elevator_tryget(e))) in elevator_find_get()
116 e = NULL; in elevator_find_get()
118 return e; in elevator_find_get()
124 struct elevator_type *e) in elevator_alloc() argument
132 __elevator_get(e); in elevator_alloc()
133 eq->type = e; in elevator_alloc()
144 struct elevator_queue *e; in elevator_release() local
146 e = container_of(kobj, struct elevator_queue, kobj); in elevator_release()
147 elevator_put(e->type); in elevator_release()
148 kfree(e); in elevator_release()
153 struct elevator_queue *e = q->elevator; in elevator_exit() local
158 mutex_lock(&e->sysfs_lock); in elevator_exit()
159 blk_mq_exit_sched(q, e); in elevator_exit()
160 mutex_unlock(&e->sysfs_lock); in elevator_exit()
162 kobject_put(&e->kobj); in elevator_exit()
180 struct elevator_queue *e = q->elevator; in elv_rqhash_add() local
183 hash_add(e->hash, &rq->hash, rq_hash_key(rq)); in elv_rqhash_add()
196 struct elevator_queue *e = q->elevator; in elv_rqhash_find() local
200 hash_for_each_possible_safe(e->hash, rq, next, hash, offset) { in elv_rqhash_find()
271 struct elevator_queue *e = q->elevator; in elv_merge() local
310 if (e->type->ops.request_merge) in elv_merge()
311 return e->type->ops.request_merge(q, req, bio); in elv_merge()
365 struct elevator_queue *e = q->elevator; in elv_merged_request() local
367 if (e->type->ops.request_merged) in elv_merged_request()
368 e->type->ops.request_merged(q, rq, type); in elv_merged_request()
379 struct elevator_queue *e = q->elevator; in elv_merge_requests() local
381 if (e->type->ops.requests_merged) in elv_merge_requests()
382 e->type->ops.requests_merged(q, rq, next); in elv_merge_requests()
390 struct elevator_queue *e = q->elevator; in elv_latter_request() local
392 if (e->type->ops.next_request) in elv_latter_request()
393 return e->type->ops.next_request(q, rq); in elv_latter_request()
400 struct elevator_queue *e = q->elevator; in elv_former_request() local
402 if (e->type->ops.former_request) in elv_former_request()
403 return e->type->ops.former_request(q, rq); in elv_former_request()
414 struct elevator_queue *e; in elv_attr_show() local
420 e = container_of(kobj, struct elevator_queue, kobj); in elv_attr_show()
421 mutex_lock(&e->sysfs_lock); in elv_attr_show()
422 error = e->type ? entry->show(e, page) : -ENOENT; in elv_attr_show()
423 mutex_unlock(&e->sysfs_lock); in elv_attr_show()
432 struct elevator_queue *e; in elv_attr_store() local
438 e = container_of(kobj, struct elevator_queue, kobj); in elv_attr_store()
439 mutex_lock(&e->sysfs_lock); in elv_attr_store()
440 error = e->type ? entry->store(e, page, length) : -ENOENT; in elv_attr_store()
441 mutex_unlock(&e->sysfs_lock); in elv_attr_store()
457 struct elevator_queue *e = q->elevator; in elv_register_queue() local
462 error = kobject_add(&e->kobj, &q->disk->queue_kobj, "iosched"); in elv_register_queue()
464 const struct elv_fs_entry *attr = e->type->elevator_attrs; in elv_register_queue()
467 if (sysfs_create_file(&e->kobj, &attr->attr)) in elv_register_queue()
473 kobject_uevent(&e->kobj, KOBJ_ADD); in elv_register_queue()
475 set_bit(ELEVATOR_FLAG_REGISTERED, &e->flags); in elv_register_queue()
482 struct elevator_queue *e = q->elevator; in elv_unregister_queue() local
486 if (e && test_and_clear_bit(ELEVATOR_FLAG_REGISTERED, &e->flags)) { in elv_unregister_queue()
487 kobject_uevent(&e->kobj, KOBJ_REMOVE); in elv_unregister_queue()
488 kobject_del(&e->kobj); in elv_unregister_queue()
492 int elv_register(struct elevator_type *e) in elv_register() argument
495 if (WARN_ON_ONCE(!e->ops.finish_request)) in elv_register()
498 if (WARN_ON_ONCE(!e->ops.insert_requests || !e->ops.dispatch_request)) in elv_register()
502 if (e->icq_size) { in elv_register()
503 if (WARN_ON(e->icq_size < sizeof(struct io_cq)) || in elv_register()
504 WARN_ON(e->icq_align < __alignof__(struct io_cq))) in elv_register()
507 snprintf(e->icq_cache_name, sizeof(e->icq_cache_name), in elv_register()
508 "%s_io_cq", e->elevator_name); in elv_register()
509 e->icq_cache = kmem_cache_create(e->icq_cache_name, e->icq_size, in elv_register()
510 e->icq_align, 0, NULL); in elv_register()
511 if (!e->icq_cache) in elv_register()
517 if (__elevator_find(e->elevator_name)) { in elv_register()
519 kmem_cache_destroy(e->icq_cache); in elv_register()
522 list_add_tail(&e->list, &elv_list); in elv_register()
525 printk(KERN_INFO "io scheduler %s registered\n", e->elevator_name); in elv_register()
531 void elv_unregister(struct elevator_type *e) in elv_unregister() argument
535 list_del_init(&e->list); in elv_unregister()
542 if (e->icq_cache) { in elv_unregister()
544 kmem_cache_destroy(e->icq_cache); in elv_unregister()
545 e->icq_cache = NULL; in elv_unregister()
572 struct elevator_type *e; in elevator_init_mq() local
581 e = elevator_get_default(q); in elevator_init_mq()
582 if (!e) in elevator_init_mq()
598 err = blk_mq_init_sched(q, e); in elevator_init_mq()
604 "falling back to \"none\"\n", e->elevator_name); in elevator_init_mq()
607 elevator_put(e); in elevator_init_mq()
679 struct elevator_type *e; in elevator_change() local
695 e = elevator_find_get(elevator_name); in elevator_change()
696 if (!e) in elevator_change()
698 ret = elevator_switch(q, e); in elevator_change()
699 elevator_put(e); in elevator_change()
738 struct elevator_type *cur = NULL, *e; in elv_iosched_show() local
749 list_for_each_entry(e, &elv_list, list) { in elv_iosched_show()
750 if (e == cur) in elv_iosched_show()
751 len += sprintf(name+len, "[%s] ", e->elevator_name); in elv_iosched_show()
753 len += sprintf(name+len, "%s ", e->elevator_name); in elv_iosched_show()