X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=block%2Felevator.c;h=88318c383608defa5018bdfa929918c767c8d7fa;hb=513694b5f931a62561d21eb97a4740ce37464a45;hp=bafbae0344d319e909e3e7add07467b1c0463a73;hpb=70ec75c5b8e0bda7a16fb387f91e08545f379a0e;p=mirror_ubuntu-artful-kernel.git diff --git a/block/elevator.c b/block/elevator.c index bafbae0344d3..88318c383608 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -134,6 +134,21 @@ static struct elevator_type *elevator_get(const char *name) spin_lock(&elv_list_lock); e = elevator_find(name); + if (!e) { + char elv[ELV_NAME_MAX + strlen("-iosched")]; + + spin_unlock(&elv_list_lock); + + if (!strcmp(name, "anticipatory")) + sprintf(elv, "as-iosched"); + else + sprintf(elv, "%s-iosched", name); + + request_module(elv); + spin_lock(&elv_list_lock); + e = elevator_find(name); + } + if (e && !try_module_get(e->elevator_owner)) e = NULL;