linux/include/linux/ceph/mdsmap.h
<<
>>
Prefs
   1#ifndef _FS_CEPH_MDSMAP_H
   2#define _FS_CEPH_MDSMAP_H
   3
   4#include "types.h"
   5
   6/*
   7 * mds map - describe servers in the mds cluster.
   8 *
   9 * we limit fields to those the client actually xcares about
  10 */
  11struct ceph_mds_info {
  12        u64 global_id;
  13        struct ceph_entity_addr addr;
  14        s32 state;
  15        int num_export_targets;
  16        bool laggy;
  17        u32 *export_targets;
  18};
  19
  20struct ceph_mdsmap {
  21        u32 m_epoch, m_client_epoch, m_last_failure;
  22        u32 m_root;
  23        u32 m_session_timeout;          /* seconds */
  24        u32 m_session_autoclose;        /* seconds */
  25        u64 m_max_file_size;
  26        u32 m_max_mds;                  /* size of m_addr, m_state arrays */
  27        struct ceph_mds_info *m_info;
  28
  29        /* which object pools file data can be stored in */
  30        int m_num_data_pg_pools;
  31        u32 *m_data_pg_pools;
  32        u32 m_cas_pg_pool;
  33};
  34
  35static inline struct ceph_entity_addr *
  36ceph_mdsmap_get_addr(struct ceph_mdsmap *m, int w)
  37{
  38        if (w >= m->m_max_mds)
  39                return NULL;
  40        return &m->m_info[w].addr;
  41}
  42
  43static inline int ceph_mdsmap_get_state(struct ceph_mdsmap *m, int w)
  44{
  45        BUG_ON(w < 0);
  46        if (w >= m->m_max_mds)
  47                return CEPH_MDS_STATE_DNE;
  48        return m->m_info[w].state;
  49}
  50
  51static inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w)
  52{
  53        if (w >= 0 && w < m->m_max_mds)
  54                return m->m_info[w].laggy;
  55        return false;
  56}
  57
  58extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m);
  59extern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end);
  60extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m);
  61
  62#endif
  63