Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / client / MetaSession.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef CEPH_CLIENT_METASESSION_H
5 #define CEPH_CLIENT_METASESSION_H
6
7 #include "include/types.h"
8 #include "include/utime.h"
9 #include "msg/Message.h"
10 #include "include/xlist.h"
11 #include "mds/mdstypes.h"
12
13 struct Cap;
14 struct Inode;
15 struct CapSnap;
16 struct MetaRequest;
17 class MClientCapRelease;
18
19 struct MetaSession {
20   mds_rank_t mds_num;
21   ConnectionRef con;
22   version_t seq;
23   uint64_t cap_gen;
24   utime_t cap_ttl, last_cap_renew_request;
25   uint64_t cap_renew_seq;
26   int num_caps;
27   entity_inst_t inst;
28
29   enum {
30     STATE_NEW,
31     STATE_OPENING,
32     STATE_OPEN,
33     STATE_CLOSING,
34     STATE_CLOSED,
35     STATE_STALE,
36   } state;
37
38   int mds_state;
39   bool readonly;
40
41   list<Context*> waiting_for_open;
42
43   xlist<Cap*> caps;
44   xlist<Inode*> flushing_caps;
45   xlist<MetaRequest*> requests;
46   xlist<MetaRequest*> unsafe_requests;
47   std::set<ceph_tid_t> flushing_caps_tids;
48   std::set<Inode*> early_flushing_caps;
49
50   MClientCapRelease *release;
51   
52   MetaSession()
53     : mds_num(-1), con(NULL),
54       seq(0), cap_gen(0), cap_renew_seq(0), num_caps(0),
55       state(STATE_NEW), mds_state(0), readonly(false),
56       release(NULL)
57   {}
58   ~MetaSession();
59
60   const char *get_state_name() const;
61
62   void dump(Formatter *f) const;
63
64   void enqueue_cap_release(inodeno_t ino, uint64_t cap_id, ceph_seq_t iseq,
65       ceph_seq_t mseq, epoch_t osd_barrier);
66 };
67
68 #endif