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 blkcg_maybe_throttle_current(void)40static inline void blkcg_maybe_throttle_current(void) { } blk_cgroup_congested(void)41static inline bool blk_cgroup_congested(void) { return false; } bio_blkcg_css(struct bio * bio)42static 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 */ 52