lkml.org 
[lkml]   [2012]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 9/9] block: make blk-throttle preserve the issuing task on delayed bios
    Date
    Make blk-throttle call bio_associate_current() on bios being delayed
    such that they get issued to block layer with the original io_context.
    This allows stacking blk-throttle and cfq-iosched propio policies.
    bios will always be issued with the correct ioc and blkcg whether it
    gets delayed by blk-throttle or not.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    ---
    block/blk-throttle.c | 4 ++++
    1 files changed, 4 insertions(+), 0 deletions(-)

    diff --git a/block/blk-throttle.c b/block/blk-throttle.c
    index a7c8e0b..ad8e16b 100644
    --- a/block/blk-throttle.c
    +++ b/block/blk-throttle.c
    @@ -894,6 +894,9 @@ bool blk_throtl_bio(struct request_queue *q, struct bio *bio)
    goto out;
    }

    + /* bio_associate_current() needs ioc, try creating */
    + create_io_context(GFP_ATOMIC, q->node);
    +
    /*
    * A throtl_grp pointer retrieved under rcu can be used to access
    * basic fields like stats and io rates. If a group has no rules,
    @@ -958,6 +961,7 @@ queue_bio:
    tg->io_disp[rw], tg->iops[rw],
    tg->nr_queued[READ], tg->nr_queued[WRITE]);

    + bio_associate_current(bio);
    throtl_add_bio_tg(q->td, tg, bio);
    throttled = true;

    --
    1.7.7.3


    \
     
     \ /
      Last update: 2012-02-16 23:41    [W:4.688 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site