aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-cgroup.h
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@redhat.com>2009-12-03 12:59:42 -0500
committerJens Axboe <jens.axboe@oracle.com>2009-12-03 13:28:51 -0500
commit31e4c28d95e64f2d5d3c497a3ecf37c62de635b4 (patch)
treeffbb99b2565c4bdd4921fd7077164e7fc295b2bc /block/blk-cgroup.h
parent1fa8f6d68b5c8ca0a608fd8d296c5f07ac788cd6 (diff)
blkio: Introduce blkio controller cgroup interface
o This is basic implementation of blkio controller cgroup interface. This is the common interface visible to user space and should be used by different IO control policies as we implement those. Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-cgroup.h')
-rw-r--r--block/blk-cgroup.h58
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
18struct blkio_cgroup {
19 struct cgroup_subsys_state css;
20 unsigned int weight;
21 spinlock_t lock;
22 struct hlist_head blkg_list;
23};
24
25struct 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
36extern struct blkio_cgroup blkio_root_cgroup;
37extern struct blkio_cgroup *cgroup_to_blkio_cgroup(struct cgroup *cgroup);
38extern void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg,
39 struct blkio_group *blkg, void *key);
40extern int blkiocg_del_blkio_group(struct blkio_group *blkg);
41extern struct blkio_group *blkiocg_lookup_group(struct blkio_cgroup *blkcg,
42 void *key);
43#else
44static inline struct blkio_cgroup *
45cgroup_to_blkio_cgroup(struct cgroup *cgroup) { return NULL; }
46
47static inline void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg,
48 struct blkio_group *blkg, void *key)
49{
50}
51
52static inline int
53blkiocg_del_blkio_group(struct blkio_group *blkg) { return 0; }
54
55static inline struct blkio_group *
56blkiocg_lookup_group(struct blkio_cgroup *blkcg, void *key) { return NULL; }
57#endif
58#endif /* _BLK_CGROUP_H */