Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
ceph
mon_client.h
Go to the documentation of this file.
1
#ifndef _FS_CEPH_MON_CLIENT_H
2
#define _FS_CEPH_MON_CLIENT_H
3
4
#include <
linux/completion.h
>
5
#include <
linux/kref.h
>
6
#include <linux/rbtree.h>
7
8
#include <
linux/ceph/messenger.h
>
9
10
struct
ceph_client
;
11
struct
ceph_mount_args;
12
struct
ceph_auth_client
;
13
14
/*
15
* The monitor map enumerates the set of all monitors.
16
*/
17
struct
ceph_monmap
{
18
struct
ceph_fsid
fsid
;
19
u32
epoch
;
20
u32
num_mon
;
21
struct
ceph_entity_inst
mon_inst
[0];
22
};
23
24
struct
ceph_mon_client
;
25
struct
ceph_mon_generic_request
;
26
27
28
/*
29
* Generic mechanism for resending monitor requests.
30
*/
31
typedef
void
(*
ceph_monc_request_func_t
)(
struct
ceph_mon_client
*monc,
32
int
newmon);
33
34
/* a pending monitor request */
35
struct
ceph_mon_request
{
36
struct
ceph_mon_client
*
monc
;
37
struct
delayed_work
delayed_work
;
38
unsigned
long
delay
;
39
ceph_monc_request_func_t
do_request
;
40
};
41
42
/*
43
* ceph_mon_generic_request is being used for the statfs and poolop requests
44
* which are bening done a bit differently because we need to get data back
45
* to the caller
46
*/
47
struct
ceph_mon_generic_request
{
48
struct
kref
kref
;
49
u64
tid
;
50
struct
rb_node
node
;
51
int
result
;
52
void
*
buf
;
53
int
buf_len
;
54
struct
completion
completion
;
55
struct
ceph_msg
*
request
;
/* original request */
56
struct
ceph_msg
*
reply
;
/* and reply */
57
};
58
59
struct
ceph_mon_client
{
60
struct
ceph_client
*
client
;
61
struct
ceph_monmap
*
monmap
;
62
63
struct
mutex
mutex
;
64
struct
delayed_work
delayed_work
;
65
66
struct
ceph_auth_client
*
auth
;
67
struct
ceph_msg
*
m_auth
, *
m_auth_reply
, *
m_subscribe
, *
m_subscribe_ack
;
68
int
pending_auth
;
69
70
bool
hunting
;
71
int
cur_mon
;
/* last monitor i contacted */
72
unsigned
long
sub_sent
,
sub_renew_after
;
73
struct
ceph_connection
con
;
74
75
/* pending generic requests */
76
struct
rb_root
generic_request_tree
;
77
int
num_generic_requests
;
78
u64
last_tid
;
79
80
/* mds/osd map */
81
int
want_mdsmap
;
82
int
want_next_osdmap
;
/* 1 = want, 2 = want+asked */
83
u32
have_osdmap
,
have_mdsmap
;
84
85
#ifdef CONFIG_DEBUG_FS
86
struct
dentry
*debugfs_file;
87
#endif
88
};
89
90
extern
struct
ceph_monmap
*
ceph_monmap_decode
(
void
*
p
,
void
*
end
);
91
extern
int
ceph_monmap_contains
(
struct
ceph_monmap
*
m
,
92
struct
ceph_entity_addr
*
addr
);
93
94
extern
int
ceph_monc_init
(
struct
ceph_mon_client
*monc,
struct
ceph_client
*
cl
);
95
extern
void
ceph_monc_stop
(
struct
ceph_mon_client
*monc);
96
97
/*
98
* The model here is to indicate that we need a new map of at least
99
* epoch @want, and also call in when we receive a map. We will
100
* periodically rerequest the map from the monitor cluster until we
101
* get what we want.
102
*/
103
extern
int
ceph_monc_got_mdsmap
(
struct
ceph_mon_client
*monc,
u32
have
);
104
extern
int
ceph_monc_got_osdmap
(
struct
ceph_mon_client
*monc,
u32
have
);
105
106
extern
void
ceph_monc_request_next_osdmap
(
struct
ceph_mon_client
*monc);
107
108
extern
int
ceph_monc_do_statfs
(
struct
ceph_mon_client
*monc,
109
struct
ceph_statfs
*
buf
);
110
111
extern
int
ceph_monc_open_session
(
struct
ceph_mon_client
*monc);
112
113
extern
int
ceph_monc_validate_auth
(
struct
ceph_mon_client
*monc);
114
115
extern
int
ceph_monc_create_snapid
(
struct
ceph_mon_client
*monc,
116
u32
pool
,
u64
*
snapid
);
117
118
extern
int
ceph_monc_delete_snapid
(
struct
ceph_mon_client
*monc,
119
u32
pool
,
u64
snapid
);
120
121
#endif
Generated on Thu Jan 10 2013 14:51:11 for Linux Kernel by
1.8.2