aboutsummaryrefslogtreecommitdiffstats
path: root/block/cfq-iosched.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2012-03-05 16:15:07 -0500
committerJens Axboe <axboe@kernel.dk>2012-03-06 15:27:22 -0500
commite56da7e287967667474a58c4f60c286279e3f487 (patch)
tree4ce64581888f287a25b4abdc21fc641210351612 /block/cfq-iosched.c
parentcd1604fab4f95f7cfc227d3955fd7ae14da61f38 (diff)
blkcg: don't allow or retain configuration of missing devices
blkcg is very peculiar in that it allows setting and remembering configurations for non-existent devices by maintaining separate data structures for configuration. This behavior is completely out of the usual norms and outright confusing; furthermore, it uses dev_t number to match the configuration to devices, which is unpredictable to begin with and becomes completely unuseable if EXT_DEVT is fully used. It is wholely unnecessary - we already have fully functional userland mechanism to program devices being hotplugged which has full access to device identification, connection topology and filesystem information. Add a new struct blkio_group_conf which contains all blkcg configurations to blkio_group and let blkio_group, which can be created iff the associated device exists and is removed when the associated device goes away, carry all configurations. Note that, after this patch, all newly created blkg's will always have the default configuration (unlimited for throttling and blkcg's weight for propio). This patch makes blkio_policy_node meaningless but doesn't remove it. The next patch will. -v2: Updated to retry after short sleep if blkg lookup/creation failed due to the queue being temporarily bypassed as indicated by -EBUSY return. Pointed out by Vivek. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Vivek Goyal <vgoyal@redhat.com> Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r--block/cfq-iosched.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index acef564578c3..08d4fdd188fa 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1083,7 +1083,7 @@ static struct blkio_group *cfq_alloc_blkio_group(struct request_queue *q,
1083 return NULL; 1083 return NULL;
1084 1084
1085 cfq_init_cfqg_base(cfqg); 1085 cfq_init_cfqg_base(cfqg);
1086 cfqg->weight = blkcg_get_weight(blkcg, cfqg->blkg.dev); 1086 cfqg->weight = blkcg->weight;
1087 1087
1088 /* 1088 /*
1089 * Take the initial reference that will be released on destroy 1089 * Take the initial reference that will be released on destroy