12f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#ifndef _FS_CEPH_MDSMAP_H 22f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#define _FS_CEPH_MDSMAP_H 32f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 4187f1882b5b0748b3c4c22274663fdb372ac0452Paul Gortmaker#include <linux/bug.h> 5a1ce39288e6fbefdd8d607021d02384eb4a20b99David Howells#include <linux/ceph/types.h> 62f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 72f2dc053404febedc9c273452d9d518fb31fde72Sage Weil/* 82f2dc053404febedc9c273452d9d518fb31fde72Sage Weil * mds map - describe servers in the mds cluster. 92f2dc053404febedc9c273452d9d518fb31fde72Sage Weil * 102f2dc053404febedc9c273452d9d518fb31fde72Sage Weil * we limit fields to those the client actually xcares about 112f2dc053404febedc9c273452d9d518fb31fde72Sage Weil */ 122f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstruct ceph_mds_info { 1394045e115ee72aee3b17295791da07078f2f778cSage Weil u64 global_id; 142f2dc053404febedc9c273452d9d518fb31fde72Sage Weil struct ceph_entity_addr addr; 152f2dc053404febedc9c273452d9d518fb31fde72Sage Weil s32 state; 162f2dc053404febedc9c273452d9d518fb31fde72Sage Weil int num_export_targets; 170deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil bool laggy; 182f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u32 *export_targets; 192f2dc053404febedc9c273452d9d518fb31fde72Sage Weil}; 202f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 212f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstruct ceph_mdsmap { 222f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u32 m_epoch, m_client_epoch, m_last_failure; 232f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u32 m_root; 242f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u32 m_session_timeout; /* seconds */ 252f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u32 m_session_autoclose; /* seconds */ 262f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u64 m_max_file_size; 272f2dc053404febedc9c273452d9d518fb31fde72Sage Weil u32 m_max_mds; /* size of m_addr, m_state arrays */ 282f2dc053404febedc9c273452d9d518fb31fde72Sage Weil struct ceph_mds_info *m_info; 292f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 302f2dc053404febedc9c273452d9d518fb31fde72Sage Weil /* which object pools file data can be stored in */ 312f2dc053404febedc9c273452d9d518fb31fde72Sage Weil int m_num_data_pg_pools; 324f6a7e5ee1393ec4b243b39dac9f36992d161540Sage Weil u64 *m_data_pg_pools; 334f6a7e5ee1393ec4b243b39dac9f36992d161540Sage Weil u64 m_cas_pg_pool; 342f2dc053404febedc9c273452d9d518fb31fde72Sage Weil}; 352f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 362f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstatic inline struct ceph_entity_addr * 372f2dc053404febedc9c273452d9d518fb31fde72Sage Weilceph_mdsmap_get_addr(struct ceph_mdsmap *m, int w) 382f2dc053404febedc9c273452d9d518fb31fde72Sage Weil{ 392f2dc053404febedc9c273452d9d518fb31fde72Sage Weil if (w >= m->m_max_mds) 402f2dc053404febedc9c273452d9d518fb31fde72Sage Weil return NULL; 412f2dc053404febedc9c273452d9d518fb31fde72Sage Weil return &m->m_info[w].addr; 422f2dc053404febedc9c273452d9d518fb31fde72Sage Weil} 432f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 442f2dc053404febedc9c273452d9d518fb31fde72Sage Weilstatic inline int ceph_mdsmap_get_state(struct ceph_mdsmap *m, int w) 452f2dc053404febedc9c273452d9d518fb31fde72Sage Weil{ 462f2dc053404febedc9c273452d9d518fb31fde72Sage Weil BUG_ON(w < 0); 472f2dc053404febedc9c273452d9d518fb31fde72Sage Weil if (w >= m->m_max_mds) 482f2dc053404febedc9c273452d9d518fb31fde72Sage Weil return CEPH_MDS_STATE_DNE; 492f2dc053404febedc9c273452d9d518fb31fde72Sage Weil return m->m_info[w].state; 502f2dc053404febedc9c273452d9d518fb31fde72Sage Weil} 512f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 520deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weilstatic inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w) 530deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil{ 540deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil if (w >= 0 && w < m->m_max_mds) 550deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil return m->m_info[w].laggy; 560deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil return false; 570deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil} 580deb01c9998f8112c5e478e3fe3a930131abbc0aSage Weil 592f2dc053404febedc9c273452d9d518fb31fde72Sage Weilextern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m); 602f2dc053404febedc9c273452d9d518fb31fde72Sage Weilextern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end); 612f2dc053404febedc9c273452d9d518fb31fde72Sage Weilextern void ceph_mdsmap_destroy(struct ceph_mdsmap *m); 622f2dc053404febedc9c273452d9d518fb31fde72Sage Weil 632f2dc053404febedc9c273452d9d518fb31fde72Sage Weil#endif 64