]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - block/elevator.c
Merge branch 'etnaviv/fixes' of https://git.pengutronix.de/git/lst/linux into drm...
[karo-tx-linux.git] / block / elevator.c
index 4d9084a14c1093b1c00d79f079663a643c5d05fe..dac99fbfc273f36234b95f80feb711173fdf41e7 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "blk.h"
 #include "blk-mq-sched.h"
+#include "blk-wbt.h"
 
 static DEFINE_SPINLOCK(elv_list_lock);
 static LIST_HEAD(elv_list);
@@ -877,6 +878,8 @@ void elv_unregister_queue(struct request_queue *q)
                kobject_uevent(&e->kobj, KOBJ_REMOVE);
                kobject_del(&e->kobj);
                e->registered = 0;
+               /* Re-enable throttling in case elevator disabled it */
+               wbt_enable_default(q);
        }
 }
 EXPORT_SYMBOL(elv_unregister_queue);
@@ -947,7 +950,6 @@ static int elevator_switch_mq(struct request_queue *q,
        int ret;
 
        blk_mq_freeze_queue(q);
-       blk_mq_quiesce_queue(q);
 
        if (q->elevator) {
                if (q->elevator->registered)
@@ -975,9 +977,7 @@ static int elevator_switch_mq(struct request_queue *q,
 
 out:
        blk_mq_unfreeze_queue(q);
-       blk_mq_start_stopped_hw_queues(q, true);
        return ret;
-
 }
 
 /*
@@ -1062,10 +1062,8 @@ static int __elevator_change(struct request_queue *q, const char *name)
 
        strlcpy(elevator_name, name, sizeof(elevator_name));
        e = elevator_get(strstrip(elevator_name), true);
-       if (!e) {
-               printk(KERN_ERR "elevator: type %s not found\n", elevator_name);
+       if (!e)
                return -EINVAL;
-       }
 
        if (q->elevator &&
            !strcmp(elevator_name, q->elevator->type->elevator_name)) {
@@ -1085,19 +1083,6 @@ static int __elevator_change(struct request_queue *q, const char *name)
        return elevator_switch(q, e);
 }
 
-int elevator_change(struct request_queue *q, const char *name)
-{
-       int ret;
-
-       /* Protect q->elevator from elevator_init() */
-       mutex_lock(&q->sysfs_lock);
-       ret = __elevator_change(q, name);
-       mutex_unlock(&q->sysfs_lock);
-
-       return ret;
-}
-EXPORT_SYMBOL(elevator_change);
-
 static inline bool elv_support_iosched(struct request_queue *q)
 {
        if (q->mq_ops && q->tag_set && (q->tag_set->flags &
@@ -1118,7 +1103,6 @@ ssize_t elv_iosched_store(struct request_queue *q, const char *name,
        if (!ret)
                return count;
 
-       printk(KERN_ERR "elevator: switch to %s failed\n", name);
        return ret;
 }