]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - block/blk-core.c
Merge remote-tracking branch 'fbdev/for-next'
[karo-tx-linux.git] / block / blk-core.c
index 0c611d89d74857a1eab7e080bdfecc815432a29f..25f13479f552562bc2e406f3ebed2bf150e93fe9 100644 (file)
@@ -741,9 +741,17 @@ blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn,
 
        q->sg_reserved_size = INT_MAX;
 
+       /* Protect q->elevator from elevator_change */
+       mutex_lock(&q->sysfs_lock);
+
        /* init elevator */
-       if (elevator_init(q, NULL))
+       if (elevator_init(q, NULL)) {
+               mutex_unlock(&q->sysfs_lock);
                return NULL;
+       }
+
+       mutex_unlock(&q->sysfs_lock);
+
        return q;
 }
 EXPORT_SYMBOL(blk_init_allocated_queue);
@@ -1421,6 +1429,9 @@ static bool attempt_plug_merge(struct request_queue *q, struct bio *bio,
        struct request *rq;
        bool ret = false;
 
+       if (blk_queue_nomerges(q))
+               goto out;
+
        plug = current->plug;
        if (!plug)
                goto out;