Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Fri, 26 Nov 2010 22:06:27 +0800 | Subject | [PATCH] add rb_next in block throttle | From | Hillf Danton <> |
| |
When selecting group for dispatching, the first entry of the service tree is sequentially dequeued, then the first entry is recomputed by calling rb_first().
When the first is removed from service tree, new first could also be computed with rb_next(), since it could be faster than rb_first in this special environment.
Signed-off-by: Hillf Danton <dhillf@gmail.com> ---
--- a/block/blk-throttle.c 2010-11-01 19:54:12.000000000 +0800 +++ b/block/blk-throttle.c 2010-11-26 21:27:40.000000000 +0800 @@ -251,7 +251,7 @@ static void rb_erase_init(struct rb_node static void throtl_rb_erase(struct rb_node *n, struct throtl_rb_root *root) { if (root->left == n) - root->left = NULL; + root->left = rb_next(n); rb_erase_init(n, &root->rb); --root->count; }
| ![\](/images/icornerr.gif) |