From: Jens Axboe Date: Fri, 8 Nov 2013 16:08:12 +0000 (-0700) Subject: Merge branch 'blk-mq/core' into for-3.13/core X-Git-Tag: v3.13-rc1~101^2 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=e37459b8e2c7db6735e39e019e448b76e5e77647;p=linux.git Merge branch 'blk-mq/core' into for-3.13/core Signed-off-by: Jens Axboe Conflicts: block/blk-timeout.c --- e37459b8e2c7db6735e39e019e448b76e5e77647 diff --cc block/blk-core.c index 25f13479f552,936876ab662d..8bdd0121212a --- a/block/blk-core.c +++ b/block/blk-core.c @@@ -644,15 -611,17 +611,19 @@@ struct request_queue *blk_alloc_queue_n q->bypass_depth = 1; __set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags); + init_waitqueue_head(&q->mq_freeze_wq); + if (blkcg_init_queue(q)) - goto fail_id; + goto fail_bdi; return q; +fail_bdi: + bdi_destroy(&q->backing_dev_info); fail_id: ida_simple_remove(&blk_queue_ida, q->id); + fail_c: + percpu_counter_destroy(&q->mq_usage_counter); fail_q: kmem_cache_free(blk_requestq_cachep, q); return NULL; @@@ -1428,10 -1401,8 +1411,11 @@@ bool blk_attempt_plug_merge(struct requ struct blk_plug *plug; struct request *rq; bool ret = false; + struct list_head *plug_list; + if (blk_queue_nomerges(q)) + goto out; + plug = current->plug; if (!plug) goto out; diff --cc block/blk-timeout.c index abf725c655fc,22846cf3595a..bba81c9348e1 --- a/block/blk-timeout.c +++ b/block/blk-timeout.c @@@ -88,11 -89,18 +89,19 @@@ static void blk_rq_timed_out(struct req ret = q->rq_timed_out_fn(req); switch (ret) { case BLK_EH_HANDLED: - __blk_complete_request(req); + /* Can we use req->errors here? */ + if (q->mq_ops) + blk_mq_complete_request(req, req->errors); + else + __blk_complete_request(req); break; case BLK_EH_RESET_TIMER: - blk_add_timer(req); - blk_clear_rq_complete(req); + if (q->mq_ops) + blk_mq_add_timer(req); + else + blk_add_timer(req); ++ + blk_clear_rq_complete(req); break; case BLK_EH_NOT_HANDLED: /*