summaryrefslogtreecommitdiffstats
path: root/kernel/block/elevator.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/block/elevator.c')
-rw-r--r--kernel/block/elevator.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/block/elevator.c b/kernel/block/elevator.c
index 8985038f3..c3555c9c6 100644
--- a/kernel/block/elevator.c
+++ b/kernel/block/elevator.c
@@ -35,11 +35,11 @@
#include <linux/hash.h>
#include <linux/uaccess.h>
#include <linux/pm_runtime.h>
+#include <linux/blk-cgroup.h>
#include <trace/events/block.h>
#include "blk.h"
-#include "blk-cgroup.h"
static DEFINE_SPINLOCK(elv_list_lock);
static LIST_HEAD(elv_list);
@@ -420,7 +420,7 @@ int elv_merge(struct request_queue *q, struct request **req, struct bio *bio)
* noxmerges: Only simple one-hit cache try
* merges: All merge tries attempted
*/
- if (blk_queue_nomerges(q))
+ if (blk_queue_nomerges(q) || !bio_mergeable(bio))
return ELEVATOR_NO_MERGE;
/*
@@ -806,6 +806,8 @@ int elv_register_queue(struct request_queue *q)
}
kobject_uevent(&e->kobj, KOBJ_ADD);
e->registered = 1;
+ if (e->type->ops.elevator_registered_fn)
+ e->type->ops.elevator_registered_fn(q);
}
return error;
}