projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drm/i915/guc: Convert golden context init to iosys_map
[linux-2.6-microblaze.git]
/
block
/
elevator.c
diff --git
a/block/elevator.c
b/block/elevator.c
index
19a78d5
..
ec98aed
100644
(file)
--- a/
block/elevator.c
+++ b/
block/elevator.c
@@
-188,8
+188,10
@@
static void elevator_release(struct kobject *kobj)
kfree(e);
}
kfree(e);
}
-void
__elevator_exit(struct request_queue *q, struct elevator_queue *e
)
+void
elevator_exit(struct request_queue *q
)
{
{
+ struct elevator_queue *e = q->elevator;
+
mutex_lock(&e->sysfs_lock);
blk_mq_exit_sched(q, e);
mutex_unlock(&e->sysfs_lock);
mutex_lock(&e->sysfs_lock);
blk_mq_exit_sched(q, e);
mutex_unlock(&e->sysfs_lock);
@@
-595,7
+597,8
@@
int elevator_switch_mq(struct request_queue *q,
elv_unregister_queue(q);
ioc_clear_queue(q);
elv_unregister_queue(q);
ioc_clear_queue(q);
- elevator_exit(q, q->elevator);
+ blk_mq_sched_free_rqs(q);
+ elevator_exit(q);
}
ret = blk_mq_init_sched(q, new_e);
}
ret = blk_mq_init_sched(q, new_e);
@@
-605,7
+608,8
@@
int elevator_switch_mq(struct request_queue *q,
if (new_e) {
ret = elv_register_queue(q, true);
if (ret) {
if (new_e) {
ret = elv_register_queue(q, true);
if (ret) {
- elevator_exit(q, q->elevator);
+ blk_mq_sched_free_rqs(q);
+ elevator_exit(q);
goto out;
}
}
goto out;
}
}