blk-throttle: Some cleanups and race fixes in limit update code
authorVivek Goyal <vgoyal@redhat.com>
Mon, 7 Mar 2011 20:09:32 +0000 (21:09 +0100)
committerJens Axboe <jaxboe@fusionio.com>
Mon, 7 Mar 2011 20:09:32 +0000 (21:09 +0100)
commitde701c74a34005e637e1ca2634fbf28fd1debba2
tree45a4af16e2a76cbf5866cfb3f284956988918a13
parent231d704b4ab7491473c0b1a9cd0c6e0d1cba85b9
blk-throttle: Some cleanups and race fixes in limit  update code

When throttle group limits are updated through cgroups, a thread is
woken up to process these updates. While reviewing that code, oleg noted
couple of race conditions existed in the code and he also suggested that
code can be simplified.

This patch fixes the races simplifies the code based on Oleg's suggestions:

- Use xchg().
- Introduced a common function throtl_update_blkio_group_common()
          which is shared now by all iops/bps update functions.

Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Fixed a merge issue, throtl_schedule_delayed_work() takes throtl_data
as the argument now, not the queue.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
block/blk-throttle.c