* [PATCH v2 0/3] block: drive-by cleanups for block cgroup
@ 2020-04-30 15:03 Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 1/3] block: remove blk_queue_root_blkg Johannes Thumshirn
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2020-04-30 15:03 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block, Johannes Thumshirn
While reviewing Christoph's bio cleanup series, I noticed
blkcg_bio_issue_check() is way too big for an inline function. When I moved it
into block/blk-cgroup.c I noticed two other functions which only have one or
no callers at all, so I cleaned them up as well.
Changes to v1:
- Re-based onto for-5.8/block with Christoph's patches
- Removed white-space to not hurt Christoph's feelings
- Added Reviewed-bys
Johannes Thumshirn (3):
block: remove blk_queue_root_blkg
block: move blkcg_bio_issue_check out of line
block: open-code blkg_path in it's sole caller
block/bfq-cgroup.c | 3 +-
block/blk-cgroup.c | 57 +++++++++++++++++++++++++
include/linux/blk-cgroup.h | 87 +-------------------------------------
3 files changed, 60 insertions(+), 87 deletions(-)
--
2.24.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/3] block: remove blk_queue_root_blkg
2020-04-30 15:03 [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
@ 2020-04-30 15:03 ` Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 2/3] block: move blkcg_bio_issue_check out of line Johannes Thumshirn
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2020-04-30 15:03 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block, Johannes Thumshirn, Christoph Hellwig
blk_queue_root_blkg() has no callers, remove it.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
include/linux/blk-cgroup.h | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index 4deb8bb7b6af..a606767cdcc7 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -364,17 +364,6 @@ static inline struct blkcg_gq *blkg_lookup(struct blkcg *blkcg,
return __blkg_lookup(blkcg, q, false);
}
-/**
- * blk_queue_root_blkg - return blkg for the (blkcg_root, @q) pair
- * @q: request_queue of interest
- *
- * Lookup blkg for @q at the root level. See also blkg_lookup().
- */
-static inline struct blkcg_gq *blk_queue_root_blkg(struct request_queue *q)
-{
- return q->root_blkg;
-}
-
/**
* blkg_to_pdata - get policy private data
* @blkg: blkg of interest
@@ -709,8 +698,6 @@ static inline bool blk_cgroup_congested(void) { return false; }
static inline void blkcg_schedule_throttle(struct request_queue *q, bool use_memdelay) { }
static inline struct blkcg_gq *blkg_lookup(struct blkcg *blkcg, void *key) { return NULL; }
-static inline struct blkcg_gq *blk_queue_root_blkg(struct request_queue *q)
-{ return NULL; }
static inline int blkcg_init_queue(struct request_queue *q) { return 0; }
static inline void blkcg_exit_queue(struct request_queue *q) { }
static inline int blkcg_policy_register(struct blkcg_policy *pol) { return 0; }
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/3] block: move blkcg_bio_issue_check out of line
2020-04-30 15:03 [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 1/3] block: remove blk_queue_root_blkg Johannes Thumshirn
@ 2020-04-30 15:03 ` Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 3/3] block: open-code blkg_path in it's sole caller Johannes Thumshirn
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2020-04-30 15:03 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block, Johannes Thumshirn, Christoph Hellwig
blkcg_bio_issue_check() is way to big to be an inline function, move it to
the other blkcg related functions in block/blk-cgroup.c.
According to the bloat-o-meter this brings it's sole caller
generic_make_request_checks() down from 2417 to 1881 bytes (~22%).
$ ./scripts/bloat-o-meter -t vmlinux.old vmlinux
add/remove: 1/0 grow/shrink: 1/1 up/down: 667/-539 (128)
Function old new delta
blkcg_bio_issue_check - 664 +664
generic_make_request_checks.cold 45 48 +3
generic_make_request_checks 2372 1833 -539
Total: Before=9624970, After=9625098, chg +0.00%
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
block/blk-cgroup.c | 57 ++++++++++++++++++++++++++++++++++++
include/linux/blk-cgroup.h | 60 +-------------------------------------
2 files changed, 58 insertions(+), 59 deletions(-)
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index c5dc833212e1..88453cb866bb 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1706,6 +1706,63 @@ void blkcg_schedule_throttle(struct request_queue *q, bool use_memdelay)
set_notify_resume(current);
}
+bool blkcg_bio_issue_check(struct request_queue *q, struct bio *bio)
+{
+ struct blkcg_gq *blkg;
+ bool throtl = false;
+
+ rcu_read_lock();
+
+ if (!bio->bi_blkg) {
+ char b[BDEVNAME_SIZE];
+
+ WARN_ONCE(1,
+ "no blkg associated for bio on block-device: %s\n",
+ bio_devname(bio, b));
+ bio_associate_blkg(bio);
+ }
+
+ blkg = bio->bi_blkg;
+
+ throtl = blk_throtl_bio(q, blkg, bio);
+ if (!throtl) {
+ struct blkg_iostat_set *bis;
+ int rwd, cpu;
+
+ if (op_is_discard(bio->bi_opf))
+ rwd = BLKG_IOSTAT_DISCARD;
+ else if (op_is_write(bio->bi_opf))
+ rwd = BLKG_IOSTAT_WRITE;
+ else
+ rwd = BLKG_IOSTAT_READ;
+
+ cpu = get_cpu();
+ bis = per_cpu_ptr(blkg->iostat_cpu, cpu);
+ u64_stats_update_begin(&bis->sync);
+
+ /*
+ * If the bio is flagged with BIO_CGROUP_ACCT it means this is a
+ * split bio and we would have already accounted for the size of
+ * the bio.
+ */
+ if (!bio_flagged(bio, BIO_CGROUP_ACCT)) {
+ bio_set_flag(bio, BIO_CGROUP_ACCT);
+ bis->cur.bytes[rwd] += bio->bi_iter.bi_size;
+ }
+ bis->cur.ios[rwd]++;
+
+ u64_stats_update_end(&bis->sync);
+ if (cgroup_subsys_on_dfl(io_cgrp_subsys))
+ cgroup_rstat_updated(blkg->blkcg->css.cgroup, cpu);
+ put_cpu();
+ }
+
+ blkcg_bio_issue_init(bio);
+
+ rcu_read_unlock();
+ return !throtl;
+}
+
/**
* blkcg_add_delay - add delay to this blkg
* @blkg: blkg of interest
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index a606767cdcc7..b356d4eed08d 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -559,65 +559,6 @@ static inline void blkcg_bio_issue_init(struct bio *bio)
bio_issue_init(&bio->bi_issue, bio_sectors(bio));
}
-static inline bool blkcg_bio_issue_check(struct request_queue *q,
- struct bio *bio)
-{
- struct blkcg_gq *blkg;
- bool throtl = false;
-
- rcu_read_lock();
-
- if (!bio->bi_blkg) {
- char b[BDEVNAME_SIZE];
-
- WARN_ONCE(1,
- "no blkg associated for bio on block-device: %s\n",
- bio_devname(bio, b));
- bio_associate_blkg(bio);
- }
-
- blkg = bio->bi_blkg;
-
- throtl = blk_throtl_bio(q, blkg, bio);
-
- if (!throtl) {
- struct blkg_iostat_set *bis;
- int rwd, cpu;
-
- if (op_is_discard(bio->bi_opf))
- rwd = BLKG_IOSTAT_DISCARD;
- else if (op_is_write(bio->bi_opf))
- rwd = BLKG_IOSTAT_WRITE;
- else
- rwd = BLKG_IOSTAT_READ;
-
- cpu = get_cpu();
- bis = per_cpu_ptr(blkg->iostat_cpu, cpu);
- u64_stats_update_begin(&bis->sync);
-
- /*
- * If the bio is flagged with BIO_CGROUP_ACCT it means this is a
- * split bio and we would have already accounted for the size of
- * the bio.
- */
- if (!bio_flagged(bio, BIO_CGROUP_ACCT)) {
- bio_set_flag(bio, BIO_CGROUP_ACCT);
- bis->cur.bytes[rwd] += bio->bi_iter.bi_size;
- }
- bis->cur.ios[rwd]++;
-
- u64_stats_update_end(&bis->sync);
- if (cgroup_subsys_on_dfl(io_cgrp_subsys))
- cgroup_rstat_updated(blkg->blkcg->css.cgroup, cpu);
- put_cpu();
- }
-
- blkcg_bio_issue_init(bio);
-
- rcu_read_unlock();
- return !throtl;
-}
-
static inline void blkcg_use_delay(struct blkcg_gq *blkg)
{
if (atomic_add_return(1, &blkg->use_delay) == 1)
@@ -668,6 +609,7 @@ static inline void blkcg_clear_delay(struct blkcg_gq *blkg)
}
}
+bool blkcg_bio_issue_check(struct request_queue *q, struct bio *bio);
void blkcg_add_delay(struct blkcg_gq *blkg, u64 now, u64 delta);
void blkcg_schedule_throttle(struct request_queue *q, bool use_memdelay);
void blkcg_maybe_throttle_current(void);
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/3] block: open-code blkg_path in it's sole caller
2020-04-30 15:03 [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 1/3] block: remove blk_queue_root_blkg Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 2/3] block: move blkcg_bio_issue_check out of line Johannes Thumshirn
@ 2020-04-30 15:03 ` Johannes Thumshirn
2020-05-04 15:31 ` [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
2020-05-08 10:33 ` Johannes Thumshirn
4 siblings, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2020-04-30 15:03 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block, Johannes Thumshirn, Christoph Hellwig
blkg_path() is a trivial one-line helper that only has a single caller,
bfq_bic_update_cgroup().
Remove blkg_path() and open-code it in bfq_bic_update_cgroup().
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
block/bfq-cgroup.c | 3 ++-
include/linux/blk-cgroup.h | 14 --------------
2 files changed, 2 insertions(+), 15 deletions(-)
diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
index 68882b9b8f11..8fe7d47eb4dd 100644
--- a/block/bfq-cgroup.c
+++ b/block/bfq-cgroup.c
@@ -794,7 +794,8 @@ void bfq_bic_update_cgroup(struct bfq_io_cq *bic, struct bio *bio)
* refcounter for bfqg, to let it disappear only after no
* bfq_queue refers to it any longer.
*/
- blkg_path(bfqg_to_blkg(bfqg), bfqg->blkg_path, sizeof(bfqg->blkg_path));
+ cgroup_path(bfqg_to_blkg(bfqg)->blkcg->css.cgroup, bfqg->blkg_path,
+ sizeof(bfqg->blkg_path));
bic->blkcg_serial_nr = serial_nr;
out:
rcu_read_unlock();
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index b356d4eed08d..3e61298fae6a 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -433,19 +433,6 @@ static inline void blkcg_unpin_online(struct blkcg *blkcg)
} while (blkcg);
}
-/**
- * blkg_path - format cgroup path of blkg
- * @blkg: blkg of interest
- * @buf: target buffer
- * @buflen: target buffer length
- *
- * Format the path of the cgroup of @blkg into @buf.
- */
-static inline int blkg_path(struct blkcg_gq *blkg, char *buf, int buflen)
-{
- return cgroup_path(blkg->blkcg->css.cgroup, buf, buflen);
-}
-
/**
* blkg_get - get a blkg reference
* @blkg: blkg to get
@@ -655,7 +642,6 @@ static inline struct blkcg *bio_blkcg(struct bio *bio) { return NULL; }
static inline struct blkg_policy_data *blkg_to_pd(struct blkcg_gq *blkg,
struct blkcg_policy *pol) { return NULL; }
static inline struct blkcg_gq *pd_to_blkg(struct blkg_policy_data *pd) { return NULL; }
-static inline char *blkg_path(struct blkcg_gq *blkg) { return NULL; }
static inline void blkg_get(struct blkcg_gq *blkg) { }
static inline void blkg_put(struct blkcg_gq *blkg) { }
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] block: drive-by cleanups for block cgroup
2020-04-30 15:03 [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
` (2 preceding siblings ...)
2020-04-30 15:03 ` [PATCH v2 3/3] block: open-code blkg_path in it's sole caller Johannes Thumshirn
@ 2020-05-04 15:31 ` Johannes Thumshirn
2020-05-08 10:33 ` Johannes Thumshirn
4 siblings, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2020-05-04 15:31 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block
On 30/04/2020 17:04, Johannes Thumshirn wrote:
> While reviewing Christoph's bio cleanup series, I noticed
> blkcg_bio_issue_check() is way too big for an inline function. When I moved it
> into block/blk-cgroup.c I noticed two other functions which only have one or
> no callers at all, so I cleaned them up as well.
>
>
> Changes to v1:
> - Re-based onto for-5.8/block with Christoph's patches
> - Removed white-space to not hurt Christoph's feelings
> - Added Reviewed-bys
>
> Johannes Thumshirn (3):
> block: remove blk_queue_root_blkg
> block: move blkcg_bio_issue_check out of line
> block: open-code blkg_path in it's sole caller
>
> block/bfq-cgroup.c | 3 +-
> block/blk-cgroup.c | 57 +++++++++++++++++++++++++
> include/linux/blk-cgroup.h | 87 +-------------------------------------
> 3 files changed, 60 insertions(+), 87 deletions(-)
>
Jens, any comments?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] block: drive-by cleanups for block cgroup
2020-04-30 15:03 [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
` (3 preceding siblings ...)
2020-05-04 15:31 ` [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
@ 2020-05-08 10:33 ` Johannes Thumshirn
4 siblings, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2020-05-08 10:33 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block
On 30/04/2020 17:04, Johannes Thumshirn wrote:
> While reviewing Christoph's bio cleanup series, I noticed
> blkcg_bio_issue_check() is way too big for an inline function. When I moved it
> into block/blk-cgroup.c I noticed two other functions which only have one or
> no callers at all, so I cleaned them up as well.
>
>
> Changes to v1:
> - Re-based onto for-5.8/block with Christoph's patches
> - Removed white-space to not hurt Christoph's feelings
> - Added Reviewed-bys
>
> Johannes Thumshirn (3):
> block: remove blk_queue_root_blkg
> block: move blkcg_bio_issue_check out of line
> block: open-code blkg_path in it's sole caller
>
> block/bfq-cgroup.c | 3 +-
> block/blk-cgroup.c | 57 +++++++++++++++++++++++++
> include/linux/blk-cgroup.h | 87 +-------------------------------------
> 3 files changed, 60 insertions(+), 87 deletions(-)
>
Ping?
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-05-08 10:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-30 15:03 [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 1/3] block: remove blk_queue_root_blkg Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 2/3] block: move blkcg_bio_issue_check out of line Johannes Thumshirn
2020-04-30 15:03 ` [PATCH v2 3/3] block: open-code blkg_path in it's sole caller Johannes Thumshirn
2020-05-04 15:31 ` [PATCH v2 0/3] block: drive-by cleanups for block cgroup Johannes Thumshirn
2020-05-08 10:33 ` Johannes Thumshirn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).