block: reorganize throtl_get_tg() and blk_throtl_bio()
authorTejun Heo <tj@kernel.org>
Wed, 19 Oct 2011 12:33:01 +0000 (14:33 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 19 Oct 2011 12:33:01 +0000 (14:33 +0200)
commitbc16a4f933bc5ed50826b20561e4c3515061998b
tree07c0dc65408932176c32df08e7a8adbbc2ca1d07
parente3c78ca524d230bc145e902625e88c392a58ddf3
block: reorganize throtl_get_tg() and blk_throtl_bio()

blk_throtl_bio() and throtl_get_tg() have rather unusual interface.

* throtl_get_tg() returns pointer to a valid tg or ERR_PTR(-ENODEV),
  and drops queue_lock in the latter case.  Different locking context
  depending on return value is error-prone and DEAD state is scheduled
  to be protected by queue_lock anyway.  Move DEAD check inside
  queue_lock and return valid tg or NULL.

* blk_throtl_bio() indicates return status both with its return value
  and in/out param **@bio.  The former is used to indicate whether
  queue is found to be dead during throtl processing.  The latter
  whether the bio is throttled.

  There's no point in returning DEAD check result from
  blk_throtl_bio().  The queue can die after blk_throtl_bio() is
  finished but before make_request_fn() grabs queue lock.

  Make it take *@bio instead and return boolean result indicating
  whether the request is throttled or not.

This patch doesn't cause any visible functional difference.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-core.c
block/blk-throttle.c
block/blk.h