30 May, 2014

4 commits


29 May, 2014

4 commits


28 May, 2014

9 commits


27 May, 2014

5 commits


24 May, 2014

2 commits

  • Currently blk-mq uses the queue timeout for all requests. But
    for some commands, drivers may want to set a specific timeout
    for special requests. Allow this to be passed in through
    request->timeout, and use it if set.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Export the blk-mq in-flight tag iterator for driver consumption.
    This is particularly useful in exception paths or SRSI where
    in-flight IOs need to be cancelled and/or reissued. The NVMe driver
    conversion will use this.

    Signed-off-by: Sam Bradshaw
    Signed-off-by: Matias Bjørling
    Signed-off-by: Jens Axboe

    Sam Bradshaw
     

23 May, 2014

1 commit

  • We want slightly different behavior from them:

    - On single queue devices, we currently use the per-process plug
    for deferred IO and for merging.

    - On multi queue devices, we don't use the per-process plug, but
    we want to go straight to hardware for SYNC IO.

    Split blk_mq_make_request() into a blk_sq_make_request() for single
    queue devices, and retain blk_mq_make_request() for multi queue
    devices. Then we don't need multiple checks for q->nr_hw_queues
    in the request mapping.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

22 May, 2014

2 commits


21 May, 2014

3 commits


20 May, 2014

6 commits


19 May, 2014

1 commit


14 May, 2014

1 commit

  • This adds support for active queue tracking, meaning that the
    blk-mq tagging maintains a count of active users of a tag set.
    This allows us to maintain a notion of fairness between users,
    so that we can distribute the tag depth evenly without starving
    some users while allowing others to try unfair deep queues.

    If sharing of a tag set is detected, each hardware queue will
    track the depth of its own queue. And if this exceeds the total
    depth divided by the number of active queues, the user is actively
    throttled down.

    The active queue count is done lazily to avoid bouncing that data
    between submitter and completer. Each hardware queue gets marked
    active when it allocates its first tag, and gets marked inactive
    when 1) the last tag is cleared, and 2) the queue timeout grace
    period has passed.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

11 May, 2014

2 commits