aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2017-01-31 09:55:06 -0500
committerIlya Dryomov <idryomov@gmail.com>2017-02-20 06:16:11 -0500
commit743efcffffc6620ab44ea9ec67c7e4e28dfa7742 (patch)
treea087b21bd95308161d8b14269452efd1e798949d /include/linux
parent66a0e2d579dbec5c676cfe446234ffebb267c564 (diff)
crush: merge working data and scratch
Much like Arlo Guthrie, I decided that one big pile is better than two little piles. Reflects ceph.git commit 95c2df6c7e0b22d2ea9d91db500cf8b9441c73ba. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ceph/osdmap.h3
-rw-r--r--include/linux/crush/mapper.h14
2 files changed, 14 insertions, 3 deletions
diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
index cef1cab789b9..8cebdc4158c3 100644
--- a/include/linux/ceph/osdmap.h
+++ b/include/linux/ceph/osdmap.h
@@ -173,8 +173,7 @@ struct ceph_osdmap {
173 * the list of osds that store+replicate them. */ 173 * the list of osds that store+replicate them. */
174 struct crush_map *crush; 174 struct crush_map *crush;
175 175
176 struct mutex crush_scratch_mutex; 176 struct mutex crush_workspace_mutex;
177 int crush_scratch_ary[CEPH_PG_MAX_SIZE * 3];
178 void *crush_workspace; 177 void *crush_workspace;
179}; 178};
180 179
diff --git a/include/linux/crush/mapper.h b/include/linux/crush/mapper.h
index 3303c7fd8a31..c95e19e1ff11 100644
--- a/include/linux/crush/mapper.h
+++ b/include/linux/crush/mapper.h
@@ -15,7 +15,19 @@ extern int crush_do_rule(const struct crush_map *map,
15 int ruleno, 15 int ruleno,
16 int x, int *result, int result_max, 16 int x, int *result, int result_max,
17 const __u32 *weights, int weight_max, 17 const __u32 *weights, int weight_max,
18 void *cwin, int *scratch); 18 void *cwin);
19
20/*
21 * Returns the exact amount of workspace that will need to be used
22 * for a given combination of crush_map and result_max. The caller can
23 * then allocate this much on its own, either on the stack, in a
24 * per-thread long-lived buffer, or however it likes.
25 */
26static inline size_t crush_work_size(const struct crush_map *map,
27 int result_max)
28{
29 return map->working_size + result_max * 3 * sizeof(__u32);
30}
19 31
20void crush_init_workspace(const struct crush_map *map, void *v); 32void crush_init_workspace(const struct crush_map *map, void *v);
21 33