summaryrefslogtreecommitdiffstats
path: root/fs/ceph/osdmap.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-02-16 15:55:03 -0800
committerSage Weil <sage@newdream.net>2010-02-17 10:02:49 -0800
commit4fc51be8fa7043ff9a1e34fef0e99214373332ac (patch)
treebeba3bc83b5a07a16bb63c6e80713cb2b42bf4fb /fs/ceph/osdmap.h
parent9794b146fa7b93f8ab74fb62d67fdefad760769f (diff)
ceph: use rbtree for pg pools; decode new osdmap format
Since we can now create and destroy pg pools, the pool ids will be sparse, and an array no longer makes sense for looking up by pool id. Use an rbtree instead. The OSDMap encoding also no longer has a max pool count (previously used to allocate the array). There is a new pool_max, that is the largest pool id we've ever used, although we don't actually need it in the client. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/osdmap.h')
-rw-r--r--fs/ceph/osdmap.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/ceph/osdmap.h b/fs/ceph/osdmap.h
index c4af8418aa0..1fb55afb264 100644
--- a/fs/ceph/osdmap.h
+++ b/fs/ceph/osdmap.h
@@ -19,6 +19,8 @@
* the change between two successive epochs, or as a fully encoded map.
*/
struct ceph_pg_pool_info {
+ struct rb_node node;
+ int id;
struct ceph_pg_pool v;
int pg_num_mask, pgp_num_mask, lpg_num_mask, lpgp_num_mask;
};
@@ -44,9 +46,8 @@ struct ceph_osdmap {
struct ceph_entity_addr *osd_addr;
struct rb_root pg_temp;
-
- u32 num_pools;
- struct ceph_pg_pool_info *pg_pool;
+ struct rb_root pg_pools;
+ u32 pool_max;
/* the CRUSH map specifies the mapping of placement groups to
* the list of osds that store+replicate them. */