cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mdsmap.h (1766B)


      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