From: Tao Ma <tm-d1IQDZat3X0@public.gmane.org>
To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org,
vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
ctalbott-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
rni-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [PATCH 18/21] blkcg: move blkio_group_conf->weight to cfq
Date: Tue, 03 Apr 2012 05:39:23 +0800 [thread overview]
Message-ID: <4F7A1C8B.3010402@tao.ma> (raw)
In-Reply-To: <1332975091-10950-19-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Hi Tejun,
On 03/29/2012 06:51 AM, Tejun Heo wrote:
> blkio_group_conf->weight is owned by cfq and has no reason to be
> defined in blkcg core. Replace it with cfq_group->dev_weight and let
> conf setting functions directly set it. If dev_weight is zero, the
> cfqg doesn't have device specific weight configured.
>
> Also, rename BLKIO_WEIGHT_* constants to CFQ_WEIGHT_* and rename
> blkio_cgroup->weight to blkio_cgroup->cfq_weight. We eventually want
> per-policy storage in blkio_cgroup but just mark the ownership of the
> field for now.
I guess blkio->weight is a generic way of abstracting the weight between
different block cgroups. Yes, currently, only cfq uses it, but I am
trying to improve Shaohua's original fiops scheduler and add cgroup
support to it. So please leave it there so that future scheduler(if
other than the fiops scheduler) can use the framework.
Thanks
Tao
>
> Signed-off-by: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> ---
> block/blk-cgroup.c | 4 +-
> block/blk-cgroup.h | 14 +++++----
> block/cfq-iosched.c | 77 +++++++++++++++++++++++---------------------------
> 3 files changed, 45 insertions(+), 50 deletions(-)
>
> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
> index 0b4b765..7688aef 100644
> --- a/block/blk-cgroup.c
> +++ b/block/blk-cgroup.c
> @@ -30,7 +30,7 @@ static LIST_HEAD(blkio_list);
> static DEFINE_MUTEX(all_q_mutex);
> static LIST_HEAD(all_q_list);
>
> -struct blkio_cgroup blkio_root_cgroup = { .weight = 2*BLKIO_WEIGHT_DEFAULT };
> +struct blkio_cgroup blkio_root_cgroup = { .cfq_weight = 2 * CFQ_WEIGHT_DEFAULT };
> EXPORT_SYMBOL_GPL(blkio_root_cgroup);
>
> static struct blkio_policy_type *blkio_policy[BLKIO_NR_POLICIES];
> @@ -611,7 +611,7 @@ static struct cgroup_subsys_state *blkiocg_create(struct cgroup *cgroup)
> if (!blkcg)
> return ERR_PTR(-ENOMEM);
>
> - blkcg->weight = BLKIO_WEIGHT_DEFAULT;
> + blkcg->cfq_weight = CFQ_WEIGHT_DEFAULT;
> blkcg->id = atomic64_inc_return(&id_seq); /* root is 0, start from 1 */
> done:
> spin_lock_init(&blkcg->lock);
> diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h
> index e368dd00..386db29 100644
> --- a/block/blk-cgroup.h
> +++ b/block/blk-cgroup.h
> @@ -29,6 +29,11 @@ enum blkio_policy_id {
>
> #ifdef CONFIG_BLK_CGROUP
>
> +/* CFQ specific, out here for blkcg->cfq_weight */
> +#define CFQ_WEIGHT_MIN 10
> +#define CFQ_WEIGHT_MAX 1000
> +#define CFQ_WEIGHT_DEFAULT 500
> +
> /* cft->private [un]packing for stat printing */
> #define BLKCG_STAT_PRIV(pol, off) (((unsigned)(pol) << 16) | (off))
> #define BLKCG_STAT_POL(prv) ((unsigned)(prv) >> 16)
> @@ -46,12 +51,14 @@ enum blkg_rwstat_type {
>
> struct blkio_cgroup {
> struct cgroup_subsys_state css;
> - unsigned int weight;
> spinlock_t lock;
> struct hlist_head blkg_list;
>
> /* for policies to test whether associated blkcg has changed */
> uint64_t id;
> +
> + /* TODO: per-policy storage in blkio_cgroup */
> + unsigned int cfq_weight; /* belongs to cfq */
> };
>
> struct blkg_stat {
> @@ -65,7 +72,6 @@ struct blkg_rwstat {
> };
>
> struct blkio_group_conf {
> - unsigned int weight;
> u64 iops[2];
> u64 bps[2];
> };
> @@ -355,10 +361,6 @@ static inline void blkg_put(struct blkio_group *blkg) { }
>
> #endif
>
> -#define BLKIO_WEIGHT_MIN 10
> -#define BLKIO_WEIGHT_MAX 1000
> -#define BLKIO_WEIGHT_DEFAULT 500
> -
> #ifdef CONFIG_BLK_CGROUP
> extern struct blkio_cgroup blkio_root_cgroup;
> extern struct blkio_cgroup *cgroup_to_blkio_cgroup(struct cgroup *cgroup);
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index a1f37df..adab10d 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -224,7 +224,7 @@ struct cfq_group {
> u64 vdisktime;
> unsigned int weight;
> unsigned int new_weight;
> - bool needs_update;
> + unsigned int dev_weight;
>
> /* number of cfqq currently on this group */
> int nr_cfqq;
> @@ -838,7 +838,7 @@ static inline u64 cfq_scale_slice(unsigned long delta, struct cfq_group *cfqg)
> {
> u64 d = delta << CFQ_SERVICE_SHIFT;
>
> - d = d * BLKIO_WEIGHT_DEFAULT;
> + d = d * CFQ_WEIGHT_DEFAULT;
> do_div(d, cfqg->weight);
> return d;
> }
> @@ -1165,9 +1165,9 @@ static void
> cfq_update_group_weight(struct cfq_group *cfqg)
> {
> BUG_ON(!RB_EMPTY_NODE(&cfqg->rb_node));
> - if (cfqg->needs_update) {
> + if (cfqg->new_weight) {
> cfqg->weight = cfqg->new_weight;
> - cfqg->needs_update = false;
> + cfqg->new_weight = 0;
> }
> }
>
> @@ -1325,21 +1325,12 @@ static void cfq_init_cfqg_base(struct cfq_group *cfqg)
> }
>
> #ifdef CONFIG_CFQ_GROUP_IOSCHED
> -static void cfq_update_blkio_group_weight(struct blkio_group *blkg,
> - unsigned int weight)
> -{
> - struct cfq_group *cfqg = blkg_to_cfqg(blkg);
> -
> - cfqg->new_weight = weight;
> - cfqg->needs_update = true;
> -}
> -
> static void cfq_init_blkio_group(struct blkio_group *blkg)
> {
> struct cfq_group *cfqg = blkg_to_cfqg(blkg);
>
> cfq_init_cfqg_base(cfqg);
> - cfqg->weight = blkg->blkcg->weight;
> + cfqg->weight = blkg->blkcg->cfq_weight;
> }
>
> /*
> @@ -1377,36 +1368,38 @@ static void cfq_link_cfqq_cfqg(struct cfq_queue *cfqq, struct cfq_group *cfqg)
> cfqg_get(cfqg);
> }
>
> -static u64 blkg_prfill_weight_device(struct seq_file *sf,
> +static u64 cfqg_prfill_weight_device(struct seq_file *sf,
> struct blkg_policy_data *pd, int off)
> {
> - if (!pd->conf.weight)
> + struct cfq_group *cfqg = (void *)pd->pdata;
> +
> + if (!cfqg->dev_weight)
> return 0;
> - return __blkg_prfill_u64(sf, pd, pd->conf.weight);
> + return __blkg_prfill_u64(sf, pd, cfqg->dev_weight);
> }
>
> -static int blkcg_print_weight_device(struct cgroup *cgrp, struct cftype *cft,
> - struct seq_file *sf)
> +static int cfqg_print_weight_device(struct cgroup *cgrp, struct cftype *cft,
> + struct seq_file *sf)
> {
> blkcg_print_blkgs(sf, cgroup_to_blkio_cgroup(cgrp),
> - blkg_prfill_weight_device, BLKIO_POLICY_PROP, 0,
> + cfqg_prfill_weight_device, BLKIO_POLICY_PROP, 0,
> false);
> return 0;
> }
>
> -static int blkcg_print_weight(struct cgroup *cgrp, struct cftype *cft,
> - struct seq_file *sf)
> +static int cfq_print_weight(struct cgroup *cgrp, struct cftype *cft,
> + struct seq_file *sf)
> {
> - seq_printf(sf, "%u\n", cgroup_to_blkio_cgroup(cgrp)->weight);
> + seq_printf(sf, "%u\n", cgroup_to_blkio_cgroup(cgrp)->cfq_weight);
> return 0;
> }
>
> -static int blkcg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> - const char *buf)
> +static int cfqg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> + const char *buf)
> {
> struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgrp);
> - struct blkg_policy_data *pd;
> struct blkg_conf_ctx ctx;
> + struct cfq_group *cfqg;
> int ret;
>
> ret = blkg_conf_prep(blkcg, buf, &ctx);
> @@ -1414,11 +1407,11 @@ static int blkcg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> return ret;
>
> ret = -EINVAL;
> - pd = ctx.blkg->pd[BLKIO_POLICY_PROP];
> - if (pd && (!ctx.v || (ctx.v >= BLKIO_WEIGHT_MIN &&
> - ctx.v <= BLKIO_WEIGHT_MAX))) {
> - pd->conf.weight = ctx.v;
> - cfq_update_blkio_group_weight(ctx.blkg, ctx.v ?: blkcg->weight);
> + cfqg = blkg_to_cfqg(ctx.blkg);
> + if (cfqg && (!ctx.v || (ctx.v >= CFQ_WEIGHT_MIN &&
> + ctx.v <= CFQ_WEIGHT_MAX))) {
> + cfqg->dev_weight = ctx.v;
> + cfqg->new_weight = cfqg->dev_weight ?: blkcg->cfq_weight;
> ret = 0;
> }
>
> @@ -1426,23 +1419,23 @@ static int blkcg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> return ret;
> }
>
> -static int blkcg_set_weight(struct cgroup *cgrp, struct cftype *cft, u64 val)
> +static int cfq_set_weight(struct cgroup *cgrp, struct cftype *cft, u64 val)
> {
> struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgrp);
> struct blkio_group *blkg;
> struct hlist_node *n;
>
> - if (val < BLKIO_WEIGHT_MIN || val > BLKIO_WEIGHT_MAX)
> + if (val < CFQ_WEIGHT_MIN || val > CFQ_WEIGHT_MAX)
> return -EINVAL;
>
> spin_lock_irq(&blkcg->lock);
> - blkcg->weight = (unsigned int)val;
> + blkcg->cfq_weight = (unsigned int)val;
>
> hlist_for_each_entry(blkg, n, &blkcg->blkg_list, blkcg_node) {
> - struct blkg_policy_data *pd = blkg->pd[BLKIO_POLICY_PROP];
> + struct cfq_group *cfqg = blkg_to_cfqg(blkg);
>
> - if (pd && !pd->conf.weight)
> - cfq_update_blkio_group_weight(blkg, blkcg->weight);
> + if (cfqg && !cfqg->dev_weight)
> + cfqg->new_weight = blkcg->cfq_weight;
> }
>
> spin_unlock_irq(&blkcg->lock);
> @@ -1480,14 +1473,14 @@ static int cfqg_print_avg_queue_size(struct cgroup *cgrp, struct cftype *cft,
> static struct cftype cfq_blkcg_files[] = {
> {
> .name = "weight_device",
> - .read_seq_string = blkcg_print_weight_device,
> - .write_string = blkcg_set_weight_device,
> + .read_seq_string = cfqg_print_weight_device,
> + .write_string = cfqg_set_weight_device,
> .max_write_len = 256,
> },
> {
> .name = "weight",
> - .read_seq_string = blkcg_print_weight,
> - .write_u64 = blkcg_set_weight,
> + .read_seq_string = cfq_print_weight,
> + .write_u64 = cfq_set_weight,
> },
> {
> .name = "time",
> @@ -3983,7 +3976,7 @@ static int cfq_init_queue(struct request_queue *q)
> return -ENOMEM;
> }
>
> - cfqd->root_group->weight = 2*BLKIO_WEIGHT_DEFAULT;
> + cfqd->root_group->weight = 2 * CFQ_WEIGHT_DEFAULT;
>
> /*
> * Not strictly needed (since RB_ROOT just clears the node and we
WARNING: multiple messages have this Message-ID (diff)
From: Tao Ma <tm@tao.ma>
To: Tejun Heo <tj@kernel.org>
Cc: axboe@kernel.dk, vgoyal@redhat.com, ctalbott@google.com,
rni@google.com, linux-kernel@vger.kernel.org,
cgroups@vger.kernel.org, containers@lists.linux-foundation.org
Subject: Re: [PATCH 18/21] blkcg: move blkio_group_conf->weight to cfq
Date: Tue, 03 Apr 2012 05:39:23 +0800 [thread overview]
Message-ID: <4F7A1C8B.3010402@tao.ma> (raw)
In-Reply-To: <1332975091-10950-19-git-send-email-tj@kernel.org>
Hi Tejun,
On 03/29/2012 06:51 AM, Tejun Heo wrote:
> blkio_group_conf->weight is owned by cfq and has no reason to be
> defined in blkcg core. Replace it with cfq_group->dev_weight and let
> conf setting functions directly set it. If dev_weight is zero, the
> cfqg doesn't have device specific weight configured.
>
> Also, rename BLKIO_WEIGHT_* constants to CFQ_WEIGHT_* and rename
> blkio_cgroup->weight to blkio_cgroup->cfq_weight. We eventually want
> per-policy storage in blkio_cgroup but just mark the ownership of the
> field for now.
I guess blkio->weight is a generic way of abstracting the weight between
different block cgroups. Yes, currently, only cfq uses it, but I am
trying to improve Shaohua's original fiops scheduler and add cgroup
support to it. So please leave it there so that future scheduler(if
other than the fiops scheduler) can use the framework.
Thanks
Tao
>
> Signed-off-by: Tejun Heo <tj@kernel.org>
> ---
> block/blk-cgroup.c | 4 +-
> block/blk-cgroup.h | 14 +++++----
> block/cfq-iosched.c | 77 +++++++++++++++++++++++---------------------------
> 3 files changed, 45 insertions(+), 50 deletions(-)
>
> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
> index 0b4b765..7688aef 100644
> --- a/block/blk-cgroup.c
> +++ b/block/blk-cgroup.c
> @@ -30,7 +30,7 @@ static LIST_HEAD(blkio_list);
> static DEFINE_MUTEX(all_q_mutex);
> static LIST_HEAD(all_q_list);
>
> -struct blkio_cgroup blkio_root_cgroup = { .weight = 2*BLKIO_WEIGHT_DEFAULT };
> +struct blkio_cgroup blkio_root_cgroup = { .cfq_weight = 2 * CFQ_WEIGHT_DEFAULT };
> EXPORT_SYMBOL_GPL(blkio_root_cgroup);
>
> static struct blkio_policy_type *blkio_policy[BLKIO_NR_POLICIES];
> @@ -611,7 +611,7 @@ static struct cgroup_subsys_state *blkiocg_create(struct cgroup *cgroup)
> if (!blkcg)
> return ERR_PTR(-ENOMEM);
>
> - blkcg->weight = BLKIO_WEIGHT_DEFAULT;
> + blkcg->cfq_weight = CFQ_WEIGHT_DEFAULT;
> blkcg->id = atomic64_inc_return(&id_seq); /* root is 0, start from 1 */
> done:
> spin_lock_init(&blkcg->lock);
> diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h
> index e368dd00..386db29 100644
> --- a/block/blk-cgroup.h
> +++ b/block/blk-cgroup.h
> @@ -29,6 +29,11 @@ enum blkio_policy_id {
>
> #ifdef CONFIG_BLK_CGROUP
>
> +/* CFQ specific, out here for blkcg->cfq_weight */
> +#define CFQ_WEIGHT_MIN 10
> +#define CFQ_WEIGHT_MAX 1000
> +#define CFQ_WEIGHT_DEFAULT 500
> +
> /* cft->private [un]packing for stat printing */
> #define BLKCG_STAT_PRIV(pol, off) (((unsigned)(pol) << 16) | (off))
> #define BLKCG_STAT_POL(prv) ((unsigned)(prv) >> 16)
> @@ -46,12 +51,14 @@ enum blkg_rwstat_type {
>
> struct blkio_cgroup {
> struct cgroup_subsys_state css;
> - unsigned int weight;
> spinlock_t lock;
> struct hlist_head blkg_list;
>
> /* for policies to test whether associated blkcg has changed */
> uint64_t id;
> +
> + /* TODO: per-policy storage in blkio_cgroup */
> + unsigned int cfq_weight; /* belongs to cfq */
> };
>
> struct blkg_stat {
> @@ -65,7 +72,6 @@ struct blkg_rwstat {
> };
>
> struct blkio_group_conf {
> - unsigned int weight;
> u64 iops[2];
> u64 bps[2];
> };
> @@ -355,10 +361,6 @@ static inline void blkg_put(struct blkio_group *blkg) { }
>
> #endif
>
> -#define BLKIO_WEIGHT_MIN 10
> -#define BLKIO_WEIGHT_MAX 1000
> -#define BLKIO_WEIGHT_DEFAULT 500
> -
> #ifdef CONFIG_BLK_CGROUP
> extern struct blkio_cgroup blkio_root_cgroup;
> extern struct blkio_cgroup *cgroup_to_blkio_cgroup(struct cgroup *cgroup);
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index a1f37df..adab10d 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -224,7 +224,7 @@ struct cfq_group {
> u64 vdisktime;
> unsigned int weight;
> unsigned int new_weight;
> - bool needs_update;
> + unsigned int dev_weight;
>
> /* number of cfqq currently on this group */
> int nr_cfqq;
> @@ -838,7 +838,7 @@ static inline u64 cfq_scale_slice(unsigned long delta, struct cfq_group *cfqg)
> {
> u64 d = delta << CFQ_SERVICE_SHIFT;
>
> - d = d * BLKIO_WEIGHT_DEFAULT;
> + d = d * CFQ_WEIGHT_DEFAULT;
> do_div(d, cfqg->weight);
> return d;
> }
> @@ -1165,9 +1165,9 @@ static void
> cfq_update_group_weight(struct cfq_group *cfqg)
> {
> BUG_ON(!RB_EMPTY_NODE(&cfqg->rb_node));
> - if (cfqg->needs_update) {
> + if (cfqg->new_weight) {
> cfqg->weight = cfqg->new_weight;
> - cfqg->needs_update = false;
> + cfqg->new_weight = 0;
> }
> }
>
> @@ -1325,21 +1325,12 @@ static void cfq_init_cfqg_base(struct cfq_group *cfqg)
> }
>
> #ifdef CONFIG_CFQ_GROUP_IOSCHED
> -static void cfq_update_blkio_group_weight(struct blkio_group *blkg,
> - unsigned int weight)
> -{
> - struct cfq_group *cfqg = blkg_to_cfqg(blkg);
> -
> - cfqg->new_weight = weight;
> - cfqg->needs_update = true;
> -}
> -
> static void cfq_init_blkio_group(struct blkio_group *blkg)
> {
> struct cfq_group *cfqg = blkg_to_cfqg(blkg);
>
> cfq_init_cfqg_base(cfqg);
> - cfqg->weight = blkg->blkcg->weight;
> + cfqg->weight = blkg->blkcg->cfq_weight;
> }
>
> /*
> @@ -1377,36 +1368,38 @@ static void cfq_link_cfqq_cfqg(struct cfq_queue *cfqq, struct cfq_group *cfqg)
> cfqg_get(cfqg);
> }
>
> -static u64 blkg_prfill_weight_device(struct seq_file *sf,
> +static u64 cfqg_prfill_weight_device(struct seq_file *sf,
> struct blkg_policy_data *pd, int off)
> {
> - if (!pd->conf.weight)
> + struct cfq_group *cfqg = (void *)pd->pdata;
> +
> + if (!cfqg->dev_weight)
> return 0;
> - return __blkg_prfill_u64(sf, pd, pd->conf.weight);
> + return __blkg_prfill_u64(sf, pd, cfqg->dev_weight);
> }
>
> -static int blkcg_print_weight_device(struct cgroup *cgrp, struct cftype *cft,
> - struct seq_file *sf)
> +static int cfqg_print_weight_device(struct cgroup *cgrp, struct cftype *cft,
> + struct seq_file *sf)
> {
> blkcg_print_blkgs(sf, cgroup_to_blkio_cgroup(cgrp),
> - blkg_prfill_weight_device, BLKIO_POLICY_PROP, 0,
> + cfqg_prfill_weight_device, BLKIO_POLICY_PROP, 0,
> false);
> return 0;
> }
>
> -static int blkcg_print_weight(struct cgroup *cgrp, struct cftype *cft,
> - struct seq_file *sf)
> +static int cfq_print_weight(struct cgroup *cgrp, struct cftype *cft,
> + struct seq_file *sf)
> {
> - seq_printf(sf, "%u\n", cgroup_to_blkio_cgroup(cgrp)->weight);
> + seq_printf(sf, "%u\n", cgroup_to_blkio_cgroup(cgrp)->cfq_weight);
> return 0;
> }
>
> -static int blkcg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> - const char *buf)
> +static int cfqg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> + const char *buf)
> {
> struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgrp);
> - struct blkg_policy_data *pd;
> struct blkg_conf_ctx ctx;
> + struct cfq_group *cfqg;
> int ret;
>
> ret = blkg_conf_prep(blkcg, buf, &ctx);
> @@ -1414,11 +1407,11 @@ static int blkcg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> return ret;
>
> ret = -EINVAL;
> - pd = ctx.blkg->pd[BLKIO_POLICY_PROP];
> - if (pd && (!ctx.v || (ctx.v >= BLKIO_WEIGHT_MIN &&
> - ctx.v <= BLKIO_WEIGHT_MAX))) {
> - pd->conf.weight = ctx.v;
> - cfq_update_blkio_group_weight(ctx.blkg, ctx.v ?: blkcg->weight);
> + cfqg = blkg_to_cfqg(ctx.blkg);
> + if (cfqg && (!ctx.v || (ctx.v >= CFQ_WEIGHT_MIN &&
> + ctx.v <= CFQ_WEIGHT_MAX))) {
> + cfqg->dev_weight = ctx.v;
> + cfqg->new_weight = cfqg->dev_weight ?: blkcg->cfq_weight;
> ret = 0;
> }
>
> @@ -1426,23 +1419,23 @@ static int blkcg_set_weight_device(struct cgroup *cgrp, struct cftype *cft,
> return ret;
> }
>
> -static int blkcg_set_weight(struct cgroup *cgrp, struct cftype *cft, u64 val)
> +static int cfq_set_weight(struct cgroup *cgrp, struct cftype *cft, u64 val)
> {
> struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgrp);
> struct blkio_group *blkg;
> struct hlist_node *n;
>
> - if (val < BLKIO_WEIGHT_MIN || val > BLKIO_WEIGHT_MAX)
> + if (val < CFQ_WEIGHT_MIN || val > CFQ_WEIGHT_MAX)
> return -EINVAL;
>
> spin_lock_irq(&blkcg->lock);
> - blkcg->weight = (unsigned int)val;
> + blkcg->cfq_weight = (unsigned int)val;
>
> hlist_for_each_entry(blkg, n, &blkcg->blkg_list, blkcg_node) {
> - struct blkg_policy_data *pd = blkg->pd[BLKIO_POLICY_PROP];
> + struct cfq_group *cfqg = blkg_to_cfqg(blkg);
>
> - if (pd && !pd->conf.weight)
> - cfq_update_blkio_group_weight(blkg, blkcg->weight);
> + if (cfqg && !cfqg->dev_weight)
> + cfqg->new_weight = blkcg->cfq_weight;
> }
>
> spin_unlock_irq(&blkcg->lock);
> @@ -1480,14 +1473,14 @@ static int cfqg_print_avg_queue_size(struct cgroup *cgrp, struct cftype *cft,
> static struct cftype cfq_blkcg_files[] = {
> {
> .name = "weight_device",
> - .read_seq_string = blkcg_print_weight_device,
> - .write_string = blkcg_set_weight_device,
> + .read_seq_string = cfqg_print_weight_device,
> + .write_string = cfqg_set_weight_device,
> .max_write_len = 256,
> },
> {
> .name = "weight",
> - .read_seq_string = blkcg_print_weight,
> - .write_u64 = blkcg_set_weight,
> + .read_seq_string = cfq_print_weight,
> + .write_u64 = cfq_set_weight,
> },
> {
> .name = "time",
> @@ -3983,7 +3976,7 @@ static int cfq_init_queue(struct request_queue *q)
> return -ENOMEM;
> }
>
> - cfqd->root_group->weight = 2*BLKIO_WEIGHT_DEFAULT;
> + cfqd->root_group->weight = 2 * CFQ_WEIGHT_DEFAULT;
>
> /*
> * Not strictly needed (since RB_ROOT just clears the node and we
next prev parent reply other threads:[~2012-04-02 21:39 UTC|newest]
Thread overview: 135+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-28 22:51 [PATCHSET] block: modularize blkcg config and stat file handling Tejun Heo
2012-03-28 22:51 ` Tejun Heo
[not found] ` <1332975091-10950-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-03-28 22:51 ` [PATCH 01/21] blkcg: remove unused @pol and @plid parameters Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 02/21] blkcg: BLKIO_STAT_CPU_SECTORS doesn't have subcounters Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 03/21] blkcg: introduce blkg_stat and blkg_rwstat Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 04/21] blkcg: restructure statistics printing Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 05/21] blkcg: drop blkiocg_file_write_u64() Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 06/21] blkcg: restructure configuration printing Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 07/21] blkcg: restructure blkio_group configruation setting Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 08/21] blkcg: blkg_conf_prep() Tejun Heo
2012-03-28 22:51 ` Tejun Heo
[not found] ` <1332975091-10950-9-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-03-28 22:53 ` Tejun Heo
2012-03-28 22:53 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 09/21] blkcg: export conf/stat helpers to prepare for reorganization Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 10/21] blkcg: implement blkio_policy_type->cftypes Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 11/21] blkcg: move conf/stat file handling code to policies Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 12/21] cfq: collapse cfq.h into cfq-iosched.c Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 13/21] blkcg: move statistics update code to policies Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 14/21] blkcg: cfq doesn't need per-cpu dispatch stats Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 15/21] blkcg: add blkio_policy_ops operations for exit and stat reset Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 16/21] blkcg: move blkio_group_stats to cfq-iosched.c Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 17/21] blkcg: move blkio_group_stats_cpu and friends to blk-throttle.c Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 18/21] blkcg: move blkio_group_conf->weight to cfq Tejun Heo
2012-03-28 22:51 ` Tejun Heo
[not found] ` <1332975091-10950-19-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-04-01 21:09 ` Vivek Goyal
2012-04-01 21:09 ` Vivek Goyal
[not found] ` <20120401210955.GE6116-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-01 21:22 ` Tejun Heo
2012-04-01 21:22 ` Tejun Heo
2012-04-01 21:22 ` Tejun Heo
2012-04-02 21:39 ` Tao Ma [this message]
2012-04-02 21:39 ` Tao Ma
[not found] ` <4F7A1C8B.3010402-d1IQDZat3X0@public.gmane.org>
2012-04-02 21:49 ` Tejun Heo
2012-04-02 21:49 ` Tejun Heo
2012-04-02 21:49 ` Tejun Heo
[not found] ` <20120402214938.GA19634-RcKxWJ4Cfj1J2suj2OqeGauc2jM2gXBXkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-04-02 22:03 ` Tao Ma
2012-04-02 22:03 ` Tao Ma
2012-04-02 22:03 ` Tao Ma
[not found] ` <4F7A2217.2030201-d1IQDZat3X0@public.gmane.org>
2012-04-02 22:17 ` Tejun Heo
2012-04-02 22:17 ` Tejun Heo
[not found] ` <20120402221702.GA21017-RcKxWJ4Cfj1J2suj2OqeGauc2jM2gXBXkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-04-02 22:20 ` Tao Ma
2012-04-02 22:20 ` Tao Ma
2012-04-02 22:20 ` Tao Ma
[not found] ` <4F7A261A.9000200-d1IQDZat3X0@public.gmane.org>
2012-04-02 22:25 ` Vivek Goyal
2012-04-02 22:25 ` Vivek Goyal
[not found] ` <20120402222504.GA2672-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-02 22:28 ` Tejun Heo
2012-04-02 22:28 ` Tejun Heo
2012-04-02 22:28 ` Tejun Heo
2012-04-02 22:41 ` Tao Ma
2012-04-02 22:41 ` Tao Ma
[not found] ` <4F7A2B21.5000907-d1IQDZat3X0@public.gmane.org>
2012-04-03 15:37 ` IOPS based scheduler (Was: Re: [PATCH 18/21] blkcg: move blkio_group_conf->weight to cfq) Vivek Goyal
2012-04-03 15:37 ` Vivek Goyal
[not found] ` <20120403153736.GI5913-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-03 16:36 ` Tao Ma
2012-04-03 16:36 ` Tao Ma
2012-04-03 16:36 ` Tao Ma
[not found] ` <4F7B2708.6080504-d1IQDZat3X0@public.gmane.org>
2012-04-03 16:50 ` Vivek Goyal
2012-04-03 16:50 ` Vivek Goyal
2012-04-03 16:50 ` Vivek Goyal
[not found] ` <20120403164959.GJ5913-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-03 17:26 ` Tao Ma
2012-04-03 17:26 ` Tao Ma
[not found] ` <4F7B32AE.7050900-d1IQDZat3X0@public.gmane.org>
2012-04-04 12:35 ` Shaohua Li
2012-04-04 12:35 ` Shaohua Li
[not found] ` <CANejiEU1qAsvogozY3MjZnpcrbYZO4CkRE8s73WGPc_R5LKV9g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-04 13:37 ` Vivek Goyal
2012-04-04 13:37 ` Vivek Goyal
[not found] ` <20120404133705.GB12676-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-04 14:52 ` Shaohua Li
2012-04-04 14:52 ` Shaohua Li
[not found] ` <CANejiEVD6nFVqX8Jf_hmRHg8YyBvPxbTVjgEif3mO1aa925KkQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-04 15:10 ` Vivek Goyal
2012-04-04 15:10 ` Vivek Goyal
2012-04-04 15:10 ` Vivek Goyal
[not found] ` <20120404151014.GD12676-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-04 16:06 ` Tao Ma
2012-04-04 16:06 ` Tao Ma
2012-04-04 16:06 ` Tao Ma
2012-04-04 16:45 ` Tao Ma
2012-04-04 16:45 ` Tao Ma
[not found] ` <4F7C7A91.8040707-d1IQDZat3X0@public.gmane.org>
2012-04-04 16:50 ` Vivek Goyal
2012-04-04 16:50 ` Vivek Goyal
[not found] ` <20120404165048.GF12676-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-04 17:17 ` Vivek Goyal
2012-04-04 17:17 ` Vivek Goyal
2012-04-04 17:17 ` Vivek Goyal
2012-04-04 17:18 ` Tao Ma
2012-04-04 17:18 ` Tao Ma
[not found] ` <4F7C824D.2050308-d1IQDZat3X0@public.gmane.org>
2012-04-04 17:27 ` Vivek Goyal
2012-04-04 17:27 ` Vivek Goyal
2012-04-04 18:22 ` Vivek Goyal
2012-04-04 18:22 ` Vivek Goyal
[not found] ` <20120404182238.GI12676-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-04 18:36 ` Tao Ma
2012-04-04 18:36 ` Tao Ma
2012-04-04 18:36 ` Tao Ma
2012-04-04 18:22 ` Vivek Goyal
2012-04-04 17:18 ` Tao Ma
2012-04-04 12:35 ` Shaohua Li
2012-04-04 13:31 ` Vivek Goyal
2012-04-04 13:31 ` Vivek Goyal
2012-04-03 17:26 ` Tao Ma
2012-04-03 15:37 ` Vivek Goyal
2012-04-02 22:41 ` [PATCH 18/21] blkcg: move blkio_group_conf->weight to cfq Tao Ma
2012-04-02 21:39 ` Tao Ma
2012-03-28 22:51 ` [PATCH 19/21] blkcg: move blkio_group_conf->iops and ->bps to blk-throttle Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 20/21] blkcg: pass around pd->pdata instead of pd itself in prfill functions Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-28 22:51 ` [PATCH 21/21] blkcg: drop BLKCG_STAT_{PRIV|POL|OFF} macros Tejun Heo
2012-03-28 22:51 ` Tejun Heo
2012-03-29 8:18 ` [PATCHSET] block: modularize blkcg config and stat file handling Jens Axboe
2012-03-29 8:18 ` Jens Axboe
[not found] ` <4F741AED.6090901-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2012-04-02 20:02 ` Tejun Heo
2012-04-02 20:02 ` Tejun Heo
[not found] ` <20120402200233.GB17175-RcKxWJ4Cfj1J2suj2OqeGauc2jM2gXBXkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-04-02 21:51 ` Jens Axboe
2012-04-02 21:51 ` Jens Axboe
[not found] ` <4F7A1F52.50706-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2012-04-02 22:33 ` Tejun Heo
2012-04-02 22:33 ` Tejun Heo
2012-04-02 22:33 ` Tejun Heo
2012-04-02 20:02 ` Tejun Heo
2012-04-01 19:38 ` Vivek Goyal
2012-04-01 19:38 ` Vivek Goyal
2012-04-01 19:38 ` Vivek Goyal
2012-04-01 21:42 ` Tejun Heo
2012-04-01 21:42 ` Tejun Heo
2012-04-01 21:42 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F7A1C8B.3010402@tao.ma \
--to=tm-d1iqdzat3x0@public.gmane.org \
--cc=axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=ctalbott-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rni-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.