~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/ceph/mon_client.h

Version: ~ [ linux-5.6 ] ~ [ linux-5.5.13 ] ~ [ linux-5.4.28 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.113 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.174 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.217 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.217 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.82 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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
 44  * mon_get_version requests which are being done a bit differently
 45  * because we need to get data back 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         struct completion completion;
 54         struct ceph_msg *request;  /* original request */
 55         struct ceph_msg *reply;    /* and reply */
 56 };
 57 
 58 struct ceph_mon_client {
 59         struct ceph_client *client;
 60         struct ceph_monmap *monmap;
 61 
 62         struct mutex mutex;
 63         struct delayed_work delayed_work;
 64 
 65         struct ceph_auth_client *auth;
 66         struct ceph_msg *m_auth, *m_auth_reply, *m_subscribe, *m_subscribe_ack;
 67         int pending_auth;
 68 
 69         bool hunting;
 70         int cur_mon;                       /* last monitor i contacted */
 71         unsigned long sub_sent, sub_renew_after;
 72         struct ceph_connection con;
 73 
 74         /* pending generic requests */
 75         struct rb_root generic_request_tree;
 76         int num_generic_requests;
 77         u64 last_tid;
 78 
 79         /* mds/osd map */
 80         int want_mdsmap;
 81         int want_next_osdmap; /* 1 = want, 2 = want+asked */
 82         u32 have_osdmap, have_mdsmap;
 83 
 84 #ifdef CONFIG_DEBUG_FS
 85         struct dentry *debugfs_file;
 86 #endif
 87 };
 88 
 89 extern struct ceph_monmap *ceph_monmap_decode(void *p, void *end);
 90 extern int ceph_monmap_contains(struct ceph_monmap *m,
 91                                 struct ceph_entity_addr *addr);
 92 
 93 extern int ceph_monc_init(struct ceph_mon_client *monc, struct ceph_client *cl);
 94 extern void ceph_monc_stop(struct ceph_mon_client *monc);
 95 
 96 /*
 97  * The model here is to indicate that we need a new map of at least
 98  * epoch @want, and also call in when we receive a map.  We will
 99  * periodically rerequest the map from the monitor cluster until we
100  * get what we want.
101  */
102 extern int ceph_monc_got_mdsmap(struct ceph_mon_client *monc, u32 have);
103 extern int ceph_monc_got_osdmap(struct ceph_mon_client *monc, u32 have);
104 
105 extern void ceph_monc_request_next_osdmap(struct ceph_mon_client *monc);
106 extern int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch,
107                                  unsigned long timeout);
108 
109 extern int ceph_monc_do_statfs(struct ceph_mon_client *monc,
110                                struct ceph_statfs *buf);
111 
112 extern int ceph_monc_do_get_version(struct ceph_mon_client *monc,
113                                     const char *what, u64 *newest);
114 
115 extern int ceph_monc_open_session(struct ceph_mon_client *monc);
116 
117 extern int ceph_monc_validate_auth(struct ceph_mon_client *monc);
118 
119 #endif
120 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp