mdsmap.h revision 2f2dc053404febedc9c273452d9d518fb31fde72
12f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#ifndef _FS_CEPH_MDSMAP_H
22f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#define _FS_CEPH_MDSMAP_H
32f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
42f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#include "types.h"
52f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
62f2dc053404febedc9c273452d9d518fb31fde72Sage Weil/*
72f2dc053404febedc9c273452d9d518fb31fde72Sage Weil * mds map - describe servers in the mds cluster.
82f2dc053404febedc9c273452d9d518fb31fde72Sage Weil *
92f2dc053404febedc9c273452d9d518fb31fde72Sage Weil * we limit fields to those the client actually xcares about
102f2dc053404febedc9c273452d9d518fb31fde72Sage Weil */
112f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstruct ceph_mds_info {
122f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	struct ceph_entity_addr addr;
132f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	s32 state;
142f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	int num_export_targets;
152f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 *export_targets;
162f2dc053404febedc9c273452d9d518fb31fde72Sage Weil};
172f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
182f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstruct ceph_mdsmap {
192f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 m_epoch, m_client_epoch, m_last_failure;
202f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 m_root;
212f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 m_session_timeout;          /* seconds */
222f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 m_session_autoclose;        /* seconds */
232f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u64 m_max_file_size;
242f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 m_max_mds;                  /* size of m_addr, m_state arrays */
252f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	struct ceph_mds_info *m_info;
262f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
272f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	/* which object pools file data can be stored in */
282f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	int m_num_data_pg_pools;
292f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 *m_data_pg_pools;
302f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	u32 m_cas_pg_pool;
312f2dc053404febedc9c273452d9d518fb31fde72Sage Weil};
322f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
332f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstatic inline struct ceph_entity_addr *
342f2dc053404febedc9c273452d9d518fb31fde72Sage Weilceph_mdsmap_get_addr(struct ceph_mdsmap *m, int w)
352f2dc053404febedc9c273452d9d518fb31fde72Sage Weil{
362f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	if (w >= m->m_max_mds)
372f2dc053404febedc9c273452d9d518fb31fde72Sage Weil		return NULL;
382f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	return &m->m_info[w].addr;
392f2dc053404febedc9c273452d9d518fb31fde72Sage Weil}
402f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
412f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstatic inline int ceph_mdsmap_get_state(struct ceph_mdsmap *m, int w)
422f2dc053404febedc9c273452d9d518fb31fde72Sage Weil{
432f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	BUG_ON(w < 0);
442f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	if (w >= m->m_max_mds)
452f2dc053404febedc9c273452d9d518fb31fde72Sage Weil		return CEPH_MDS_STATE_DNE;
462f2dc053404febedc9c273452d9d518fb31fde72Sage Weil	return m->m_info[w].state;
472f2dc053404febedc9c273452d9d518fb31fde72Sage Weil}
482f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
492f2dc053404febedc9c273452d9d518fb31fde72Sage Weilextern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m);
502f2dc053404febedc9c273452d9d518fb31fde72Sage Weilextern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end);
512f2dc053404febedc9c273452d9d518fb31fde72Sage Weilextern void ceph_mdsmap_destroy(struct ceph_mdsmap *m);
522f2dc053404febedc9c273452d9d518fb31fde72Sage Weil
532f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#endif
54