These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / block / elevator.c
index 8985038..c3555c9 100644 (file)
 #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;
 }