Skip to content

Commit cf09a8e

Browse files
htejunaxboe
authored andcommitted
blkcg: pass @q and @blkcg into blkcg_pol_alloc_pd_fn()
Instead of @node, pass in @q and @blkcg so that the alloc function has more context. This doesn't cause any behavior change and will be used by io.weight implementation. Signed-off-by: Tejun Heo <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent da8c828 commit cf09a8e

File tree

5 files changed

+16
-10
lines changed

5 files changed

+16
-10
lines changed

block/bfq-cgroup.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,11 +501,12 @@ static void bfq_cpd_free(struct blkcg_policy_data *cpd)
501501
kfree(cpd_to_bfqgd(cpd));
502502
}
503503

504-
static struct blkg_policy_data *bfq_pd_alloc(gfp_t gfp, int node)
504+
static struct blkg_policy_data *bfq_pd_alloc(gfp_t gfp, struct request_queue *q,
505+
struct blkcg *blkcg)
505506
{
506507
struct bfq_group *bfqg;
507508

508-
bfqg = kzalloc_node(sizeof(*bfqg), gfp, node);
509+
bfqg = kzalloc_node(sizeof(*bfqg), gfp, q->node);
509510
if (!bfqg)
510511
return NULL;
511512

block/blk-cgroup.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ static struct blkcg_gq *blkg_alloc(struct blkcg *blkcg, struct request_queue *q,
175175
continue;
176176

177177
/* alloc per-policy data and attach it to blkg */
178-
pd = pol->pd_alloc_fn(gfp_mask, q->node);
178+
pd = pol->pd_alloc_fn(gfp_mask, q, blkcg);
179179
if (!pd)
180180
goto err_free;
181181

@@ -1346,7 +1346,7 @@ int blkcg_activate_policy(struct request_queue *q,
13461346
blk_mq_freeze_queue(q);
13471347
pd_prealloc:
13481348
if (!pd_prealloc) {
1349-
pd_prealloc = pol->pd_alloc_fn(GFP_KERNEL, q->node);
1349+
pd_prealloc = pol->pd_alloc_fn(GFP_KERNEL, q, &blkcg_root);
13501350
if (!pd_prealloc) {
13511351
ret = -ENOMEM;
13521352
goto out_bypass_end;
@@ -1362,7 +1362,7 @@ int blkcg_activate_policy(struct request_queue *q,
13621362
if (blkg->pd[pol->plid])
13631363
continue;
13641364

1365-
pd = pol->pd_alloc_fn(GFP_NOWAIT | __GFP_NOWARN, q->node);
1365+
pd = pol->pd_alloc_fn(GFP_NOWAIT | __GFP_NOWARN, q, &blkcg_root);
13661366
if (!pd)
13671367
swap(pd, pd_prealloc);
13681368
if (!pd) {

block/blk-iolatency.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -934,11 +934,13 @@ static size_t iolatency_pd_stat(struct blkg_policy_data *pd, char *buf,
934934
}
935935

936936

937-
static struct blkg_policy_data *iolatency_pd_alloc(gfp_t gfp, int node)
937+
static struct blkg_policy_data *iolatency_pd_alloc(gfp_t gfp,
938+
struct request_queue *q,
939+
struct blkcg *blkcg)
938940
{
939941
struct iolatency_grp *iolat;
940942

941-
iolat = kzalloc_node(sizeof(*iolat), gfp, node);
943+
iolat = kzalloc_node(sizeof(*iolat), gfp, q->node);
942944
if (!iolat)
943945
return NULL;
944946
iolat->stats = __alloc_percpu_gfp(sizeof(struct latency_stat),

block/blk-throttle.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,12 +478,14 @@ static void throtl_service_queue_init(struct throtl_service_queue *sq)
478478
timer_setup(&sq->pending_timer, throtl_pending_timer_fn, 0);
479479
}
480480

481-
static struct blkg_policy_data *throtl_pd_alloc(gfp_t gfp, int node)
481+
static struct blkg_policy_data *throtl_pd_alloc(gfp_t gfp,
482+
struct request_queue *q,
483+
struct blkcg *blkcg)
482484
{
483485
struct throtl_grp *tg;
484486
int rw;
485487

486-
tg = kzalloc_node(sizeof(*tg), gfp, node);
488+
tg = kzalloc_node(sizeof(*tg), gfp, q->node);
487489
if (!tg)
488490
return NULL;
489491

include/linux/blk-cgroup.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ typedef struct blkcg_policy_data *(blkcg_pol_alloc_cpd_fn)(gfp_t gfp);
149149
typedef void (blkcg_pol_init_cpd_fn)(struct blkcg_policy_data *cpd);
150150
typedef void (blkcg_pol_free_cpd_fn)(struct blkcg_policy_data *cpd);
151151
typedef void (blkcg_pol_bind_cpd_fn)(struct blkcg_policy_data *cpd);
152-
typedef struct blkg_policy_data *(blkcg_pol_alloc_pd_fn)(gfp_t gfp, int node);
152+
typedef struct blkg_policy_data *(blkcg_pol_alloc_pd_fn)(gfp_t gfp,
153+
struct request_queue *q, struct blkcg *blkcg);
153154
typedef void (blkcg_pol_init_pd_fn)(struct blkg_policy_data *pd);
154155
typedef void (blkcg_pol_online_pd_fn)(struct blkg_policy_data *pd);
155156
typedef void (blkcg_pol_offline_pd_fn)(struct blkg_policy_data *pd);

0 commit comments

Comments
 (0)