Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/fs/ceph/mdsmap.h
26285 views
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
struct ceph_mds_client;
9
10
/*
11
* mds map - describe servers in the mds cluster.
12
*
13
* we limit fields to those the client actually xcares about
14
*/
15
struct ceph_mds_info {
16
u64 global_id;
17
struct ceph_entity_addr addr;
18
s32 state;
19
int num_export_targets;
20
bool laggy;
21
u32 *export_targets;
22
};
23
24
struct ceph_mdsmap {
25
u32 m_epoch, m_client_epoch, m_last_failure;
26
u32 m_root;
27
u32 m_session_timeout; /* seconds */
28
u32 m_session_autoclose; /* seconds */
29
u64 m_max_file_size;
30
/*
31
* maximum size for xattrs blob.
32
* Zeroed by default to force the usage of the (sync) SETXATTR Op.
33
*/
34
u64 m_max_xattr_size;
35
u32 m_max_mds; /* expected up:active mds number */
36
u32 m_num_active_mds; /* actual up:active mds number */
37
u32 possible_max_rank; /* possible max rank index */
38
struct ceph_mds_info *m_info;
39
40
/* which object pools file data can be stored in */
41
int m_num_data_pg_pools;
42
u64 *m_data_pg_pools;
43
u64 m_cas_pg_pool;
44
45
bool m_enabled;
46
bool m_damaged;
47
int m_num_laggy;
48
};
49
50
static inline struct ceph_entity_addr *
51
ceph_mdsmap_get_addr(struct ceph_mdsmap *m, int w)
52
{
53
if (w >= m->possible_max_rank)
54
return NULL;
55
return &m->m_info[w].addr;
56
}
57
58
static inline int ceph_mdsmap_get_state(struct ceph_mdsmap *m, int w)
59
{
60
BUG_ON(w < 0);
61
if (w >= m->possible_max_rank)
62
return CEPH_MDS_STATE_DNE;
63
return m->m_info[w].state;
64
}
65
66
static inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w)
67
{
68
if (w >= 0 && w < m->possible_max_rank)
69
return m->m_info[w].laggy;
70
return false;
71
}
72
73
extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m);
74
struct ceph_mdsmap *ceph_mdsmap_decode(struct ceph_mds_client *mdsc, void **p,
75
void *end, bool msgr2);
76
extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m);
77
extern bool ceph_mdsmap_is_cluster_available(struct ceph_mdsmap *m);
78
79
#endif
80
81