]> www.infradead.org Git - users/hch/block.git/commitdiff
blk-cgroup: pass a gendisk to blkg_lookup
authorChristoph Hellwig <hch@lst.de>
Fri, 9 Sep 2022 09:51:38 +0000 (11:51 +0200)
committerChristoph Hellwig <hch@lst.de>
Sun, 11 Sep 2022 06:07:35 +0000 (08:07 +0200)
Pass a gendisk to blkg_lookup and use that to find the match as part
of phasing out usage of the request_queue in the blk-cgroup code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
block/blk-cgroup.c
block/blk-cgroup.h

index 8dcfcb6c582a8ea3d88fec4fc43f9e3522e07371..2fd232a79d9bd7864ab8a5312426b166fc1af249 100644 (file)
@@ -307,7 +307,7 @@ static struct blkcg_gq *blkg_create(struct blkcg *blkcg, struct gendisk *disk,
 
        /* link parent */
        if (blkcg_parent(blkcg)) {
-               blkg->parent = blkg_lookup(blkcg_parent(blkcg), disk->queue);
+               blkg->parent = blkg_lookup(blkcg_parent(blkcg), disk);
                if (WARN_ON_ONCE(!blkg->parent)) {
                        ret = -ENODEV;
                        goto err_put_css;
@@ -376,12 +376,12 @@ static struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg,
 
        WARN_ON_ONCE(!rcu_read_lock_held());
 
-       blkg = blkg_lookup(blkcg, q);
+       blkg = blkg_lookup(blkcg, disk);
        if (blkg)
                return blkg;
 
        spin_lock_irqsave(&q->queue_lock, flags);
-       blkg = blkg_lookup(blkcg, q);
+       blkg = blkg_lookup(blkcg, disk);
        if (blkg) {
                blkg_update_hint(blkcg, blkg);
                goto found;
@@ -398,7 +398,7 @@ static struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg,
                struct blkcg_gq *ret_blkg = q->root_blkg;
 
                while (parent) {
-                       blkg = blkg_lookup(parent, q);
+                       blkg = blkg_lookup(parent, disk);
                        if (blkg) {
                                /* remember closest blkg */
                                ret_blkg = blkg;
@@ -679,7 +679,7 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
                goto fail_unlock;
        }
 
-       blkg = blkg_lookup(blkcg, q);
+       blkg = blkg_lookup(blkcg, disk);
        if (blkg) {
                blkg_update_hint(blkcg, blkg);
                goto success;
@@ -695,7 +695,7 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
                struct blkcg_gq *new_blkg;
 
                parent = blkcg_parent(blkcg);
-               while (parent && !blkg_lookup(parent, q)) {
+               while (parent && !blkg_lookup(parent, disk)) {
                        pos = parent;
                        parent = blkcg_parent(parent);
                }
@@ -725,7 +725,7 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
                        goto fail_preloaded;
                }
 
-               blkg = blkg_lookup(pos, q);
+               blkg = blkg_lookup(pos, disk);
                if (blkg) {
                        blkg_update_hint(pos, blkg);
                        blkg_free(new_blkg);
@@ -1776,7 +1776,7 @@ void blkcg_maybe_throttle_current(void)
        blkcg = css_to_blkcg(blkcg_css());
        if (!blkcg)
                goto out;
-       blkg = blkg_lookup(blkcg, q);
+       blkg = blkg_lookup(blkcg, q->disk);
        if (!blkg)
                goto out;
        if (!blkg_tryget(blkg))
index e9e42dda0e0f8e44bedb83d0fc00ac5684e3da2a..589e3bb134117f36bbd0df9df620f9f4c12691de 100644 (file)
@@ -223,30 +223,30 @@ static inline bool bio_issue_as_root_blkg(struct bio *bio)
 }
 
 /**
- * blkg_lookup - lookup blkg for the specified blkcg - q pair
+ * blkg_lookup - lookup blkg for the specified blkcg - disk pair
  * @blkcg: blkcg of interest
- * @q: request_queue of interest
+ * @disk: gendisk of interest
  *
- * Lookup blkg for the @blkcg - @q pair.
+ * Lookup blkg for the @blkcg - @disk pair.
 
  * Must be called in a RCU critical section.
  */
 static inline struct blkcg_gq *blkg_lookup(struct blkcg *blkcg,
-                                          struct request_queue *q)
+                                          struct gendisk *disk)
 {
        struct blkcg_gq *blkg;
 
        WARN_ON_ONCE(!rcu_read_lock_held());
 
        if (blkcg == &blkcg_root)
-               return q->root_blkg;
+               return disk->queue->root_blkg;
 
        blkg = rcu_dereference(blkcg->blkg_hint);
-       if (blkg && blkg->disk->queue == q)
+       if (blkg && blkg->disk == disk)
                return blkg;
 
-       blkg = radix_tree_lookup(&blkcg->blkg_tree, q->id);
-       if (blkg && blkg->disk->queue != q)
+       blkg = radix_tree_lookup(&blkcg->blkg_tree, disk->queue->id);
+       if (blkg && blkg->disk != disk)
                blkg = NULL;
        return blkg;
 }
@@ -346,7 +346,7 @@ static inline void blkg_put(struct blkcg_gq *blkg)
 #define blkg_for_each_descendant_pre(d_blkg, pos_css, p_blkg)          \
        css_for_each_descendant_pre((pos_css), &(p_blkg)->blkcg->css)   \
                if (((d_blkg) = blkg_lookup(css_to_blkcg(pos_css),      \
-                                           (p_blkg)->disk->queue)))
+                                           (p_blkg)->disk)))
 
 /**
  * blkg_for_each_descendant_post - post-order walk of a blkg's descendants
@@ -361,7 +361,7 @@ static inline void blkg_put(struct blkcg_gq *blkg)
 #define blkg_for_each_descendant_post(d_blkg, pos_css, p_blkg)         \
        css_for_each_descendant_post((pos_css), &(p_blkg)->blkcg->css)  \
                if (((d_blkg) = blkg_lookup(css_to_blkcg(pos_css),      \
-                                           (p_blkg)->disk->queue)))
+                                           (p_blkg)->disk)))
 
 bool __blkcg_punt_bio_submit(struct bio *bio);