diff options
author | Gui Jianfeng <guijianfeng@cn.fujitsu.com> | 2010-04-13 04:05:49 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2010-04-13 04:14:20 -0400 |
commit | 34d0f179d6dd711d3fc13c0820a456c59aae8048 (patch) | |
tree | 0e3d533e16cd7d99b0d28ec13353862f1da96dfd /block/cfq-iosched.c | |
parent | 812df48d127365ffd0869aa139738f572a86759c (diff) |
io-controller: Add a new interface "weight_device" for IO-Controller
Currently, IO Controller makes use of blkio.weight to assign weight for
all devices. Here a new user interface "blkio.weight_device" is introduced to
assign different weights for different devices. blkio.weight becomes the
default value for devices which are not configured by "blkio.weight_device"
You can use the following format to assigned specific weight for a given
device:
#echo "major:minor weight" > blkio.weight_device
major:minor represents device number.
And you can remove weight for a given device as following:
#echo "major:minor 0" > blkio.weight_device
V1->V2 changes:
- use user interface "weight_device" instead of "policy" suggested by Vivek
- rename some struct suggested by Vivek
- rebase to 2.6-block "for-linus" branch
- remove an useless list_empty check pointed out by Li Zefan
- some trivial typo fix
V2->V3 changes:
- Move policy_*_node() functions up to get rid of forward declarations
- rename related functions by adding prefix "blkio_"
Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r-- | block/cfq-iosched.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index b6e095c7ef5e..91af2f2e59ce 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -952,7 +952,6 @@ cfq_find_alloc_cfqg(struct cfq_data *cfqd, struct cgroup *cgroup, int create) | |||
952 | if (!cfqg) | 952 | if (!cfqg) |
953 | goto done; | 953 | goto done; |
954 | 954 | ||
955 | cfqg->weight = blkcg->weight; | ||
956 | for_each_cfqg_st(cfqg, i, j, st) | 955 | for_each_cfqg_st(cfqg, i, j, st) |
957 | *st = CFQ_RB_ROOT; | 956 | *st = CFQ_RB_ROOT; |
958 | RB_CLEAR_NODE(&cfqg->rb_node); | 957 | RB_CLEAR_NODE(&cfqg->rb_node); |
@@ -970,6 +969,7 @@ cfq_find_alloc_cfqg(struct cfq_data *cfqd, struct cgroup *cgroup, int create) | |||
970 | sscanf(dev_name(bdi->dev), "%u:%u", &major, &minor); | 969 | sscanf(dev_name(bdi->dev), "%u:%u", &major, &minor); |
971 | blkiocg_add_blkio_group(blkcg, &cfqg->blkg, (void *)cfqd, | 970 | blkiocg_add_blkio_group(blkcg, &cfqg->blkg, (void *)cfqd, |
972 | MKDEV(major, minor)); | 971 | MKDEV(major, minor)); |
972 | cfqg->weight = blkcg_get_weight(blkcg, cfqg->blkg.dev); | ||
973 | 973 | ||
974 | /* Add group on cfqd list */ | 974 | /* Add group on cfqd list */ |
975 | hlist_add_head(&cfqg->cfqd_node, &cfqd->cfqg_list); | 975 | hlist_add_head(&cfqg->cfqd_node, &cfqd->cfqg_list); |