diff options
Diffstat (limited to 'block/blk-cgroup.h')
-rw-r--r-- | block/blk-cgroup.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h new file mode 100644 index 000000000000..ba5703f69b42 --- /dev/null +++ b/block/blk-cgroup.h | |||
@@ -0,0 +1,58 @@ | |||
1 | #ifndef _BLK_CGROUP_H | ||
2 | #define _BLK_CGROUP_H | ||
3 | /* | ||
4 | * Common Block IO controller cgroup interface | ||
5 | * | ||
6 | * Based on ideas and code from CFQ, CFS and BFQ: | ||
7 | * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk> | ||
8 | * | ||
9 | * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it> | ||
10 | * Paolo Valente <paolo.valente@unimore.it> | ||
11 | * | ||
12 | * Copyright (C) 2009 Vivek Goyal <vgoyal@redhat.com> | ||
13 | * Nauman Rafique <nauman@google.com> | ||
14 | */ | ||
15 | |||
16 | #include <linux/cgroup.h> | ||
17 | |||
18 | struct blkio_cgroup { | ||
19 | struct cgroup_subsys_state css; | ||
20 | unsigned int weight; | ||
21 | spinlock_t lock; | ||
22 | struct hlist_head blkg_list; | ||
23 | }; | ||
24 | |||
25 | struct blkio_group { | ||
26 | /* An rcu protected unique identifier for the group */ | ||
27 | void *key; | ||
28 | struct hlist_node blkcg_node; | ||
29 | }; | ||
30 | |||
31 | #define BLKIO_WEIGHT_MIN 100 | ||
32 | #define BLKIO_WEIGHT_MAX 1000 | ||
33 | #define BLKIO_WEIGHT_DEFAULT 500 | ||
34 | |||
35 | #ifdef CONFIG_BLK_CGROUP | ||
36 | extern struct blkio_cgroup blkio_root_cgroup; | ||
37 | extern struct blkio_cgroup *cgroup_to_blkio_cgroup(struct cgroup *cgroup); | ||
38 | extern void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg, | ||
39 | struct blkio_group *blkg, void *key); | ||
40 | extern int blkiocg_del_blkio_group(struct blkio_group *blkg); | ||
41 | extern struct blkio_group *blkiocg_lookup_group(struct blkio_cgroup *blkcg, | ||
42 | void *key); | ||
43 | #else | ||
44 | static inline struct blkio_cgroup * | ||
45 | cgroup_to_blkio_cgroup(struct cgroup *cgroup) { return NULL; } | ||
46 | |||
47 | static inline void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg, | ||
48 | struct blkio_group *blkg, void *key) | ||
49 | { | ||
50 | } | ||
51 | |||
52 | static inline int | ||
53 | blkiocg_del_blkio_group(struct blkio_group *blkg) { return 0; } | ||
54 | |||
55 | static inline struct blkio_group * | ||
56 | blkiocg_lookup_group(struct blkio_cgroup *blkcg, void *key) { return NULL; } | ||
57 | #endif | ||
58 | #endif /* _BLK_CGROUP_H */ | ||