linux/block/blk-throttle.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * Interface for controlling IO bandwidth on a request queue
   4 *
   5 * Copyright (C) 2010 Vivek Goyal <vgoyal@redhat.com>
   6 */
   7
   8#include <linux/module.h>
   9#include <linux/slab.h>
  10#include <linux/blkdev.h>
  11#include <linux/bio.h>
  12#include <linux/blktrace_api.h>
  13#include <linux/blk-cgroup.h>
  14#include "blk.h"
  15#include "blk-cgroup-rwstat.h"
  16
  17/* Max dispatch from a group in 1 round */
  18#define THROTL_GRP_QUANTUM 8
  19
  20/* Total max dispatch from all groups in one round */
  21#define THROTL_QUANTUM 32
  22
  23/* Throttling is performed over a slice and after that slice is renewed */
  24#define DFL_THROTL_SLICE_HD (HZ / 10)
  25#define DFL_THROTL_SLICE_SSD (HZ / 50)
  26#define MAX_THROTL_SLICE (HZ)
  27#define MAX_IDLE_TIME (5L * 1000 * 1000) /* 5 s */
  28#define MIN_THROTL_BPS (320 * 1024)
  29#define MIN_THROTL_IOPS (10)
  30#define DFL_LATENCY_TARGET (-1L)
  31#define DFL_IDLE_THRESHOLD (0)
  32#define DFL_HD_BASELINE_LATENCY (4000L) /* 4ms */
  33#define LATENCY_FILTERED_SSD (0)
  34/*
  35 * For HD, very small latency comes from sequential IO. Such IO is helpless to
  36 * help determine if its IO is impacted by others, hence we ignore the IO
  37 */
  38#define LATENCY_FILTERED_HD (1000L) /* 1ms */
  39
  40static struct blkcg_policy blkcg_policy_throtl;
  41
  42/* A workqueue to queue throttle related work */
  43static struct workqueue_struct *kthrotld_workqueue;
  44
  45/*
  46 * To implement hierarchical throttling, throtl_grps form a tree and bios
  47 * are dispatched upwards level by level until they reach the top and get
  48 * issued.  When dispatching bios from the children and local group at each
  49 * level, if the bios are dispatched into a single bio_list, there's a risk
  50 * of a local or child group which can queue many bios at once filling up
  51 * the list starving others.
  52 *
  53 * To avoid such starvation, dispatched bios are queued separately
  54 * according to where they came from.  When they are again dispatched to
  55 * the parent, they're popped in round-robin order so that no single source
  56 * hogs the dispatch window.
  57 *
  58 * throtl_qnode is used to keep the queued bios separated by their sources.
  59 * Bios are queued to throtl_qnode which in turn is queued to
  60 * throtl_service_queue and then dispatched in round-robin order.
  61 *
  62 * It's also used to track the reference counts on blkg's.  A qnode always
  63 * belongs to a throtl_grp and gets queued on itself or the parent, so
  64 * incrementing the reference of the associated throtl_grp when a qnode is
  65 * queued and decrementing when dequeued is enough to keep the whole blkg
  66 * tree pinned while bios are in flight.
  67 */
  68struct throtl_qnode {
  69        struct list_head        node;           /* service_queue->queued[] */
  70        struct bio_list         bios;           /* queued bios */
  71        struct throtl_grp       *tg;            /* tg this qnode belongs to */
  72};
  73
  74struct throtl_service_queue {
  75        struct throtl_service_queue *parent_sq; /* the parent service_queue */
  76
  77        /*
  78         * Bios queued directly to this service_queue or dispatched from
  79         * children throtl_grp's.
  80         */
  81        struct list_head        queued[2];      /* throtl_qnode [READ/WRITE] */
  82        unsigned int            nr_queued[2];   /* number of queued bios */
  83
  84        /*
  85         * RB tree of active children throtl_grp's, which are sorted by
  86         * their ->disptime.
  87         */
  88        struct rb_root_cached   pending_tree;   /* RB tree of active tgs */
  89        unsigned int            nr_pending;     /* # queued in the tree */
  90        unsigned long           first_pending_disptime; /* disptime of the first tg */
  91        struct timer_list       pending_timer;  /* fires on first_pending_disptime */
  92};
  93
  94enum tg_state_flags {
  95        THROTL_TG_PENDING       = 1 << 0,       /* on parent's pending tree */
  96        THROTL_TG_WAS_EMPTY     = 1 << 1,       /* bio_lists[] became non-empty */
  97};
  98
  99#define rb_entry_tg(node)       rb_entry((node), struct throtl_grp, rb_node)
 100
 101enum {
 102        LIMIT_LOW,
 103        LIMIT_MAX,
 104        LIMIT_CNT,
 105};
 106
 107struct throtl_grp {
 108        /* must be the first member */
 109        struct blkg_policy_data pd;
 110
 111        /* active throtl group service_queue member */
 112        struct rb_node rb_node;
 113
 114        /* throtl_data this group belongs to */
 115        struct throtl_data *td;
 116
 117        /* this group's service queue */
 118        struct throtl_service_queue service_queue;
 119
 120        /*
 121         * qnode_on_self is used when bios are directly queued to this
 122         * throtl_grp so that local bios compete fairly with bios
 123         * dispatched from children.  qnode_on_parent is used when bios are
 124         * dispatched from this throtl_grp into its parent and will compete
 125         * with the sibling qnode_on_parents and the parent's
 126         * qnode_on_self.
 127         */
 128        struct throtl_qnode qnode_on_self[2];
 129        struct throtl_qnode qnode_on_parent[2];
 130
 131        /*
 132         * Dispatch time in jiffies. This is the estimated time when group
 133         * will unthrottle and is ready to dispatch more bio. It is used as
 134         * key to sort active groups in service tree.
 135         */
 136        unsigned long disptime;
 137
 138        unsigned int flags;
 139
 140        /* are there any throtl rules between this group and td? */
 141        bool has_rules[2];
 142
 143        /* internally used bytes per second rate limits */
 144        uint64_t bps[2][LIMIT_CNT];
 145        /* user configured bps limits */
 146        uint64_t bps_conf[2][LIMIT_CNT];
 147
 148        /* internally used IOPS limits */
 149        unsigned int iops[2][LIMIT_CNT];
 150        /* user configured IOPS limits */
 151        unsigned int iops_conf[2][LIMIT_CNT];
 152
 153        /* Number of bytes dispatched in current slice */
 154        uint64_t bytes_disp[2];
 155        /* Number of bio's dispatched in current slice */
 156        unsigned int io_disp[2];
 157
 158        unsigned long last_low_overflow_time[2];
 159
 160        uint64_t last_bytes_disp[2];
 161        unsigned int last_io_disp[2];
 162
 163        unsigned long last_check_time;
 164
 165        unsigned long latency_target; /* us */
 166        unsigned long latency_target_conf; /* us */
 167        /* When did we start a new slice */
 168        unsigned long slice_start[2];
 169        unsigned long slice_end[2];
 170
 171        unsigned long last_finish_time; /* ns / 1024 */
 172        unsigned long checked_last_finish_time; /* ns / 1024 */
 173        unsigned long avg_idletime; /* ns / 1024 */
 174        unsigned long idletime_threshold; /* us */
 175        unsigned long idletime_threshold_conf; /* us */
 176
 177        unsigned int bio_cnt; /* total bios */
 178        unsigned int bad_bio_cnt; /* bios exceeding latency threshold */
 179        unsigned long bio_cnt_reset_time;
 180
 181        atomic_t io_split_cnt[2];
 182        atomic_t last_io_split_cnt[2];
 183
 184        struct blkg_rwstat stat_bytes;
 185        struct blkg_rwstat stat_ios;
 186};
 187
 188/* We measure latency for request size from <= 4k to >= 1M */
 189#define LATENCY_BUCKET_SIZE 9
 190
 191struct latency_bucket {
 192        unsigned long total_latency; /* ns / 1024 */
 193        int samples;
 194};
 195
 196struct avg_latency_bucket {
 197        unsigned long latency; /* ns / 1024 */
 198        bool valid;
 199};
 200
 201struct throtl_data
 202{
 203        /* service tree for active throtl groups */
 204        struct throtl_service_queue service_queue;
 205
 206        struct request_queue *queue;
 207
 208        /* Total Number of queued bios on READ and WRITE lists */
 209        unsigned int nr_queued[2];
 210
 211        unsigned int throtl_slice;
 212
 213        /* Work for dispatching throttled bios */
 214        struct work_struct dispatch_work;
 215        unsigned int limit_index;
 216        bool limit_valid[LIMIT_CNT];
 217
 218        unsigned long low_upgrade_time;
 219        unsigned long low_downgrade_time;
 220
 221        unsigned int scale;
 222
 223        struct latency_bucket tmp_buckets[2][LATENCY_BUCKET_SIZE];
 224        struct avg_latency_bucket avg_buckets[2][LATENCY_BUCKET_SIZE];
 225        struct latency_bucket __percpu *latency_buckets[2];
 226        unsigned long last_calculate_time;
 227        unsigned long filtered_latency;
 228
 229        bool track_bio_latency;
 230};
 231
 232static void throtl_pending_timer_fn(struct timer_list *t);
 233
 234static inline struct throtl_grp *pd_to_tg(struct blkg_policy_data *pd)
 235{
 236        return pd ? container_of(pd, struct throtl_grp, pd) : NULL;
 237}
 238
 239static inline struct throtl_grp *blkg_to_tg(struct blkcg_gq *blkg)
 240{
 241        return pd_to_tg(blkg_to_pd(blkg, &blkcg_policy_throtl));
 242}
 243
 244static inline struct blkcg_gq *tg_to_blkg(struct throtl_grp *tg)
 245{
 246        return pd_to_blkg(&tg->pd);
 247}
 248
 249/**
 250 * sq_to_tg - return the throl_grp the specified service queue belongs to
 251 * @sq: the throtl_service_queue of interest
 252 *
 253 * Return the throtl_grp @sq belongs to.  If @sq is the top-level one
 254 * embedded in throtl_data, %NULL is returned.
 255 */
 256static struct throtl_grp *sq_to_tg(struct throtl_service_queue *sq)
 257{
 258        if (sq && sq->parent_sq)
 259                return container_of(sq, struct throtl_grp, service_queue);
 260        else
 261                return NULL;
 262}
 263
 264/**
 265 * sq_to_td - return throtl_data the specified service queue belongs to
 266 * @sq: the throtl_service_queue of interest
 267 *
 268 * A service_queue can be embedded in either a throtl_grp or throtl_data.
 269 * Determine the associated throtl_data accordingly and return it.
 270 */
 271static struct throtl_data *sq_to_td(struct throtl_service_queue *sq)
 272{
 273        struct throtl_grp *tg = sq_to_tg(sq);
 274
 275        if (tg)
 276                return tg->td;
 277        else
 278                return container_of(sq, struct throtl_data, service_queue);
 279}
 280
 281/*
 282 * cgroup's limit in LIMIT_MAX is scaled if low limit is set. This scale is to
 283 * make the IO dispatch more smooth.
 284 * Scale up: linearly scale up according to lapsed time since upgrade. For
 285 *           every throtl_slice, the limit scales up 1/2 .low limit till the
 286 *           limit hits .max limit
 287 * Scale down: exponentially scale down if a cgroup doesn't hit its .low limit
 288 */
 289static uint64_t throtl_adjusted_limit(uint64_t low, struct throtl_data *td)
 290{
 291        /* arbitrary value to avoid too big scale */
 292        if (td->scale < 4096 && time_after_eq(jiffies,
 293            td->low_upgrade_time + td->scale * td->throtl_slice))
 294                td->scale = (jiffies - td->low_upgrade_time) / td->throtl_slice;
 295
 296        return low + (low >> 1) * td->scale;
 297}
 298
 299static uint64_t tg_bps_limit(struct throtl_grp *tg, int rw)
 300{
 301        struct blkcg_gq *blkg = tg_to_blkg(tg);
 302        struct throtl_data *td;
 303        uint64_t ret;
 304
 305        if (cgroup_subsys_on_dfl(io_cgrp_subsys) && !blkg->parent)
 306                return U64_MAX;
 307
 308        td = tg->td;
 309        ret = tg->bps[rw][td->limit_index];
 310        if (ret == 0 && td->limit_index == LIMIT_LOW) {
 311                /* intermediate node or iops isn't 0 */
 312                if (!list_empty(&blkg->blkcg->css.children) ||
 313                    tg->iops[rw][td->limit_index])
 314                        return U64_MAX;
 315                else
 316                        return MIN_THROTL_BPS;
 317        }
 318
 319        if (td->limit_index == LIMIT_MAX && tg->bps[rw][LIMIT_LOW] &&
 320            tg->bps[rw][LIMIT_LOW] != tg->bps[rw][LIMIT_MAX]) {
 321                uint64_t adjusted;
 322
 323                adjusted = throtl_adjusted_limit(tg->bps[rw][LIMIT_LOW], td);
 324                ret = min(tg->bps[rw][LIMIT_MAX], adjusted);
 325        }
 326        return ret;
 327}
 328
 329static unsigned int tg_iops_limit(struct throtl_grp *tg, int rw)
 330{
 331        struct blkcg_gq *blkg = tg_to_blkg(tg);
 332        struct throtl_data *td;
 333        unsigned int ret;
 334
 335        if (cgroup_subsys_on_dfl(io_cgrp_subsys) && !blkg->parent)
 336                return UINT_MAX;
 337
 338        td = tg->td;
 339        ret = tg->iops[rw][td->limit_index];
 340        if (ret == 0 && tg->td->limit_index == LIMIT_LOW) {
 341                /* intermediate node or bps isn't 0 */
 342                if (!list_empty(&blkg->blkcg->css.children) ||
 343                    tg->bps[rw][td->limit_index])
 344                        return UINT_MAX;
 345                else
 346                        return MIN_THROTL_IOPS;
 347        }
 348
 349        if (td->limit_index == LIMIT_MAX && tg->iops[rw][LIMIT_LOW] &&
 350            tg->iops[rw][LIMIT_LOW] != tg->iops[rw][LIMIT_MAX]) {
 351                uint64_t adjusted;
 352
 353                adjusted = throtl_adjusted_limit(tg->iops[rw][LIMIT_LOW], td);
 354                if (adjusted > UINT_MAX)
 355                        adjusted = UINT_MAX;
 356                ret = min_t(unsigned int, tg->iops[rw][LIMIT_MAX], adjusted);
 357        }
 358        return ret;
 359}
 360
 361#define request_bucket_index(sectors) \
 362        clamp_t(int, order_base_2(sectors) - 3, 0, LATENCY_BUCKET_SIZE - 1)
 363
 364/**
 365 * throtl_log - log debug message via blktrace
 366 * @sq: the service_queue being reported
 367 * @fmt: printf format string
 368 * @args: printf args
 369 *
 370 * The messages are prefixed with "throtl BLKG_NAME" if @sq belongs to a
 371 * throtl_grp; otherwise, just "throtl".
 372 */
 373#define throtl_log(sq, fmt, args...)    do {                            \
 374        struct throtl_grp *__tg = sq_to_tg((sq));                       \
 375        struct throtl_data *__td = sq_to_td((sq));                      \
 376                                                                        \
 377        (void)__td;                                                     \
 378        if (likely(!blk_trace_note_message_enabled(__td->queue)))       \
 379                break;                                                  \
 380        if ((__tg)) {                                                   \
 381                blk_add_cgroup_trace_msg(__td->queue,                   \
 382                        tg_to_blkg(__tg)->blkcg, "throtl " fmt, ##args);\
 383        } else {                                                        \
 384                blk_add_trace_msg(__td->queue, "throtl " fmt, ##args);  \
 385        }                                                               \
 386} while (0)
 387
 388static inline unsigned int throtl_bio_data_size(struct bio *bio)
 389{
 390        /* assume it's one sector */
 391        if (unlikely(bio_op(bio) == REQ_OP_DISCARD))
 392                return 512;
 393        return bio->bi_iter.bi_size;
 394}
 395
 396static void throtl_qnode_init(struct throtl_qnode *qn, struct throtl_grp *tg)
 397{
 398        INIT_LIST_HEAD(&qn->node);
 399        bio_list_init(&qn->bios);
 400        qn->tg = tg;
 401}
 402
 403/**
 404 * throtl_qnode_add_bio - add a bio to a throtl_qnode and activate it
 405 * @bio: bio being added
 406 * @qn: qnode to add bio to
 407 * @queued: the service_queue->queued[] list @qn belongs to
 408 *
 409 * Add @bio to @qn and put @qn on @queued if it's not already on.
 410 * @qn->tg's reference count is bumped when @qn is activated.  See the
 411 * comment on top of throtl_qnode definition for details.
 412 */
 413static void throtl_qnode_add_bio(struct bio *bio, struct throtl_qnode *qn,
 414                                 struct list_head *queued)
 415{
 416        bio_list_add(&qn->bios, bio);
 417        if (list_empty(&qn->node)) {
 418                list_add_tail(&qn->node, queued);
 419                blkg_get(tg_to_blkg(qn->tg));
 420        }
 421}
 422
 423/**
 424 * throtl_peek_queued - peek the first bio on a qnode list
 425 * @queued: the qnode list to peek
 426 */
 427static struct bio *throtl_peek_queued(struct list_head *queued)
 428{
 429        struct throtl_qnode *qn;
 430        struct bio *bio;
 431
 432        if (list_empty(queued))
 433                return NULL;
 434
 435        qn = list_first_entry(queued, struct throtl_qnode, node);
 436        bio = bio_list_peek(&qn->bios);
 437        WARN_ON_ONCE(!bio);
 438        return bio;
 439}
 440
 441/**
 442 * throtl_pop_queued - pop the first bio form a qnode list
 443 * @queued: the qnode list to pop a bio from
 444 * @tg_to_put: optional out argument for throtl_grp to put
 445 *
 446 * Pop the first bio from the qnode list @queued.  After popping, the first
 447 * qnode is removed from @queued if empty or moved to the end of @queued so
 448 * that the popping order is round-robin.
 449 *
 450 * When the first qnode is removed, its associated throtl_grp should be put
 451 * too.  If @tg_to_put is NULL, this function automatically puts it;
 452 * otherwise, *@tg_to_put is set to the throtl_grp to put and the caller is
 453 * responsible for putting it.
 454 */
 455static struct bio *throtl_pop_queued(struct list_head *queued,
 456                                     struct throtl_grp **tg_to_put)
 457{
 458        struct throtl_qnode *qn;
 459        struct bio *bio;
 460
 461        if (list_empty(queued))
 462                return NULL;
 463
 464        qn = list_first_entry(queued, struct throtl_qnode, node);
 465        bio = bio_list_pop(&qn->bios);
 466        WARN_ON_ONCE(!bio);
 467
 468        if (bio_list_empty(&qn->bios)) {
 469                list_del_init(&qn->node);
 470                if (tg_to_put)
 471                        *tg_to_put = qn->tg;
 472                else
 473                        blkg_put(tg_to_blkg(qn->tg));
 474        } else {
 475                list_move_tail(&qn->node, queued);
 476        }
 477
 478        return bio;
 479}
 480
 481/* init a service_queue, assumes the caller zeroed it */
 482static void throtl_service_queue_init(struct throtl_service_queue *sq)
 483{
 484        INIT_LIST_HEAD(&sq->queued[0]);
 485        INIT_LIST_HEAD(&sq->queued[1]);
 486        sq->pending_tree = RB_ROOT_CACHED;
 487        timer_setup(&sq->pending_timer, throtl_pending_timer_fn, 0);
 488}
 489
 490static struct blkg_policy_data *throtl_pd_alloc(gfp_t gfp,
 491                                                struct request_queue *q,
 492                                                struct blkcg *blkcg)
 493{
 494        struct throtl_grp *tg;
 495        int rw;
 496
 497        tg = kzalloc_node(sizeof(*tg), gfp, q->node);
 498        if (!tg)
 499                return NULL;
 500
 501        if (blkg_rwstat_init(&tg->stat_bytes, gfp))
 502                goto err_free_tg;
 503
 504        if (blkg_rwstat_init(&tg->stat_ios, gfp))
 505                goto err_exit_stat_bytes;
 506
 507        throtl_service_queue_init(&tg->service_queue);
 508
 509        for (rw = READ; rw <= WRITE; rw++) {
 510                throtl_qnode_init(&tg->qnode_on_self[rw], tg);
 511                throtl_qnode_init(&tg->qnode_on_parent[rw], tg);
 512        }
 513
 514        RB_CLEAR_NODE(&tg->rb_node);
 515        tg->bps[READ][LIMIT_MAX] = U64_MAX;
 516        tg->bps[WRITE][LIMIT_MAX] = U64_MAX;
 517        tg->iops[READ][LIMIT_MAX] = UINT_MAX;
 518        tg->iops[WRITE][LIMIT_MAX] = UINT_MAX;
 519        tg->bps_conf[READ][LIMIT_MAX] = U64_MAX;
 520        tg->bps_conf[WRITE][LIMIT_MAX] = U64_MAX;
 521        tg->iops_conf[READ][LIMIT_MAX] = UINT_MAX;
 522        tg->iops_conf[WRITE][LIMIT_MAX] = UINT_MAX;
 523        /* LIMIT_LOW will have default value 0 */
 524
 525        tg->latency_target = DFL_LATENCY_TARGET;
 526        tg->latency_target_conf = DFL_LATENCY_TARGET;
 527        tg->idletime_threshold = DFL_IDLE_THRESHOLD;
 528        tg->idletime_threshold_conf = DFL_IDLE_THRESHOLD;
 529
 530        return &tg->pd;
 531
 532err_exit_stat_bytes:
 533        blkg_rwstat_exit(&tg->stat_bytes);
 534err_free_tg:
 535        kfree(tg);
 536        return NULL;
 537}
 538
 539static void throtl_pd_init(struct blkg_policy_data *pd)
 540{
 541        struct throtl_grp *tg = pd_to_tg(pd);
 542        struct blkcg_gq *blkg = tg_to_blkg(tg);
 543        struct throtl_data *td = blkg->q->td;
 544        struct throtl_service_queue *sq = &tg->service_queue;
 545
 546        /*
 547         * If on the default hierarchy, we switch to properly hierarchical
 548         * behavior where limits on a given throtl_grp are applied to the
 549         * whole subtree rather than just the group itself.  e.g. If 16M
 550         * read_bps limit is set on the root group, the whole system can't
 551         * exceed 16M for the device.
 552         *
 553         * If not on the default hierarchy, the broken flat hierarchy
 554         * behavior is retained where all throtl_grps are treated as if
 555         * they're all separate root groups right below throtl_data.
 556         * Limits of a group don't interact with limits of other groups
 557         * regardless of the position of the group in the hierarchy.
 558         */
 559        sq->parent_sq = &td->service_queue;
 560        if (cgroup_subsys_on_dfl(io_cgrp_subsys) && blkg->parent)
 561                sq->parent_sq = &blkg_to_tg(blkg->parent)->service_queue;
 562        tg->td = td;
 563}
 564
 565/*
 566 * Set has_rules[] if @tg or any of its parents have limits configured.
 567 * This doesn't require walking up to the top of the hierarchy as the
 568 * parent's has_rules[] is guaranteed to be correct.
 569 */
 570static void tg_update_has_rules(struct throtl_grp *tg)
 571{
 572        struct throtl_grp *parent_tg = sq_to_tg(tg->service_queue.parent_sq);
 573        struct throtl_data *td = tg->td;
 574        int rw;
 575
 576        for (rw = READ; rw <= WRITE; rw++)
 577                tg->has_rules[rw] = (parent_tg && parent_tg->has_rules[rw]) ||
 578                        (td->limit_valid[td->limit_index] &&
 579                         (tg_bps_limit(tg, rw) != U64_MAX ||
 580                          tg_iops_limit(tg, rw) != UINT_MAX));
 581}
 582
 583static void throtl_pd_online(struct blkg_policy_data *pd)
 584{
 585        struct throtl_grp *tg = pd_to_tg(pd);
 586        /*
 587         * We don't want new groups to escape the limits of its ancestors.
 588         * Update has_rules[] after a new group is brought online.
 589         */
 590        tg_update_has_rules(tg);
 591}
 592
 593#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
 594static void blk_throtl_update_limit_valid(struct throtl_data *td)
 595{
 596        struct cgroup_subsys_state *pos_css;
 597        struct blkcg_gq *blkg;
 598        bool low_valid = false;
 599
 600        rcu_read_lock();
 601        blkg_for_each_descendant_post(blkg, pos_css, td->queue->root_blkg) {
 602                struct throtl_grp *tg = blkg_to_tg(blkg);
 603
 604                if (tg->bps[READ][LIMIT_LOW] || tg->bps[WRITE][LIMIT_LOW] ||
 605                    tg->iops[READ][LIMIT_LOW] || tg->iops[WRITE][LIMIT_LOW]) {
 606                        low_valid = true;
 607                        break;
 608                }
 609        }
 610        rcu_read_unlock();
 611
 612        td->limit_valid[LIMIT_LOW] = low_valid;
 613}
 614#else
 615static inline void blk_throtl_update_limit_valid(struct throtl_data *td)
 616{
 617}
 618#endif
 619
 620static void throtl_upgrade_state(struct throtl_data *td);
 621static void throtl_pd_offline(struct blkg_policy_data *pd)
 622{
 623        struct throtl_grp *tg = pd_to_tg(pd);
 624
 625        tg->bps[READ][LIMIT_LOW] = 0;
 626        tg->bps[WRITE][LIMIT_LOW] = 0;
 627        tg->iops[READ][LIMIT_LOW] = 0;
 628        tg->iops[WRITE][LIMIT_LOW] = 0;
 629
 630        blk_throtl_update_limit_valid(tg->td);
 631
 632        if (!tg->td->limit_valid[tg->td->limit_index])
 633                throtl_upgrade_state(tg->td);
 634}
 635
 636static void throtl_pd_free(struct blkg_policy_data *pd)
 637{
 638        struct throtl_grp *tg = pd_to_tg(pd);
 639
 640        del_timer_sync(&tg->service_queue.pending_timer);
 641        blkg_rwstat_exit(&tg->stat_bytes);
 642        blkg_rwstat_exit(&tg->stat_ios);
 643        kfree(tg);
 644}
 645
 646static struct throtl_grp *
 647throtl_rb_first(struct throtl_service_queue *parent_sq)
 648{
 649        struct rb_node *n;
 650
 651        n = rb_first_cached(&parent_sq->pending_tree);
 652        WARN_ON_ONCE(!n);
 653        if (!n)
 654                return NULL;
 655        return rb_entry_tg(n);
 656}
 657
 658static void throtl_rb_erase(struct rb_node *n,
 659                            struct throtl_service_queue *parent_sq)
 660{
 661        rb_erase_cached(n, &parent_sq->pending_tree);
 662        RB_CLEAR_NODE(n);
 663        --parent_sq->nr_pending;
 664}
 665
 666static void update_min_dispatch_time(struct throtl_service_queue *parent_sq)
 667{
 668        struct throtl_grp *tg;
 669
 670        tg = throtl_rb_first(parent_sq);
 671        if (!tg)
 672                return;
 673
 674        parent_sq->first_pending_disptime = tg->disptime;
 675}
 676
 677static void tg_service_queue_add(struct throtl_grp *tg)
 678{
 679        struct throtl_service_queue *parent_sq = tg->service_queue.parent_sq;
 680        struct rb_node **node = &parent_sq->pending_tree.rb_root.rb_node;
 681        struct rb_node *parent = NULL;
 682        struct throtl_grp *__tg;
 683        unsigned long key = tg->disptime;
 684        bool leftmost = true;
 685
 686        while (*node != NULL) {
 687                parent = *node;
 688                __tg = rb_entry_tg(parent);
 689
 690                if (time_before(key, __tg->disptime))
 691                        node = &parent->rb_left;
 692                else {
 693                        node = &parent->rb_right;
 694                        leftmost = false;
 695                }
 696        }
 697
 698        rb_link_node(&tg->rb_node, parent, node);
 699        rb_insert_color_cached(&tg->rb_node, &parent_sq->pending_tree,
 700                               leftmost);
 701}
 702
 703static void throtl_enqueue_tg(struct throtl_grp *tg)
 704{
 705        if (!(tg->flags & THROTL_TG_PENDING)) {
 706                tg_service_queue_add(tg);
 707                tg->flags |= THROTL_TG_PENDING;
 708                tg->service_queue.parent_sq->nr_pending++;
 709        }
 710}
 711
 712static void throtl_dequeue_tg(struct throtl_grp *tg)
 713{
 714        if (tg->flags & THROTL_TG_PENDING) {
 715                throtl_rb_erase(&tg->rb_node, tg->service_queue.parent_sq);
 716                tg->flags &= ~THROTL_TG_PENDING;
 717        }
 718}
 719
 720/* Call with queue lock held */
 721static void throtl_schedule_pending_timer(struct throtl_service_queue *sq,
 722                                          unsigned long expires)
 723{
 724        unsigned long max_expire = jiffies + 8 * sq_to_td(sq)->throtl_slice;
 725
 726        /*
 727         * Since we are adjusting the throttle limit dynamically, the sleep
 728         * time calculated according to previous limit might be invalid. It's
 729         * possible the cgroup sleep time is very long and no other cgroups
 730         * have IO running so notify the limit changes. Make sure the cgroup
 731         * doesn't sleep too long to avoid the missed notification.
 732         */
 733        if (time_after(expires, max_expire))
 734                expires = max_expire;
 735        mod_timer(&sq->pending_timer, expires);
 736        throtl_log(sq, "schedule timer. delay=%lu jiffies=%lu",
 737                   expires - jiffies, jiffies);
 738}
 739
 740/**
 741 * throtl_schedule_next_dispatch - schedule the next dispatch cycle
 742 * @sq: the service_queue to schedule dispatch for
 743 * @force: force scheduling
 744 *
 745 * Arm @sq->pending_timer so that the next dispatch cycle starts on the
 746 * dispatch time of the first pending child.  Returns %true if either timer
 747 * is armed or there's no pending child left.  %false if the current
 748 * dispatch window is still open and the caller should continue
 749 * dispatching.
 750 *
 751 * If @force is %true, the dispatch timer is always scheduled and this
 752 * function is guaranteed to return %true.  This is to be used when the
 753 * caller can't dispatch itself and needs to invoke pending_timer
 754 * unconditionally.  Note that forced scheduling is likely to induce short
 755 * delay before dispatch starts even if @sq->first_pending_disptime is not
 756 * in the future and thus shouldn't be used in hot paths.
 757 */
 758static bool throtl_schedule_next_dispatch(struct throtl_service_queue *sq,
 759                                          bool force)
 760{
 761        /* any pending children left? */
 762        if (!sq->nr_pending)
 763                return true;
 764
 765        update_min_dispatch_time(sq);
 766
 767        /* is the next dispatch time in the future? */
 768        if (force || time_after(sq->first_pending_disptime, jiffies)) {
 769                throtl_schedule_pending_timer(sq, sq->first_pending_disptime);
 770                return true;
 771        }
 772
 773        /* tell the caller to continue dispatching */
 774        return false;
 775}
 776
 777static inline void throtl_start_new_slice_with_credit(struct throtl_grp *tg,
 778                bool rw, unsigned long start)
 779{
 780        tg->bytes_disp[rw] = 0;
 781        tg->io_disp[rw] = 0;
 782
 783        atomic_set(&tg->io_split_cnt[rw], 0);
 784
 785        /*
 786         * Previous slice has expired. We must have trimmed it after last
 787         * bio dispatch. That means since start of last slice, we never used
 788         * that bandwidth. Do try to make use of that bandwidth while giving
 789         * credit.
 790         */
 791        if (time_after_eq(start, tg->slice_start[rw]))
 792                tg->slice_start[rw] = start;
 793
 794        tg->slice_end[rw] = jiffies + tg->td->throtl_slice;
 795        throtl_log(&tg->service_queue,
 796                   "[%c] new slice with credit start=%lu end=%lu jiffies=%lu",
 797                   rw == READ ? 'R' : 'W', tg->slice_start[rw],
 798                   tg->slice_end[rw], jiffies);
 799}
 800
 801static inline void throtl_start_new_slice(struct throtl_grp *tg, bool rw)
 802{
 803        tg->bytes_disp[rw] = 0;
 804        tg->io_disp[rw] = 0;
 805        tg->slice_start[rw] = jiffies;
 806        tg->slice_end[rw] = jiffies + tg->td->throtl_slice;
 807
 808        atomic_set(&tg->io_split_cnt[rw], 0);
 809
 810        throtl_log(&tg->service_queue,
 811                   "[%c] new slice start=%lu end=%lu jiffies=%lu",
 812                   rw == READ ? 'R' : 'W', tg->slice_start[rw],
 813                   tg->slice_end[rw], jiffies);
 814}
 815
 816static inline void throtl_set_slice_end(struct throtl_grp *tg, bool rw,
 817                                        unsigned long jiffy_end)
 818{
 819        tg->slice_end[rw] = roundup(jiffy_end, tg->td->throtl_slice);
 820}
 821
 822static inline void throtl_extend_slice(struct throtl_grp *tg, bool rw,
 823                                       unsigned long jiffy_end)
 824{
 825        throtl_set_slice_end(tg, rw, jiffy_end);
 826        throtl_log(&tg->service_queue,
 827                   "[%c] extend slice start=%lu end=%lu jiffies=%lu",
 828                   rw == READ ? 'R' : 'W', tg->slice_start[rw],
 829                   tg->slice_end[rw], jiffies);
 830}
 831
 832/* Determine if previously allocated or extended slice is complete or not */
 833static bool throtl_slice_used(struct throtl_grp *tg, bool rw)
 834{
 835        if (time_in_range(jiffies, tg->slice_start[rw], tg->slice_end[rw]))
 836                return false;
 837
 838        return true;
 839}
 840
 841/* Trim the used slices and adjust slice start accordingly */
 842static inline void throtl_trim_slice(struct throtl_grp *tg, bool rw)
 843{
 844        unsigned long nr_slices, time_elapsed, io_trim;
 845        u64 bytes_trim, tmp;
 846
 847        BUG_ON(time_before(tg->slice_end[rw], tg->slice_start[rw]));
 848
 849        /*
 850         * If bps are unlimited (-1), then time slice don't get
 851         * renewed. Don't try to trim the slice if slice is used. A new
 852         * slice will start when appropriate.
 853         */
 854        if (throtl_slice_used(tg, rw))
 855                return;
 856
 857        /*
 858         * A bio has been dispatched. Also adjust slice_end. It might happen
 859         * that initially cgroup limit was very low resulting in high
 860         * slice_end, but later limit was bumped up and bio was dispatched
 861         * sooner, then we need to reduce slice_end. A high bogus slice_end
 862         * is bad because it does not allow new slice to start.
 863         */
 864
 865        throtl_set_slice_end(tg, rw, jiffies + tg->td->throtl_slice);
 866
 867        time_elapsed = jiffies - tg->slice_start[rw];
 868
 869        nr_slices = time_elapsed / tg->td->throtl_slice;
 870
 871        if (!nr_slices)
 872                return;
 873        tmp = tg_bps_limit(tg, rw) * tg->td->throtl_slice * nr_slices;
 874        do_div(tmp, HZ);
 875        bytes_trim = tmp;
 876
 877        io_trim = (tg_iops_limit(tg, rw) * tg->td->throtl_slice * nr_slices) /
 878                HZ;
 879
 880        if (!bytes_trim && !io_trim)
 881                return;
 882
 883        if (tg->bytes_disp[rw] >= bytes_trim)
 884                tg->bytes_disp[rw] -= bytes_trim;
 885        else
 886                tg->bytes_disp[rw] = 0;
 887
 888        if (tg->io_disp[rw] >= io_trim)
 889                tg->io_disp[rw] -= io_trim;
 890        else
 891                tg->io_disp[rw] = 0;
 892
 893        tg->slice_start[rw] += nr_slices * tg->td->throtl_slice;
 894
 895        throtl_log(&tg->service_queue,
 896                   "[%c] trim slice nr=%lu bytes=%llu io=%lu start=%lu end=%lu jiffies=%lu",
 897                   rw == READ ? 'R' : 'W', nr_slices, bytes_trim, io_trim,
 898                   tg->slice_start[rw], tg->slice_end[rw], jiffies);
 899}
 900
 901static bool tg_with_in_iops_limit(struct throtl_grp *tg, struct bio *bio,
 902                                  u32 iops_limit, unsigned long *wait)
 903{
 904        bool rw = bio_data_dir(bio);
 905        unsigned int io_allowed;
 906        unsigned long jiffy_elapsed, jiffy_wait, jiffy_elapsed_rnd;
 907        u64 tmp;
 908
 909        if (iops_limit == UINT_MAX) {
 910                if (wait)
 911                        *wait = 0;
 912                return true;
 913        }
 914
 915        jiffy_elapsed = jiffies - tg->slice_start[rw];
 916
 917        /* Round up to the next throttle slice, wait time must be nonzero */
 918        jiffy_elapsed_rnd = roundup(jiffy_elapsed + 1, tg->td->throtl_slice);
 919
 920        /*
 921         * jiffy_elapsed_rnd should not be a big value as minimum iops can be
 922         * 1 then at max jiffy elapsed should be equivalent of 1 second as we
 923         * will allow dispatch after 1 second and after that slice should
 924         * have been trimmed.
 925         */
 926
 927        tmp = (u64)iops_limit * jiffy_elapsed_rnd;
 928        do_div(tmp, HZ);
 929
 930        if (tmp > UINT_MAX)
 931                io_allowed = UINT_MAX;
 932        else
 933                io_allowed = tmp;
 934
 935        if (tg->io_disp[rw] + 1 <= io_allowed) {
 936                if (wait)
 937                        *wait = 0;
 938                return true;
 939        }
 940
 941        /* Calc approx time to dispatch */
 942        jiffy_wait = jiffy_elapsed_rnd - jiffy_elapsed;
 943
 944        if (wait)
 945                *wait = jiffy_wait;
 946        return false;
 947}
 948
 949static bool tg_with_in_bps_limit(struct throtl_grp *tg, struct bio *bio,
 950                                 u64 bps_limit, unsigned long *wait)
 951{
 952        bool rw = bio_data_dir(bio);
 953        u64 bytes_allowed, extra_bytes, tmp;
 954        unsigned long jiffy_elapsed, jiffy_wait, jiffy_elapsed_rnd;
 955        unsigned int bio_size = throtl_bio_data_size(bio);
 956
 957        if (bps_limit == U64_MAX) {
 958                if (wait)
 959                        *wait = 0;
 960                return true;
 961        }
 962
 963        jiffy_elapsed = jiffy_elapsed_rnd = jiffies - tg->slice_start[rw];
 964
 965        /* Slice has just started. Consider one slice interval */
 966        if (!jiffy_elapsed)
 967                jiffy_elapsed_rnd = tg->td->throtl_slice;
 968
 969        jiffy_elapsed_rnd = roundup(jiffy_elapsed_rnd, tg->td->throtl_slice);
 970
 971        tmp = bps_limit * jiffy_elapsed_rnd;
 972        do_div(tmp, HZ);
 973        bytes_allowed = tmp;
 974
 975        if (tg->bytes_disp[rw] + bio_size <= bytes_allowed) {
 976                if (wait)
 977                        *wait = 0;
 978                return true;
 979        }
 980
 981        /* Calc approx time to dispatch */
 982        extra_bytes = tg->bytes_disp[rw] + bio_size - bytes_allowed;
 983        jiffy_wait = div64_u64(extra_bytes * HZ, bps_limit);
 984
 985        if (!jiffy_wait)
 986                jiffy_wait = 1;
 987
 988        /*
 989         * This wait time is without taking into consideration the rounding
 990         * up we did. Add that time also.
 991         */
 992        jiffy_wait = jiffy_wait + (jiffy_elapsed_rnd - jiffy_elapsed);
 993        if (wait)
 994                *wait = jiffy_wait;
 995        return false;
 996}
 997
 998/*
 999 * Returns whether one can dispatch a bio or not. Also returns approx number
1000 * of jiffies to wait before this bio is with-in IO rate and can be dispatched
1001 */
1002static bool tg_may_dispatch(struct throtl_grp *tg, struct bio *bio,
1003                            unsigned long *wait)
1004{
1005        bool rw = bio_data_dir(bio);
1006        unsigned long bps_wait = 0, iops_wait = 0, max_wait = 0;
1007        u64 bps_limit = tg_bps_limit(tg, rw);
1008        u32 iops_limit = tg_iops_limit(tg, rw);
1009
1010        /*
1011         * Currently whole state machine of group depends on first bio
1012         * queued in the group bio list. So one should not be calling
1013         * this function with a different bio if there are other bios
1014         * queued.
1015         */
1016        BUG_ON(tg->service_queue.nr_queued[rw] &&
1017               bio != throtl_peek_queued(&tg->service_queue.queued[rw]));
1018
1019        /* If tg->bps = -1, then BW is unlimited */
1020        if (bps_limit == U64_MAX && iops_limit == UINT_MAX) {
1021                if (wait)
1022                        *wait = 0;
1023                return true;
1024        }
1025
1026        /*
1027         * If previous slice expired, start a new one otherwise renew/extend
1028         * existing slice to make sure it is at least throtl_slice interval
1029         * long since now. New slice is started only for empty throttle group.
1030         * If there is queued bio, that means there should be an active
1031         * slice and it should be extended instead.
1032         */
1033        if (throtl_slice_used(tg, rw) && !(tg->service_queue.nr_queued[rw]))
1034                throtl_start_new_slice(tg, rw);
1035        else {
1036                if (time_before(tg->slice_end[rw],
1037                    jiffies + tg->td->throtl_slice))
1038                        throtl_extend_slice(tg, rw,
1039                                jiffies + tg->td->throtl_slice);
1040        }
1041
1042        if (iops_limit != UINT_MAX)
1043                tg->io_disp[rw] += atomic_xchg(&tg->io_split_cnt[rw], 0);
1044
1045        if (tg_with_in_bps_limit(tg, bio, bps_limit, &bps_wait) &&
1046            tg_with_in_iops_limit(tg, bio, iops_limit, &iops_wait)) {
1047                if (wait)
1048                        *wait = 0;
1049                return true;
1050        }
1051
1052        max_wait = max(bps_wait, iops_wait);
1053
1054        if (wait)
1055                *wait = max_wait;
1056
1057        if (time_before(tg->slice_end[rw], jiffies + max_wait))
1058                throtl_extend_slice(tg, rw, jiffies + max_wait);
1059
1060        return false;
1061}
1062
1063static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio)
1064{
1065        bool rw = bio_data_dir(bio);
1066        unsigned int bio_size = throtl_bio_data_size(bio);
1067
1068        /* Charge the bio to the group */
1069        tg->bytes_disp[rw] += bio_size;
1070        tg->io_disp[rw]++;
1071        tg->last_bytes_disp[rw] += bio_size;
1072        tg->last_io_disp[rw]++;
1073
1074        /*
1075         * BIO_THROTTLED is used to prevent the same bio to be throttled
1076         * more than once as a throttled bio will go through blk-throtl the
1077         * second time when it eventually gets issued.  Set it when a bio
1078         * is being charged to a tg.
1079         */
1080        if (!bio_flagged(bio, BIO_THROTTLED))
1081                bio_set_flag(bio, BIO_THROTTLED);
1082}
1083
1084/**
1085 * throtl_add_bio_tg - add a bio to the specified throtl_grp
1086 * @bio: bio to add
1087 * @qn: qnode to use
1088 * @tg: the target throtl_grp
1089 *
1090 * Add @bio to @tg's service_queue using @qn.  If @qn is not specified,
1091 * tg->qnode_on_self[] is used.
1092 */
1093static void throtl_add_bio_tg(struct bio *bio, struct throtl_qnode *qn,
1094                              struct throtl_grp *tg)
1095{
1096        struct throtl_service_queue *sq = &tg->service_queue;
1097        bool rw = bio_data_dir(bio);
1098
1099        if (!qn)
1100                qn = &tg->qnode_on_self[rw];
1101
1102        /*
1103         * If @tg doesn't currently have any bios queued in the same
1104         * direction, queueing @bio can change when @tg should be
1105         * dispatched.  Mark that @tg was empty.  This is automatically
1106         * cleared on the next tg_update_disptime().
1107         */
1108        if (!sq->nr_queued[rw])
1109                tg->flags |= THROTL_TG_WAS_EMPTY;
1110
1111        throtl_qnode_add_bio(bio, qn, &sq->queued[rw]);
1112
1113        sq->nr_queued[rw]++;
1114        throtl_enqueue_tg(tg);
1115}
1116
1117static void tg_update_disptime(struct throtl_grp *tg)
1118{
1119        struct throtl_service_queue *sq = &tg->service_queue;
1120        unsigned long read_wait = -1, write_wait = -1, min_wait = -1, disptime;
1121        struct bio *bio;
1122
1123        bio = throtl_peek_queued(&sq->queued[READ]);
1124        if (bio)
1125                tg_may_dispatch(tg, bio, &read_wait);
1126
1127        bio = throtl_peek_queued(&sq->queued[WRITE]);
1128        if (bio)
1129                tg_may_dispatch(tg, bio, &write_wait);
1130
1131        min_wait = min(read_wait, write_wait);
1132        disptime = jiffies + min_wait;
1133
1134        /* Update dispatch time */
1135        throtl_dequeue_tg(tg);
1136        tg->disptime = disptime;
1137        throtl_enqueue_tg(tg);
1138
1139        /* see throtl_add_bio_tg() */
1140        tg->flags &= ~THROTL_TG_WAS_EMPTY;
1141}
1142
1143static void start_parent_slice_with_credit(struct throtl_grp *child_tg,
1144                                        struct throtl_grp *parent_tg, bool rw)
1145{
1146        if (throtl_slice_used(parent_tg, rw)) {
1147                throtl_start_new_slice_with_credit(parent_tg, rw,
1148                                child_tg->slice_start[rw]);
1149        }
1150
1151}
1152
1153static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw)
1154{
1155        struct throtl_service_queue *sq = &tg->service_queue;
1156        struct throtl_service_queue *parent_sq = sq->parent_sq;
1157        struct throtl_grp *parent_tg = sq_to_tg(parent_sq);
1158        struct throtl_grp *tg_to_put = NULL;
1159        struct bio *bio;
1160
1161        /*
1162         * @bio is being transferred from @tg to @parent_sq.  Popping a bio
1163         * from @tg may put its reference and @parent_sq might end up
1164         * getting released prematurely.  Remember the tg to put and put it
1165         * after @bio is transferred to @parent_sq.
1166         */
1167        bio = throtl_pop_queued(&sq->queued[rw], &tg_to_put);
1168        sq->nr_queued[rw]--;
1169
1170        throtl_charge_bio(tg, bio);
1171
1172        /*
1173         * If our parent is another tg, we just need to transfer @bio to
1174         * the parent using throtl_add_bio_tg().  If our parent is
1175         * @td->service_queue, @bio is ready to be issued.  Put it on its
1176         * bio_lists[] and decrease total number queued.  The caller is
1177         * responsible for issuing these bios.
1178         */
1179        if (parent_tg) {
1180                throtl_add_bio_tg(bio, &tg->qnode_on_parent[rw], parent_tg);
1181                start_parent_slice_with_credit(tg, parent_tg, rw);
1182        } else {
1183                throtl_qnode_add_bio(bio, &tg->qnode_on_parent[rw],
1184                                     &parent_sq->queued[rw]);
1185                BUG_ON(tg->td->nr_queued[rw] <= 0);
1186                tg->td->nr_queued[rw]--;
1187        }
1188
1189        throtl_trim_slice(tg, rw);
1190
1191        if (tg_to_put)
1192                blkg_put(tg_to_blkg(tg_to_put));
1193}
1194
1195static int throtl_dispatch_tg(struct throtl_grp *tg)
1196{
1197        struct throtl_service_queue *sq = &tg->service_queue;
1198        unsigned int nr_reads = 0, nr_writes = 0;
1199        unsigned int max_nr_reads = THROTL_GRP_QUANTUM * 3 / 4;
1200        unsigned int max_nr_writes = THROTL_GRP_QUANTUM - max_nr_reads;
1201        struct bio *bio;
1202
1203        /* Try to dispatch 75% READS and 25% WRITES */
1204
1205        while ((bio = throtl_peek_queued(&sq->queued[READ])) &&
1206               tg_may_dispatch(tg, bio, NULL)) {
1207
1208                tg_dispatch_one_bio(tg, bio_data_dir(bio));
1209                nr_reads++;
1210
1211                if (nr_reads >= max_nr_reads)
1212                        break;
1213        }
1214
1215        while ((bio = throtl_peek_queued(&sq->queued[WRITE])) &&
1216               tg_may_dispatch(tg, bio, NULL)) {
1217
1218                tg_dispatch_one_bio(tg, bio_data_dir(bio));
1219                nr_writes++;
1220
1221                if (nr_writes >= max_nr_writes)
1222                        break;
1223        }
1224
1225        return nr_reads + nr_writes;
1226}
1227
1228static int throtl_select_dispatch(struct throtl_service_queue *parent_sq)
1229{
1230        unsigned int nr_disp = 0;
1231
1232        while (1) {
1233                struct throtl_grp *tg;
1234                struct throtl_service_queue *sq;
1235
1236                if (!parent_sq->nr_pending)
1237                        break;
1238
1239                tg = throtl_rb_first(parent_sq);
1240                if (!tg)
1241                        break;
1242
1243                if (time_before(jiffies, tg->disptime))
1244                        break;
1245
1246                throtl_dequeue_tg(tg);
1247
1248                nr_disp += throtl_dispatch_tg(tg);
1249
1250                sq = &tg->service_queue;
1251                if (sq->nr_queued[0] || sq->nr_queued[1])
1252                        tg_update_disptime(tg);
1253
1254                if (nr_disp >= THROTL_QUANTUM)
1255                        break;
1256        }
1257
1258        return nr_disp;
1259}
1260
1261static bool throtl_can_upgrade(struct throtl_data *td,
1262        struct throtl_grp *this_tg);
1263/**
1264 * throtl_pending_timer_fn - timer function for service_queue->pending_timer
1265 * @t: the pending_timer member of the throtl_service_queue being serviced
1266 *
1267 * This timer is armed when a child throtl_grp with active bio's become
1268 * pending and queued on the service_queue's pending_tree and expires when
1269 * the first child throtl_grp should be dispatched.  This function
1270 * dispatches bio's from the children throtl_grps to the parent
1271 * service_queue.
1272 *
1273 * If the parent's parent is another throtl_grp, dispatching is propagated
1274 * by either arming its pending_timer or repeating dispatch directly.  If
1275 * the top-level service_tree is reached, throtl_data->dispatch_work is
1276 * kicked so that the ready bio's are issued.
1277 */
1278static void throtl_pending_timer_fn(struct timer_list *t)
1279{
1280        struct throtl_service_queue *sq = from_timer(sq, t, pending_timer);
1281        struct throtl_grp *tg = sq_to_tg(sq);
1282        struct throtl_data *td = sq_to_td(sq);
1283        struct request_queue *q = td->queue;
1284        struct throtl_service_queue *parent_sq;
1285        bool dispatched;
1286        int ret;
1287
1288        spin_lock_irq(&q->queue_lock);
1289        if (throtl_can_upgrade(td, NULL))
1290                throtl_upgrade_state(td);
1291
1292again:
1293        parent_sq = sq->parent_sq;
1294        dispatched = false;
1295
1296        while (true) {
1297                throtl_log(sq, "dispatch nr_queued=%u read=%u write=%u",
1298                           sq->nr_queued[READ] + sq->nr_queued[WRITE],
1299                           sq->nr_queued[READ], sq->nr_queued[WRITE]);
1300
1301                ret = throtl_select_dispatch(sq);
1302                if (ret) {
1303                        throtl_log(sq, "bios disp=%u", ret);
1304                        dispatched = true;
1305                }
1306
1307                if (throtl_schedule_next_dispatch(sq, false))
1308                        break;
1309
1310                /* this dispatch windows is still open, relax and repeat */
1311                spin_unlock_irq(&q->queue_lock);
1312                cpu_relax();
1313                spin_lock_irq(&q->queue_lock);
1314        }
1315
1316        if (!dispatched)
1317                goto out_unlock;
1318
1319        if (parent_sq) {
1320                /* @parent_sq is another throl_grp, propagate dispatch */
1321                if (tg->flags & THROTL_TG_WAS_EMPTY) {
1322                        tg_update_disptime(tg);
1323                        if (!throtl_schedule_next_dispatch(parent_sq, false)) {
1324                                /* window is already open, repeat dispatching */
1325                                sq = parent_sq;
1326                                tg = sq_to_tg(sq);
1327                                goto again;
1328                        }
1329                }
1330        } else {
1331                /* reached the top-level, queue issuing */
1332                queue_work(kthrotld_workqueue, &td->dispatch_work);
1333        }
1334out_unlock:
1335        spin_unlock_irq(&q->queue_lock);
1336}
1337
1338/**
1339 * blk_throtl_dispatch_work_fn - work function for throtl_data->dispatch_work
1340 * @work: work item being executed
1341 *
1342 * This function is queued for execution when bios reach the bio_lists[]
1343 * of throtl_data->service_queue.  Those bios are ready and issued by this
1344 * function.
1345 */
1346static void blk_throtl_dispatch_work_fn(struct work_struct *work)
1347{
1348        struct throtl_data *td = container_of(work, struct throtl_data,
1349                                              dispatch_work);
1350        struct throtl_service_queue *td_sq = &td->service_queue;
1351        struct request_queue *q = td->queue;
1352        struct bio_list bio_list_on_stack;
1353        struct bio *bio;
1354        struct blk_plug plug;
1355        int rw;
1356
1357        bio_list_init(&bio_list_on_stack);
1358
1359        spin_lock_irq(&q->queue_lock);
1360        for (rw = READ; rw <= WRITE; rw++)
1361                while ((bio = throtl_pop_queued(&td_sq->queued[rw], NULL)))
1362                        bio_list_add(&bio_list_on_stack, bio);
1363        spin_unlock_irq(&q->queue_lock);
1364
1365        if (!bio_list_empty(&bio_list_on_stack)) {
1366                blk_start_plug(&plug);
1367                while ((bio = bio_list_pop(&bio_list_on_stack)))
1368                        submit_bio_noacct(bio);
1369                blk_finish_plug(&plug);
1370        }
1371}
1372
1373static u64 tg_prfill_conf_u64(struct seq_file *sf, struct blkg_policy_data *pd,
1374                              int off)
1375{
1376        struct throtl_grp *tg = pd_to_tg(pd);
1377        u64 v = *(u64 *)((void *)tg + off);
1378
1379        if (v == U64_MAX)
1380                return 0;
1381        return __blkg_prfill_u64(sf, pd, v);
1382}
1383
1384static u64 tg_prfill_conf_uint(struct seq_file *sf, struct blkg_policy_data *pd,
1385                               int off)
1386{
1387        struct throtl_grp *tg = pd_to_tg(pd);
1388        unsigned int v = *(unsigned int *)((void *)tg + off);
1389
1390        if (v == UINT_MAX)
1391                return 0;
1392        return __blkg_prfill_u64(sf, pd, v);
1393}
1394
1395static int tg_print_conf_u64(struct seq_file *sf, void *v)
1396{
1397        blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_conf_u64,
1398                          &blkcg_policy_throtl, seq_cft(sf)->private, false);
1399        return 0;
1400}
1401
1402static int tg_print_conf_uint(struct seq_file *sf, void *v)
1403{
1404        blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_conf_uint,
1405                          &blkcg_policy_throtl, seq_cft(sf)->private, false);
1406        return 0;
1407}
1408
1409static void tg_conf_updated(struct throtl_grp *tg, bool global)
1410{
1411        struct throtl_service_queue *sq = &tg->service_queue;
1412        struct cgroup_subsys_state *pos_css;
1413        struct blkcg_gq *blkg;
1414
1415        throtl_log(&tg->service_queue,
1416                   "limit change rbps=%llu wbps=%llu riops=%u wiops=%u",
1417                   tg_bps_limit(tg, READ), tg_bps_limit(tg, WRITE),
1418                   tg_iops_limit(tg, READ), tg_iops_limit(tg, WRITE));
1419
1420        /*
1421         * Update has_rules[] flags for the updated tg's subtree.  A tg is
1422         * considered to have rules if either the tg itself or any of its
1423         * ancestors has rules.  This identifies groups without any
1424         * restrictions in the whole hierarchy and allows them to bypass
1425         * blk-throttle.
1426         */
1427        blkg_for_each_descendant_pre(blkg, pos_css,
1428                        global ? tg->td->queue->root_blkg : tg_to_blkg(tg)) {
1429                struct throtl_grp *this_tg = blkg_to_tg(blkg);
1430                struct throtl_grp *parent_tg;
1431
1432                tg_update_has_rules(this_tg);
1433                /* ignore root/second level */
1434                if (!cgroup_subsys_on_dfl(io_cgrp_subsys) || !blkg->parent ||
1435                    !blkg->parent->parent)
1436                        continue;
1437                parent_tg = blkg_to_tg(blkg->parent);
1438                /*
1439                 * make sure all children has lower idle time threshold and
1440                 * higher latency target
1441                 */
1442                this_tg->idletime_threshold = min(this_tg->idletime_threshold,
1443                                parent_tg->idletime_threshold);
1444                this_tg->latency_target = max(this_tg->latency_target,
1445                                parent_tg->latency_target);
1446        }
1447
1448        /*
1449         * We're already holding queue_lock and know @tg is valid.  Let's
1450         * apply the new config directly.
1451         *
1452         * Restart the slices for both READ and WRITES. It might happen
1453         * that a group's limit are dropped suddenly and we don't want to
1454         * account recently dispatched IO with new low rate.
1455         */
1456        throtl_start_new_slice(tg, READ);
1457        throtl_start_new_slice(tg, WRITE);
1458
1459        if (tg->flags & THROTL_TG_PENDING) {
1460                tg_update_disptime(tg);
1461                throtl_schedule_next_dispatch(sq->parent_sq, true);
1462        }
1463}
1464
1465static ssize_t tg_set_conf(struct kernfs_open_file *of,
1466                           char *buf, size_t nbytes, loff_t off, bool is_u64)
1467{
1468        struct blkcg *blkcg = css_to_blkcg(of_css(of));
1469        struct blkg_conf_ctx ctx;
1470        struct throtl_grp *tg;
1471        int ret;
1472        u64 v;
1473
1474        ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx);
1475        if (ret)
1476                return ret;
1477
1478        ret = -EINVAL;
1479        if (sscanf(ctx.body, "%llu", &v) != 1)
1480                goto out_finish;
1481        if (!v)
1482                v = U64_MAX;
1483
1484        tg = blkg_to_tg(ctx.blkg);
1485
1486        if (is_u64)
1487                *(u64 *)((void *)tg + of_cft(of)->private) = v;
1488        else
1489                *(unsigned int *)((void *)tg + of_cft(of)->private) = v;
1490
1491        tg_conf_updated(tg, false);
1492        ret = 0;
1493out_finish:
1494        blkg_conf_finish(&ctx);
1495        return ret ?: nbytes;
1496}
1497
1498static ssize_t tg_set_conf_u64(struct kernfs_open_file *of,
1499                               char *buf, size_t nbytes, loff_t off)
1500{
1501        return tg_set_conf(of, buf, nbytes, off, true);
1502}
1503
1504static ssize_t tg_set_conf_uint(struct kernfs_open_file *of,
1505                                char *buf, size_t nbytes, loff_t off)
1506{
1507        return tg_set_conf(of, buf, nbytes, off, false);
1508}
1509
1510static int tg_print_rwstat(struct seq_file *sf, void *v)
1511{
1512        blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
1513                          blkg_prfill_rwstat, &blkcg_policy_throtl,
1514                          seq_cft(sf)->private, true);
1515        return 0;
1516}
1517
1518static u64 tg_prfill_rwstat_recursive(struct seq_file *sf,
1519                                      struct blkg_policy_data *pd, int off)
1520{
1521        struct blkg_rwstat_sample sum;
1522
1523        blkg_rwstat_recursive_sum(pd_to_blkg(pd), &blkcg_policy_throtl, off,
1524                                  &sum);
1525        return __blkg_prfill_rwstat(sf, pd, &sum);
1526}
1527
1528static int tg_print_rwstat_recursive(struct seq_file *sf, void *v)
1529{
1530        blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
1531                          tg_prfill_rwstat_recursive, &blkcg_policy_throtl,
1532                          seq_cft(sf)->private, true);
1533        return 0;
1534}
1535
1536static struct cftype throtl_legacy_files[] = {
1537        {
1538                .name = "throttle.read_bps_device",
1539                .private = offsetof(struct throtl_grp, bps[READ][LIMIT_MAX]),
1540                .seq_show = tg_print_conf_u64,
1541                .write = tg_set_conf_u64,
1542        },
1543        {
1544                .name = "throttle.write_bps_device",
1545                .private = offsetof(struct throtl_grp, bps[WRITE][LIMIT_MAX]),
1546                .seq_show = tg_print_conf_u64,
1547                .write = tg_set_conf_u64,
1548        },
1549        {
1550                .name = "throttle.read_iops_device",
1551                .private = offsetof(struct throtl_grp, iops[READ][LIMIT_MAX]),
1552                .seq_show = tg_print_conf_uint,
1553                .write = tg_set_conf_uint,
1554        },
1555        {
1556                .name = "throttle.write_iops_device",
1557                .private = offsetof(struct throtl_grp, iops[WRITE][LIMIT_MAX]),
1558                .seq_show = tg_print_conf_uint,
1559                .write = tg_set_conf_uint,
1560        },
1561        {
1562                .name = "throttle.io_service_bytes",
1563                .private = offsetof(struct throtl_grp, stat_bytes),
1564                .seq_show = tg_print_rwstat,
1565        },
1566        {
1567                .name = "throttle.io_service_bytes_recursive",
1568                .private = offsetof(struct throtl_grp, stat_bytes),
1569                .seq_show = tg_print_rwstat_recursive,
1570        },
1571        {
1572                .name = "throttle.io_serviced",
1573                .private = offsetof(struct throtl_grp, stat_ios),
1574                .seq_show = tg_print_rwstat,
1575        },
1576        {
1577                .name = "throttle.io_serviced_recursive",
1578                .private = offsetof(struct throtl_grp, stat_ios),
1579                .seq_show = tg_print_rwstat_recursive,
1580        },
1581        { }     /* terminate */
1582};
1583
1584static u64 tg_prfill_limit(struct seq_file *sf, struct blkg_policy_data *pd,
1585                         int off)
1586{
1587        struct throtl_grp *tg = pd_to_tg(pd);
1588        const char *dname = blkg_dev_name(pd->blkg);
1589        char bufs[4][21] = { "max", "max", "max", "max" };
1590        u64 bps_dft;
1591        unsigned int iops_dft;
1592        char idle_time[26] = "";
1593        char latency_time[26] = "";
1594
1595        if (!dname)
1596                return 0;
1597
1598        if (off == LIMIT_LOW) {
1599                bps_dft = 0;
1600                iops_dft = 0;
1601        } else {
1602                bps_dft = U64_MAX;
1603                iops_dft = UINT_MAX;
1604        }
1605
1606        if (tg->bps_conf[READ][off] == bps_dft &&
1607            tg->bps_conf[WRITE][off] == bps_dft &&
1608            tg->iops_conf[READ][off] == iops_dft &&
1609            tg->iops_conf[WRITE][off] == iops_dft &&
1610            (off != LIMIT_LOW ||
1611             (tg->idletime_threshold_conf == DFL_IDLE_THRESHOLD &&
1612              tg->latency_target_conf == DFL_LATENCY_TARGET)))
1613                return 0;
1614
1615        if (tg->bps_conf[READ][off] != U64_MAX)
1616                snprintf(bufs[0], sizeof(bufs[0]), "%llu",
1617                        tg->bps_conf[READ][off]);
1618        if (tg->bps_conf[WRITE][off] != U64_MAX)
1619                snprintf(bufs[1], sizeof(bufs[1]), "%llu",
1620                        tg->bps_conf[WRITE][off]);
1621        if (tg->iops_conf[READ][off] != UINT_MAX)
1622                snprintf(bufs[2], sizeof(bufs[2]), "%u",
1623                        tg->iops_conf[READ][off]);
1624        if (tg->iops_conf[WRITE][off] != UINT_MAX)
1625                snprintf(bufs[3], sizeof(bufs[3]), "%u",
1626                        tg->iops_conf[WRITE][off]);
1627        if (off == LIMIT_LOW) {
1628                if (tg->idletime_threshold_conf == ULONG_MAX)
1629                        strcpy(idle_time, " idle=max");
1630                else
1631                        snprintf(idle_time, sizeof(idle_time), " idle=%lu",
1632                                tg->idletime_threshold_conf);
1633
1634                if (tg->latency_target_conf == ULONG_MAX)
1635                        strcpy(latency_time, " latency=max");
1636                else
1637                        snprintf(latency_time, sizeof(latency_time),
1638                                " latency=%lu", tg->latency_target_conf);
1639        }
1640
1641        seq_printf(sf, "%s rbps=%s wbps=%s riops=%s wiops=%s%s%s\n",
1642                   dname, bufs[0], bufs[1], bufs[2], bufs[3], idle_time,
1643                   latency_time);
1644        return 0;
1645}
1646
1647static int tg_print_limit(struct seq_file *sf, void *v)
1648{
1649        blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_limit,
1650                          &blkcg_policy_throtl, seq_cft(sf)->private, false);
1651        return 0;
1652}
1653
1654static ssize_t tg_set_limit(struct kernfs_open_file *of,
1655                          char *buf, size_t nbytes, loff_t off)
1656{
1657        struct blkcg *blkcg = css_to_blkcg(of_css(of));
1658        struct blkg_conf_ctx ctx;
1659        struct throtl_grp *tg;
1660        u64 v[4];
1661        unsigned long idle_time;
1662        unsigned long latency_time;
1663        int ret;
1664        int index = of_cft(of)->private;
1665
1666        ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx);
1667        if (ret)
1668                return ret;
1669
1670        tg = blkg_to_tg(ctx.blkg);
1671
1672        v[0] = tg->bps_conf[READ][index];
1673        v[1] = tg->bps_conf[WRITE][index];
1674        v[2] = tg->iops_conf[READ][index];
1675        v[3] = tg->iops_conf[WRITE][index];
1676
1677        idle_time = tg->idletime_threshold_conf;
1678        latency_time = tg->latency_target_conf;
1679        while (true) {
1680                char tok[27];   /* wiops=18446744073709551616 */
1681                char *p;
1682                u64 val = U64_MAX;
1683                int len;
1684
1685                if (sscanf(ctx.body, "%26s%n", tok, &len) != 1)
1686                        break;
1687                if (tok[0] == '\0')
1688                        break;
1689                ctx.body += len;
1690
1691                ret = -EINVAL;
1692                p = tok;
1693                strsep(&p, "=");
1694                if (!p || (sscanf(p, "%llu", &val) != 1 && strcmp(p, "max")))
1695                        goto out_finish;
1696
1697                ret = -ERANGE;
1698                if (!val)
1699                        goto out_finish;
1700
1701                ret = -EINVAL;
1702                if (!strcmp(tok, "rbps") && val > 1)
1703                        v[0] = val;
1704                else if (!strcmp(tok, "wbps") && val > 1)
1705                        v[1] = val;
1706                else if (!strcmp(tok, "riops") && val > 1)
1707                        v[2] = min_t(u64, val, UINT_MAX);
1708                else if (!strcmp(tok, "wiops") && val > 1)
1709                        v[3] = min_t(u64, val, UINT_MAX);
1710                else if (off == LIMIT_LOW && !strcmp(tok, "idle"))
1711                        idle_time = val;
1712                else if (off == LIMIT_LOW && !strcmp(tok, "latency"))
1713                        latency_time = val;
1714                else
1715                        goto out_finish;
1716        }
1717
1718        tg->bps_conf[READ][index] = v[0];
1719        tg->bps_conf[WRITE][index] = v[1];
1720        tg->iops_conf[READ][index] = v[2];
1721        tg->iops_conf[WRITE][index] = v[3];
1722
1723        if (index == LIMIT_MAX) {
1724                tg->bps[READ][index] = v[0];
1725                tg->bps[WRITE][index] = v[1];
1726                tg->iops[READ][index] = v[2];
1727                tg->iops[WRITE][index] = v[3];
1728        }
1729        tg->bps[READ][LIMIT_LOW] = min(tg->bps_conf[READ][LIMIT_LOW],
1730                tg->bps_conf[READ][LIMIT_MAX]);
1731        tg->bps[WRITE][LIMIT_LOW] = min(tg->bps_conf[WRITE][LIMIT_LOW],
1732                tg->bps_conf[WRITE][LIMIT_MAX]);
1733        tg->iops[READ][LIMIT_LOW] = min(tg->iops_conf[READ][LIMIT_LOW],
1734                tg->iops_conf[READ][LIMIT_MAX]);
1735        tg->iops[WRITE][LIMIT_LOW] = min(tg->iops_conf[WRITE][LIMIT_LOW],
1736                tg->iops_conf[WRITE][LIMIT_MAX]);
1737        tg->idletime_threshold_conf = idle_time;
1738        tg->latency_target_conf = latency_time;
1739
1740        /* force user to configure all settings for low limit  */
1741        if (!(tg->bps[READ][LIMIT_LOW] || tg->iops[READ][LIMIT_LOW] ||
1742              tg->bps[WRITE][LIMIT_LOW] || tg->iops[WRITE][LIMIT_LOW]) ||
1743            tg->idletime_threshold_conf == DFL_IDLE_THRESHOLD ||
1744            tg->latency_target_conf == DFL_LATENCY_TARGET) {
1745                tg->bps[READ][LIMIT_LOW] = 0;
1746                tg->bps[WRITE][LIMIT_LOW] = 0;
1747                tg->iops[READ][LIMIT_LOW] = 0;
1748                tg->iops[WRITE][LIMIT_LOW] = 0;
1749                tg->idletime_threshold = DFL_IDLE_THRESHOLD;
1750                tg->latency_target = DFL_LATENCY_TARGET;
1751        } else if (index == LIMIT_LOW) {
1752                tg->idletime_threshold = tg->idletime_threshold_conf;
1753                tg->latency_target = tg->latency_target_conf;
1754        }
1755
1756        blk_throtl_update_limit_valid(tg->td);
1757        if (tg->td->limit_valid[LIMIT_LOW]) {
1758                if (index == LIMIT_LOW)
1759                        tg->td->limit_index = LIMIT_LOW;
1760        } else
1761                tg->td->limit_index = LIMIT_MAX;
1762        tg_conf_updated(tg, index == LIMIT_LOW &&
1763                tg->td->limit_valid[LIMIT_LOW]);
1764        ret = 0;
1765out_finish:
1766        blkg_conf_finish(&ctx);
1767        return ret ?: nbytes;
1768}
1769
1770static struct cftype throtl_files[] = {
1771#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
1772        {
1773                .name = "low",
1774                .flags = CFTYPE_NOT_ON_ROOT,
1775                .seq_show = tg_print_limit,
1776                .write = tg_set_limit,
1777                .private = LIMIT_LOW,
1778        },
1779#endif
1780        {
1781                .name = "max",
1782                .flags = CFTYPE_NOT_ON_ROOT,
1783                .seq_show = tg_print_limit,
1784                .write = tg_set_limit,
1785                .private = LIMIT_MAX,
1786        },
1787        { }     /* terminate */
1788};
1789
1790static void throtl_shutdown_wq(struct request_queue *q)
1791{
1792        struct throtl_data *td = q->td;
1793
1794        cancel_work_sync(&td->dispatch_work);
1795}
1796
1797static struct blkcg_policy blkcg_policy_throtl = {
1798        .dfl_cftypes            = throtl_files,
1799        .legacy_cftypes         = throtl_legacy_files,
1800
1801        .pd_alloc_fn            = throtl_pd_alloc,
1802        .pd_init_fn             = throtl_pd_init,
1803        .pd_online_fn           = throtl_pd_online,
1804        .pd_offline_fn          = throtl_pd_offline,
1805        .pd_free_fn             = throtl_pd_free,
1806};
1807
1808static unsigned long __tg_last_low_overflow_time(struct throtl_grp *tg)
1809{
1810        unsigned long rtime = jiffies, wtime = jiffies;
1811
1812        if (tg->bps[READ][LIMIT_LOW] || tg->iops[READ][LIMIT_LOW])
1813                rtime = tg->last_low_overflow_time[READ];
1814        if (tg->bps[WRITE][LIMIT_LOW] || tg->iops[WRITE][LIMIT_LOW])
1815                wtime = tg->last_low_overflow_time[WRITE];
1816        return min(rtime, wtime);
1817}
1818
1819/* tg should not be an intermediate node */
1820static unsigned long tg_last_low_overflow_time(struct throtl_grp *tg)
1821{
1822        struct throtl_service_queue *parent_sq;
1823        struct throtl_grp *parent = tg;
1824        unsigned long ret = __tg_last_low_overflow_time(tg);
1825
1826        while (true) {
1827                parent_sq = parent->service_queue.parent_sq;
1828                parent = sq_to_tg(parent_sq);
1829                if (!parent)
1830                        break;
1831
1832                /*
1833                 * The parent doesn't have low limit, it always reaches low
1834                 * limit. Its overflow time is useless for children
1835                 */
1836                if (!parent->bps[READ][LIMIT_LOW] &&
1837                    !parent->iops[READ][LIMIT_LOW] &&
1838                    !parent->bps[WRITE][LIMIT_LOW] &&
1839                    !parent->iops[WRITE][LIMIT_LOW])
1840                        continue;
1841                if (time_after(__tg_last_low_overflow_time(parent), ret))
1842                        ret = __tg_last_low_overflow_time(parent);
1843        }
1844        return ret;
1845}
1846
1847static bool throtl_tg_is_idle(struct throtl_grp *tg)
1848{
1849        /*
1850         * cgroup is idle if:
1851         * - single idle is too long, longer than a fixed value (in case user
1852         *   configure a too big threshold) or 4 times of idletime threshold
1853         * - average think time is more than threshold
1854         * - IO latency is largely below threshold
1855         */
1856        unsigned long time;
1857        bool ret;
1858
1859        time = min_t(unsigned long, MAX_IDLE_TIME, 4 * tg->idletime_threshold);
1860        ret = tg->latency_target == DFL_LATENCY_TARGET ||
1861              tg->idletime_threshold == DFL_IDLE_THRESHOLD ||
1862              (ktime_get_ns() >> 10) - tg->last_finish_time > time ||
1863              tg->avg_idletime > tg->idletime_threshold ||
1864              (tg->latency_target && tg->bio_cnt &&
1865                tg->bad_bio_cnt * 5 < tg->bio_cnt);
1866        throtl_log(&tg->service_queue,
1867                "avg_idle=%ld, idle_threshold=%ld, bad_bio=%d, total_bio=%d, is_idle=%d, scale=%d",
1868                tg->avg_idletime, tg->idletime_threshold, tg->bad_bio_cnt,
1869                tg->bio_cnt, ret, tg->td->scale);
1870        return ret;
1871}
1872
1873static bool throtl_tg_can_upgrade(struct throtl_grp *tg)
1874{
1875        struct throtl_service_queue *sq = &tg->service_queue;
1876        bool read_limit, write_limit;
1877
1878        /*
1879         * if cgroup reaches low limit (if low limit is 0, the cgroup always
1880         * reaches), it's ok to upgrade to next limit
1881         */
1882        read_limit = tg->bps[READ][LIMIT_LOW] || tg->iops[READ][LIMIT_LOW];
1883        write_limit = tg->bps[WRITE][LIMIT_LOW] || tg->iops[WRITE][LIMIT_LOW];
1884        if (!read_limit && !write_limit)
1885                return true;
1886        if (read_limit && sq->nr_queued[READ] &&
1887            (!write_limit || sq->nr_queued[WRITE]))
1888                return true;
1889        if (write_limit && sq->nr_queued[WRITE] &&
1890            (!read_limit || sq->nr_queued[READ]))
1891                return true;
1892
1893        if (time_after_eq(jiffies,
1894                tg_last_low_overflow_time(tg) + tg->td->throtl_slice) &&
1895            throtl_tg_is_idle(tg))
1896                return true;
1897        return false;
1898}
1899
1900static bool throtl_hierarchy_can_upgrade(struct throtl_grp *tg)
1901{
1902        while (true) {
1903                if (throtl_tg_can_upgrade(tg))
1904                        return true;
1905                tg = sq_to_tg(tg->service_queue.parent_sq);
1906                if (!tg || !tg_to_blkg(tg)->parent)
1907                        return false;
1908        }
1909        return false;
1910}
1911
1912static bool throtl_can_upgrade(struct throtl_data *td,
1913        struct throtl_grp *this_tg)
1914{
1915        struct cgroup_subsys_state *pos_css;
1916        struct blkcg_gq *blkg;
1917
1918        if (td->limit_index != LIMIT_LOW)
1919                return false;
1920
1921        if (time_before(jiffies, td->low_downgrade_time + td->throtl_slice))
1922                return false;
1923
1924        rcu_read_lock();
1925        blkg_for_each_descendant_post(blkg, pos_css, td->queue->root_blkg) {
1926                struct throtl_grp *tg = blkg_to_tg(blkg);
1927
1928                if (tg == this_tg)
1929                        continue;
1930                if (!list_empty(&tg_to_blkg(tg)->blkcg->css.children))
1931                        continue;
1932                if (!throtl_hierarchy_can_upgrade(tg)) {
1933                        rcu_read_unlock();
1934                        return false;
1935                }
1936        }
1937        rcu_read_unlock();
1938        return true;
1939}
1940
1941static void throtl_upgrade_check(struct throtl_grp *tg)
1942{
1943        unsigned long now = jiffies;
1944
1945        if (tg->td->limit_index != LIMIT_LOW)
1946                return;
1947
1948        if (time_after(tg->last_check_time + tg->td->throtl_slice, now))
1949                return;
1950
1951        tg->last_check_time = now;
1952
1953        if (!time_after_eq(now,
1954             __tg_last_low_overflow_time(tg) + tg->td->throtl_slice))
1955                return;
1956
1957        if (throtl_can_upgrade(tg->td, NULL))
1958                throtl_upgrade_state(tg->td);
1959}
1960
1961static void throtl_upgrade_state(struct throtl_data *td)
1962{
1963        struct cgroup_subsys_state *pos_css;
1964        struct blkcg_gq *blkg;
1965
1966        throtl_log(&td->service_queue, "upgrade to max");
1967        td->limit_index = LIMIT_MAX;
1968        td->low_upgrade_time = jiffies;
1969        td->scale = 0;
1970        rcu_read_lock();
1971        blkg_for_each_descendant_post(blkg, pos_css, td->queue->root_blkg) {
1972                struct throtl_grp *tg = blkg_to_tg(blkg);
1973                struct throtl_service_queue *sq = &tg->service_queue;
1974
1975                tg->disptime = jiffies - 1;
1976                throtl_select_dispatch(sq);
1977                throtl_schedule_next_dispatch(sq, true);
1978        }
1979        rcu_read_unlock();
1980        throtl_select_dispatch(&td->service_queue);
1981        throtl_schedule_next_dispatch(&td->service_queue, true);
1982        queue_work(kthrotld_workqueue, &td->dispatch_work);
1983}
1984
1985static void throtl_downgrade_state(struct throtl_data *td)
1986{
1987        td->scale /= 2;
1988
1989        throtl_log(&td->service_queue, "downgrade, scale %d", td->scale);
1990        if (td->scale) {
1991                td->low_upgrade_time = jiffies - td->scale * td->throtl_slice;
1992                return;
1993        }
1994
1995        td->limit_index = LIMIT_LOW;
1996        td->low_downgrade_time = jiffies;
1997}
1998
1999static bool throtl_tg_can_downgrade(struct throtl_grp *tg)
2000{
2001        struct throtl_data *td = tg->td;
2002        unsigned long now = jiffies;
2003
2004        /*
2005         * If cgroup is below low limit, consider downgrade and throttle other
2006         * cgroups
2007         */
2008        if (time_after_eq(now, td->low_upgrade_time + td->throtl_slice) &&
2009            time_after_eq(now, tg_last_low_overflow_time(tg) +
2010                                        td->throtl_slice) &&
2011            (!throtl_tg_is_idle(tg) ||
2012             !list_empty(&tg_to_blkg(tg)->blkcg->css.children)))
2013                return true;
2014        return false;
2015}
2016
2017static bool throtl_hierarchy_can_downgrade(struct throtl_grp *tg)
2018{
2019        while (true) {
2020                if (!throtl_tg_can_downgrade(tg))
2021                        return false;
2022                tg = sq_to_tg(tg->service_queue.parent_sq);
2023                if (!tg || !tg_to_blkg(tg)->parent)
2024                        break;
2025        }
2026        return true;
2027}
2028
2029static void throtl_downgrade_check(struct throtl_grp *tg)
2030{
2031        uint64_t bps;
2032        unsigned int iops;
2033        unsigned long elapsed_time;
2034        unsigned long now = jiffies;
2035
2036        if (tg->td->limit_index != LIMIT_MAX ||
2037            !tg->td->limit_valid[LIMIT_LOW])
2038                return;
2039        if (!list_empty(&tg_to_blkg(tg)->blkcg->css.children))
2040                return;
2041        if (time_after(tg->last_check_time + tg->td->throtl_slice, now))
2042                return;
2043
2044        elapsed_time = now - tg->last_check_time;
2045        tg->last_check_time = now;
2046
2047        if (time_before(now, tg_last_low_overflow_time(tg) +
2048                        tg->td->throtl_slice))
2049                return;
2050
2051        if (tg->bps[READ][LIMIT_LOW]) {
2052                bps = tg->last_bytes_disp[READ] * HZ;
2053                do_div(bps, elapsed_time);
2054                if (bps >= tg->bps[READ][LIMIT_LOW])
2055                        tg->last_low_overflow_time[READ] = now;
2056        }
2057
2058        if (tg->bps[WRITE][LIMIT_LOW]) {
2059                bps = tg->last_bytes_disp[WRITE] * HZ;
2060                do_div(bps, elapsed_time);
2061                if (bps >= tg->bps[WRITE][LIMIT_LOW])
2062                        tg->last_low_overflow_time[WRITE] = now;
2063        }
2064
2065        if (tg->iops[READ][LIMIT_LOW]) {
2066                tg->last_io_disp[READ] += atomic_xchg(&tg->last_io_split_cnt[READ], 0);
2067                iops = tg->last_io_disp[READ] * HZ / elapsed_time;
2068                if (iops >= tg->iops[READ][LIMIT_LOW])
2069                        tg->last_low_overflow_time[READ] = now;
2070        }
2071
2072        if (tg->iops[WRITE][LIMIT_LOW]) {
2073                tg->last_io_disp[WRITE] += atomic_xchg(&tg->last_io_split_cnt[WRITE], 0);
2074                iops = tg->last_io_disp[WRITE] * HZ / elapsed_time;
2075                if (iops >= tg->iops[WRITE][LIMIT_LOW])
2076                        tg->last_low_overflow_time[WRITE] = now;
2077        }
2078
2079        /*
2080         * If cgroup is below low limit, consider downgrade and throttle other
2081         * cgroups
2082         */
2083        if (throtl_hierarchy_can_downgrade(tg))
2084                throtl_downgrade_state(tg->td);
2085
2086        tg->last_bytes_disp[READ] = 0;
2087        tg->last_bytes_disp[WRITE] = 0;
2088        tg->last_io_disp[READ] = 0;
2089        tg->last_io_disp[WRITE] = 0;
2090}
2091
2092static void blk_throtl_update_idletime(struct throtl_grp *tg)
2093{
2094        unsigned long now;
2095        unsigned long last_finish_time = tg->last_finish_time;
2096
2097        if (last_finish_time == 0)
2098                return;
2099
2100        now = ktime_get_ns() >> 10;
2101        if (now <= last_finish_time ||
2102            last_finish_time == tg->checked_last_finish_time)
2103                return;
2104
2105        tg->avg_idletime = (tg->avg_idletime * 7 + now - last_finish_time) >> 3;
2106        tg->checked_last_finish_time = last_finish_time;
2107}
2108
2109#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
2110static void throtl_update_latency_buckets(struct throtl_data *td)
2111{
2112        struct avg_latency_bucket avg_latency[2][LATENCY_BUCKET_SIZE];
2113        int i, cpu, rw;
2114        unsigned long last_latency[2] = { 0 };
2115        unsigned long latency[2];
2116
2117        if (!blk_queue_nonrot(td->queue) || !td->limit_valid[LIMIT_LOW])
2118                return;
2119        if (time_before(jiffies, td->last_calculate_time + HZ))
2120                return;
2121        td->last_calculate_time = jiffies;
2122
2123        memset(avg_latency, 0, sizeof(avg_latency));
2124        for (rw = READ; rw <= WRITE; rw++) {
2125                for (i = 0; i < LATENCY_BUCKET_SIZE; i++) {
2126                        struct latency_bucket *tmp = &td->tmp_buckets[rw][i];
2127
2128                        for_each_possible_cpu(cpu) {
2129                                struct latency_bucket *bucket;
2130
2131                                /* this isn't race free, but ok in practice */
2132                                bucket = per_cpu_ptr(td->latency_buckets[rw],
2133                                        cpu);
2134                                tmp->total_latency += bucket[i].total_latency;
2135                                tmp->samples += bucket[i].samples;
2136                                bucket[i].total_latency = 0;
2137                                bucket[i].samples = 0;
2138                        }
2139
2140                        if (tmp->samples >= 32) {
2141                                int samples = tmp->samples;
2142
2143                                latency[rw] = tmp->total_latency;
2144
2145                                tmp->total_latency = 0;
2146                                tmp->samples = 0;
2147                                latency[rw] /= samples;
2148                                if (latency[rw] == 0)
2149                                        continue;
2150                                avg_latency[rw][i].latency = latency[rw];
2151                        }
2152                }
2153        }
2154
2155        for (rw = READ; rw <= WRITE; rw++) {
2156                for (i = 0; i < LATENCY_BUCKET_SIZE; i++) {
2157                        if (!avg_latency[rw][i].latency) {
2158                                if (td->avg_buckets[rw][i].latency < last_latency[rw])
2159                                        td->avg_buckets[rw][i].latency =
2160                                                last_latency[rw];
2161                                continue;
2162                        }
2163
2164                        if (!td->avg_buckets[rw][i].valid)
2165                                latency[rw] = avg_latency[rw][i].latency;
2166                        else
2167                                latency[rw] = (td->avg_buckets[rw][i].latency * 7 +
2168                                        avg_latency[rw][i].latency) >> 3;
2169
2170                        td->avg_buckets[rw][i].latency = max(latency[rw],
2171                                last_latency[rw]);
2172                        td->avg_buckets[rw][i].valid = true;
2173                        last_latency[rw] = td->avg_buckets[rw][i].latency;
2174                }
2175        }
2176
2177        for (i = 0; i < LATENCY_BUCKET_SIZE; i++)
2178                throtl_log(&td->service_queue,
2179                        "Latency bucket %d: read latency=%ld, read valid=%d, "
2180                        "write latency=%ld, write valid=%d", i,
2181                        td->avg_buckets[READ][i].latency,
2182                        td->avg_buckets[READ][i].valid,
2183                        td->avg_buckets[WRITE][i].latency,
2184                        td->avg_buckets[WRITE][i].valid);
2185}
2186#else
2187static inline void throtl_update_latency_buckets(struct throtl_data *td)
2188{
2189}
2190#endif
2191
2192void blk_throtl_charge_bio_split(struct bio *bio)
2193{
2194        struct blkcg_gq *blkg = bio->bi_blkg;
2195        struct throtl_grp *parent = blkg_to_tg(blkg);
2196        struct throtl_service_queue *parent_sq;
2197        bool rw = bio_data_dir(bio);
2198
2199        do {
2200                if (!parent->has_rules[rw])
2201                        break;
2202
2203                atomic_inc(&parent->io_split_cnt[rw]);
2204                atomic_inc(&parent->last_io_split_cnt[rw]);
2205
2206                parent_sq = parent->service_queue.parent_sq;
2207                parent = sq_to_tg(parent_sq);
2208        } while (parent);
2209}
2210
2211bool blk_throtl_bio(struct bio *bio)
2212{
2213        struct request_queue *q = bio->bi_bdev->bd_disk->queue;
2214        struct blkcg_gq *blkg = bio->bi_blkg;
2215        struct throtl_qnode *qn = NULL;
2216        struct throtl_grp *tg = blkg_to_tg(blkg);
2217        struct throtl_service_queue *sq;
2218        bool rw = bio_data_dir(bio);
2219        bool throttled = false;
2220        struct throtl_data *td = tg->td;
2221
2222        rcu_read_lock();
2223
2224        /* see throtl_charge_bio() */
2225        if (bio_flagged(bio, BIO_THROTTLED))
2226                goto out;
2227
2228        if (!cgroup_subsys_on_dfl(io_cgrp_subsys)) {
2229                blkg_rwstat_add(&tg->stat_bytes, bio->bi_opf,
2230                                bio->bi_iter.bi_size);
2231                blkg_rwstat_add(&tg->stat_ios, bio->bi_opf, 1);
2232        }
2233
2234        if (!tg->has_rules[rw])
2235                goto out;
2236
2237        spin_lock_irq(&q->queue_lock);
2238
2239        throtl_update_latency_buckets(td);
2240
2241        blk_throtl_update_idletime(tg);
2242
2243        sq = &tg->service_queue;
2244
2245again:
2246        while (true) {
2247                if (tg->last_low_overflow_time[rw] == 0)
2248                        tg->last_low_overflow_time[rw] = jiffies;
2249                throtl_downgrade_check(tg);
2250                throtl_upgrade_check(tg);
2251                /* throtl is FIFO - if bios are already queued, should queue */
2252                if (sq->nr_queued[rw])
2253                        break;
2254
2255                /* if above limits, break to queue */
2256                if (!tg_may_dispatch(tg, bio, NULL)) {
2257                        tg->last_low_overflow_time[rw] = jiffies;
2258                        if (throtl_can_upgrade(td, tg)) {
2259                                throtl_upgrade_state(td);
2260                                goto again;
2261                        }
2262                        break;
2263                }
2264
2265                /* within limits, let's charge and dispatch directly */
2266                throtl_charge_bio(tg, bio);
2267
2268                /*
2269                 * We need to trim slice even when bios are not being queued
2270                 * otherwise it might happen that a bio is not queued for
2271                 * a long time and slice keeps on extending and trim is not
2272                 * called for a long time. Now if limits are reduced suddenly
2273                 * we take into account all the IO dispatched so far at new
2274                 * low rate and * newly queued IO gets a really long dispatch
2275                 * time.
2276                 *
2277                 * So keep on trimming slice even if bio is not queued.
2278                 */
2279                throtl_trim_slice(tg, rw);
2280
2281                /*
2282                 * @bio passed through this layer without being throttled.
2283                 * Climb up the ladder.  If we're already at the top, it
2284                 * can be executed directly.
2285                 */
2286                qn = &tg->qnode_on_parent[rw];
2287                sq = sq->parent_sq;
2288                tg = sq_to_tg(sq);
2289                if (!tg)
2290                        goto out_unlock;
2291        }
2292
2293        /* out-of-limit, queue to @tg */
2294        throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
2295                   rw == READ ? 'R' : 'W',
2296                   tg->bytes_disp[rw], bio->bi_iter.bi_size,
2297                   tg_bps_limit(tg, rw),
2298                   tg->io_disp[rw], tg_iops_limit(tg, rw),
2299                   sq->nr_queued[READ], sq->nr_queued[WRITE]);
2300
2301        tg->last_low_overflow_time[rw] = jiffies;
2302
2303        td->nr_queued[rw]++;
2304        throtl_add_bio_tg(bio, qn, tg);
2305        throttled = true;
2306
2307        /*
2308         * Update @tg's dispatch time and force schedule dispatch if @tg
2309         * was empty before @bio.  The forced scheduling isn't likely to
2310         * cause undue delay as @bio is likely to be dispatched directly if
2311         * its @tg's disptime is not in the future.
2312         */
2313        if (tg->flags & THROTL_TG_WAS_EMPTY) {
2314                tg_update_disptime(tg);
2315                throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
2316        }
2317
2318out_unlock:
2319        spin_unlock_irq(&q->queue_lock);
2320out:
2321        bio_set_flag(bio, BIO_THROTTLED);
2322
2323#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
2324        if (throttled || !td->track_bio_latency)
2325                bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
2326#endif
2327        rcu_read_unlock();
2328        return throttled;
2329}
2330
2331#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
2332static void throtl_track_latency(struct throtl_data *td, sector_t size,
2333        int op, unsigned long time)
2334{
2335        struct latency_bucket *latency;
2336        int index;
2337
2338        if (!td || td->limit_index != LIMIT_LOW ||
2339            !(op == REQ_OP_READ || op == REQ_OP_WRITE) ||
2340            !blk_queue_nonrot(td->queue))
2341                return;
2342
2343        index = request_bucket_index(size);
2344
2345        latency = get_cpu_ptr(td->latency_buckets[op]);
2346        latency[index].total_latency += time;
2347        latency[index].samples++;
2348        put_cpu_ptr(td->latency_buckets[op]);
2349}
2350
2351void blk_throtl_stat_add(struct request *rq, u64 time_ns)
2352{
2353        struct request_queue *q = rq->q;
2354        struct throtl_data *td = q->td;
2355
2356        throtl_track_latency(td, blk_rq_stats_sectors(rq), req_op(rq),
2357                             time_ns >> 10);
2358}
2359
2360void blk_throtl_bio_endio(struct bio *bio)
2361{
2362        struct blkcg_gq *blkg;
2363        struct throtl_grp *tg;
2364        u64 finish_time_ns;
2365        unsigned long finish_time;
2366        unsigned long start_time;
2367        unsigned long lat;
2368        int rw = bio_data_dir(bio);
2369
2370        blkg = bio->bi_blkg;
2371        if (!blkg)
2372                return;
2373        tg = blkg_to_tg(blkg);
2374        if (!tg->td->limit_valid[LIMIT_LOW])
2375                return;
2376
2377        finish_time_ns = ktime_get_ns();
2378        tg->last_finish_time = finish_time_ns >> 10;
2379
2380        start_time = bio_issue_time(&bio->bi_issue) >> 10;
2381        finish_time = __bio_issue_time(finish_time_ns) >> 10;
2382        if (!start_time || finish_time <= start_time)
2383                return;
2384
2385        lat = finish_time - start_time;
2386        /* this is only for bio based driver */
2387        if (!(bio->bi_issue.value & BIO_ISSUE_THROTL_SKIP_LATENCY))
2388                throtl_track_latency(tg->td, bio_issue_size(&bio->bi_issue),
2389                                     bio_op(bio), lat);
2390
2391        if (tg->latency_target && lat >= tg->td->filtered_latency) {
2392                int bucket;
2393                unsigned int threshold;
2394
2395                bucket = request_bucket_index(bio_issue_size(&bio->bi_issue));
2396                threshold = tg->td->avg_buckets[rw][bucket].latency +
2397                        tg->latency_target;
2398                if (lat > threshold)
2399                        tg->bad_bio_cnt++;
2400                /*
2401                 * Not race free, could get wrong count, which means cgroups
2402                 * will be throttled
2403                 */
2404                tg->bio_cnt++;
2405        }
2406
2407        if (time_after(jiffies, tg->bio_cnt_reset_time) || tg->bio_cnt > 1024) {
2408                tg->bio_cnt_reset_time = tg->td->throtl_slice + jiffies;
2409                tg->bio_cnt /= 2;
2410                tg->bad_bio_cnt /= 2;
2411        }
2412}
2413#endif
2414
2415int blk_throtl_init(struct request_queue *q)
2416{
2417        struct throtl_data *td;
2418        int ret;
2419
2420        td = kzalloc_node(sizeof(*td), GFP_KERNEL, q->node);
2421        if (!td)
2422                return -ENOMEM;
2423        td->latency_buckets[READ] = __alloc_percpu(sizeof(struct latency_bucket) *
2424                LATENCY_BUCKET_SIZE, __alignof__(u64));
2425        if (!td->latency_buckets[READ]) {
2426                kfree(td);
2427                return -ENOMEM;
2428        }
2429        td->latency_buckets[WRITE] = __alloc_percpu(sizeof(struct latency_bucket) *
2430                LATENCY_BUCKET_SIZE, __alignof__(u64));
2431        if (!td->latency_buckets[WRITE]) {
2432                free_percpu(td->latency_buckets[READ]);
2433                kfree(td);
2434                return -ENOMEM;
2435        }
2436
2437        INIT_WORK(&td->dispatch_work, blk_throtl_dispatch_work_fn);
2438        throtl_service_queue_init(&td->service_queue);
2439
2440        q->td = td;
2441        td->queue = q;
2442
2443        td->limit_valid[LIMIT_MAX] = true;
2444        td->limit_index = LIMIT_MAX;
2445        td->low_upgrade_time = jiffies;
2446        td->low_downgrade_time = jiffies;
2447
2448        /* activate policy */
2449        ret = blkcg_activate_policy(q, &blkcg_policy_throtl);
2450        if (ret) {
2451                free_percpu(td->latency_buckets[READ]);
2452                free_percpu(td->latency_buckets[WRITE]);
2453                kfree(td);
2454        }
2455        return ret;
2456}
2457
2458void blk_throtl_exit(struct request_queue *q)
2459{
2460        BUG_ON(!q->td);
2461        throtl_shutdown_wq(q);
2462        blkcg_deactivate_policy(q, &blkcg_policy_throtl);
2463        free_percpu(q->td->latency_buckets[READ]);
2464        free_percpu(q->td->latency_buckets[WRITE]);
2465        kfree(q->td);
2466}
2467
2468void blk_throtl_register_queue(struct request_queue *q)
2469{
2470        struct throtl_data *td;
2471        int i;
2472
2473        td = q->td;
2474        BUG_ON(!td);
2475
2476        if (blk_queue_nonrot(q)) {
2477                td->throtl_slice = DFL_THROTL_SLICE_SSD;
2478                td->filtered_latency = LATENCY_FILTERED_SSD;
2479        } else {
2480                td->throtl_slice = DFL_THROTL_SLICE_HD;
2481                td->filtered_latency = LATENCY_FILTERED_HD;
2482                for (i = 0; i < LATENCY_BUCKET_SIZE; i++) {
2483                        td->avg_buckets[READ][i].latency = DFL_HD_BASELINE_LATENCY;
2484                        td->avg_buckets[WRITE][i].latency = DFL_HD_BASELINE_LATENCY;
2485                }
2486        }
2487#ifndef CONFIG_BLK_DEV_THROTTLING_LOW
2488        /* if no low limit, use previous default */
2489        td->throtl_slice = DFL_THROTL_SLICE_HD;
2490#endif
2491
2492        td->track_bio_latency = !queue_is_mq(q);
2493        if (!td->track_bio_latency)
2494                blk_stat_enable_accounting(q);
2495}
2496
2497#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
2498ssize_t blk_throtl_sample_time_show(struct request_queue *q, char *page)
2499{
2500        if (!q->td)
2501                return -EINVAL;
2502        return sprintf(page, "%u\n", jiffies_to_msecs(q->td->throtl_slice));
2503}
2504
2505ssize_t blk_throtl_sample_time_store(struct request_queue *q,
2506        const char *page, size_t count)
2507{
2508        unsigned long v;
2509        unsigned long t;
2510
2511        if (!q->td)
2512                return -EINVAL;
2513        if (kstrtoul(page, 10, &v))
2514                return -EINVAL;
2515        t = msecs_to_jiffies(v);
2516        if (t == 0 || t > MAX_THROTL_SLICE)
2517                return -EINVAL;
2518        q->td->throtl_slice = t;
2519        return count;
2520}
2521#endif
2522
2523static int __init throtl_init(void)
2524{
2525        kthrotld_workqueue = alloc_workqueue("kthrotld", WQ_MEM_RECLAIM, 0);
2526        if (!kthrotld_workqueue)
2527                panic("Failed to create kthrotld\n");
2528
2529        return blkcg_policy_register(&blkcg_policy_throtl);
2530}
2531
2532module_init(throtl_init);
2533