block: clear BIO_PERCPU_CACHE flag if polling isn't supported
[linux-2.6-microblaze.git] / block / blk-core.c
index 0447769..0d4d6b1 100644 (file)
@@ -122,7 +122,6 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
        rq->internal_tag = BLK_MQ_NO_TAG;
        rq->start_time_ns = ktime_get_ns();
        rq->part = NULL;
-       refcount_set(&rq->ref, 1);
        blk_crypto_rq_set_defaults(rq);
 }
 EXPORT_SYMBOL(blk_rq_init);
@@ -833,8 +832,11 @@ static noinline_for_stack bool submit_bio_checks(struct bio *bio)
                }
        }
 
-       if (!test_bit(QUEUE_FLAG_POLL, &q->queue_flags))
+       if (!test_bit(QUEUE_FLAG_POLL, &q->queue_flags)) {
+               /* can't support alloc cache if we turn off polling */
+               bio_clear_flag(bio, BIO_PERCPU_CACHE);
                bio->bi_opf &= ~REQ_HIPRI;
+       }
 
        switch (bio_op(bio)) {
        case REQ_OP_DISCARD: