diff options
Diffstat (limited to 'block/blk-cgroup.h')
-rw-r--r-- | block/blk-cgroup.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/block/blk-cgroup.h b/block/blk-cgroup.h index 2b866ec1dcea..c8de2598429d 100644 --- a/block/blk-cgroup.h +++ b/block/blk-cgroup.h | |||
@@ -15,6 +15,10 @@ | |||
15 | 15 | ||
16 | #include <linux/cgroup.h> | 16 | #include <linux/cgroup.h> |
17 | 17 | ||
18 | enum blkio_policy_id { | ||
19 | BLKIO_POLICY_PROP = 0, /* Proportional Bandwidth division */ | ||
20 | }; | ||
21 | |||
18 | #if defined(CONFIG_BLK_CGROUP) || defined(CONFIG_BLK_CGROUP_MODULE) | 22 | #if defined(CONFIG_BLK_CGROUP) || defined(CONFIG_BLK_CGROUP_MODULE) |
19 | 23 | ||
20 | #ifndef CONFIG_BLK_CGROUP | 24 | #ifndef CONFIG_BLK_CGROUP |
@@ -65,6 +69,25 @@ enum blkg_state_flags { | |||
65 | BLKG_empty, | 69 | BLKG_empty, |
66 | }; | 70 | }; |
67 | 71 | ||
72 | /* cgroup files owned by proportional weight policy */ | ||
73 | enum blkcg_file_name_prop { | ||
74 | BLKIO_PROP_weight = 1, | ||
75 | BLKIO_PROP_weight_device, | ||
76 | BLKIO_PROP_io_service_bytes, | ||
77 | BLKIO_PROP_io_serviced, | ||
78 | BLKIO_PROP_time, | ||
79 | BLKIO_PROP_sectors, | ||
80 | BLKIO_PROP_io_service_time, | ||
81 | BLKIO_PROP_io_wait_time, | ||
82 | BLKIO_PROP_io_merged, | ||
83 | BLKIO_PROP_io_queued, | ||
84 | BLKIO_PROP_avg_queue_size, | ||
85 | BLKIO_PROP_group_wait_time, | ||
86 | BLKIO_PROP_idle_time, | ||
87 | BLKIO_PROP_empty_time, | ||
88 | BLKIO_PROP_dequeue, | ||
89 | }; | ||
90 | |||
68 | struct blkio_cgroup { | 91 | struct blkio_cgroup { |
69 | struct cgroup_subsys_state css; | 92 | struct cgroup_subsys_state css; |
70 | unsigned int weight; | 93 | unsigned int weight; |
@@ -112,6 +135,8 @@ struct blkio_group { | |||
112 | char path[128]; | 135 | char path[128]; |
113 | /* The device MKDEV(major, minor), this group has been created for */ | 136 | /* The device MKDEV(major, minor), this group has been created for */ |
114 | dev_t dev; | 137 | dev_t dev; |
138 | /* policy which owns this blk group */ | ||
139 | enum blkio_policy_id plid; | ||
115 | 140 | ||
116 | /* Need to serialize the stats in the case of reset/update */ | 141 | /* Need to serialize the stats in the case of reset/update */ |
117 | spinlock_t stats_lock; | 142 | spinlock_t stats_lock; |
@@ -122,6 +147,10 @@ struct blkio_policy_node { | |||
122 | struct list_head node; | 147 | struct list_head node; |
123 | dev_t dev; | 148 | dev_t dev; |
124 | unsigned int weight; | 149 | unsigned int weight; |
150 | /* This node belongs to max bw policy or porportional weight policy */ | ||
151 | enum blkio_policy_id plid; | ||
152 | /* cgroup file to which this rule belongs to */ | ||
153 | int fileid; | ||
125 | }; | 154 | }; |
126 | 155 | ||
127 | extern unsigned int blkcg_get_weight(struct blkio_cgroup *blkcg, | 156 | extern unsigned int blkcg_get_weight(struct blkio_cgroup *blkcg, |
@@ -139,6 +168,7 @@ struct blkio_policy_ops { | |||
139 | struct blkio_policy_type { | 168 | struct blkio_policy_type { |
140 | struct list_head list; | 169 | struct list_head list; |
141 | struct blkio_policy_ops ops; | 170 | struct blkio_policy_ops ops; |
171 | enum blkio_policy_id plid; | ||
142 | }; | 172 | }; |
143 | 173 | ||
144 | /* Blkio controller policy registration */ | 174 | /* Blkio controller policy registration */ |
@@ -212,7 +242,8 @@ static inline void blkiocg_set_start_empty_time(struct blkio_group *blkg) {} | |||
212 | extern struct blkio_cgroup blkio_root_cgroup; | 242 | extern struct blkio_cgroup blkio_root_cgroup; |
213 | extern struct blkio_cgroup *cgroup_to_blkio_cgroup(struct cgroup *cgroup); | 243 | extern struct blkio_cgroup *cgroup_to_blkio_cgroup(struct cgroup *cgroup); |
214 | extern void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg, | 244 | extern void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg, |
215 | struct blkio_group *blkg, void *key, dev_t dev); | 245 | struct blkio_group *blkg, void *key, dev_t dev, |
246 | enum blkio_policy_id plid); | ||
216 | extern int blkiocg_del_blkio_group(struct blkio_group *blkg); | 247 | extern int blkiocg_del_blkio_group(struct blkio_group *blkg); |
217 | extern struct blkio_group *blkiocg_lookup_group(struct blkio_cgroup *blkcg, | 248 | extern struct blkio_group *blkiocg_lookup_group(struct blkio_cgroup *blkcg, |
218 | void *key); | 249 | void *key); |
@@ -234,7 +265,8 @@ static inline struct blkio_cgroup * | |||
234 | cgroup_to_blkio_cgroup(struct cgroup *cgroup) { return NULL; } | 265 | cgroup_to_blkio_cgroup(struct cgroup *cgroup) { return NULL; } |
235 | 266 | ||
236 | static inline void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg, | 267 | static inline void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg, |
237 | struct blkio_group *blkg, void *key, dev_t dev) {} | 268 | struct blkio_group *blkg, void *key, dev_t dev, |
269 | enum blkio_policy_id plid) {} | ||
238 | 270 | ||
239 | static inline int | 271 | static inline int |
240 | blkiocg_del_blkio_group(struct blkio_group *blkg) { return 0; } | 272 | blkiocg_del_blkio_group(struct blkio_group *blkg) { return 0; } |