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