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