lkml.org 
[lkml]   [2014]   [Mar]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/4] blk-mq: initialize request on allocation
    Date
    If we want to share tag and request allocation between queues we cannot
    initialize the request at init/free time, but need to initialize it
    at allocation time as it might get used for different queues over its
    lifetime.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    block/blk-mq.c | 4 +---
    1 file changed, 1 insertion(+), 3 deletions(-)

    diff --git a/block/blk-mq.c b/block/blk-mq.c
    index 871acd6..ec0c276 100644
    --- a/block/blk-mq.c
    +++ b/block/blk-mq.c
    @@ -82,6 +82,7 @@ static struct request *__blk_mq_alloc_request(struct blk_mq_hw_ctx *hctx,
    tag = blk_mq_get_tag(hctx->tags, gfp, reserved);
    if (tag != BLK_MQ_TAG_FAIL) {
    rq = hctx->rqs[tag];
    + blk_rq_init(hctx->queue, rq);
    rq->tag = tag;

    return rq;
    @@ -254,9 +255,7 @@ static void __blk_mq_free_request(struct blk_mq_hw_ctx *hctx,
    const int tag = rq->tag;
    struct request_queue *q = rq->q;

    - blk_rq_init(hctx->queue, rq);
    blk_mq_put_tag(hctx->tags, tag);
    -
    blk_mq_queue_exit(q);
    }

    @@ -1128,7 +1127,6 @@ static int blk_mq_init_rq_map(struct blk_mq_hw_ctx *hctx,
    left -= to_do * rq_size;
    for (j = 0; j < to_do; j++) {
    hctx->rqs[i] = p;
    - blk_rq_init(hctx->queue, hctx->rqs[i]);
    p += rq_size;
    i++;
    }
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2014-03-31 18:21    [W:4.330 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site