Linux 6.7-rc7
[linux-modified.git] / include / linux / blk-cgroup.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BLK_CGROUP_H
3 #define _BLK_CGROUP_H
4 /*
5  * Common Block IO controller cgroup interface
6  *
7  * Based on ideas and code from CFQ, CFS and BFQ:
8  * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
9  *
10  * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
11  *                    Paolo Valente <paolo.valente@unimore.it>
12  *
13  * Copyright (C) 2009 Vivek Goyal <vgoyal@redhat.com>
14  *                    Nauman Rafique <nauman@google.com>
15  */
16
17 #include <linux/types.h>
18
19 struct bio;
20 struct cgroup_subsys_state;
21 struct gendisk;
22
23 #define FC_APPID_LEN              129
24
25 #ifdef CONFIG_BLK_CGROUP
26 extern struct cgroup_subsys_state * const blkcg_root_css;
27
28 void blkcg_schedule_throttle(struct gendisk *disk, bool use_memdelay);
29 void blkcg_maybe_throttle_current(void);
30 bool blk_cgroup_congested(void);
31 void blkcg_pin_online(struct cgroup_subsys_state *blkcg_css);
32 void blkcg_unpin_online(struct cgroup_subsys_state *blkcg_css);
33 struct list_head *blkcg_get_cgwb_list(struct cgroup_subsys_state *css);
34 struct cgroup_subsys_state *bio_blkcg_css(struct bio *bio);
35
36 #else   /* CONFIG_BLK_CGROUP */
37
38 #define blkcg_root_css  ((struct cgroup_subsys_state *)ERR_PTR(-EINVAL))
39
40 static inline void blkcg_maybe_throttle_current(void) { }
41 static inline bool blk_cgroup_congested(void) { return false; }
42 static inline struct cgroup_subsys_state *bio_blkcg_css(struct bio *bio)
43 {
44         return NULL;
45 }
46 #endif  /* CONFIG_BLK_CGROUP */
47
48 int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len);
49 char *blkcg_get_fc_appid(struct bio *bio);
50
51 #endif  /* _BLK_CGROUP_H */