inodeno_t realm, int flags, const UserPerm& perms);
void remove_cap(Cap *cap, bool queue_release);
void remove_all_caps(Inode *in);
- void remove_session_caps(MetaSession *session);
+ void remove_session_caps(MetaSession *session, int err);
int mark_caps_flushing(Inode *in, ceph_tid_t *ptid);
void adjust_session_flushing_caps(Inode *in, MetaSession *old_s, MetaSession *new_s);
void flush_caps_sync();
void kick_flushing_caps(Inode *in, MetaSession *session);
void kick_flushing_caps(MetaSession *session);
void early_kick_flushing_caps(MetaSession *session);
- int get_caps(Inode *in, int need, int want, int *have, loff_t endoff);
+ int get_caps(Fh *fh, int need, int want, int *have, loff_t endoff);
int get_caps_used(Inode *in);
void maybe_update_snaprealm(SnapRealm *realm, snapid_t snap_created, snapid_t snap_highwater,
MetaSession *_get_or_open_mds_session(mds_rank_t mds);
MetaSession *_open_mds_session(mds_rank_t mds);
void _close_mds_session(MetaSession *s);
- void _closed_mds_session(MetaSession *s);
+ void _closed_mds_session(MetaSession *s, int err=0, bool rejected=false);
bool _any_stale_sessions() const;
void _kick_stale_sessions();
void handle_client_session(const MConstRef<MClientSession>& m);
// mds sessions
map<mds_rank_t, MetaSession> mds_sessions; // mds -> push seq
+ std::set<mds_rank_t> mds_ranks_closing; // mds ranks currently tearing down sessions
std::list<ceph::condition_variable*> waiting_for_mdsmap;
// FSMap, for when using mds_command
ceph::unordered_map<int, Fh*> fd_map;
set<Fh*> ll_unclosed_fh_set;
ceph::unordered_set<dir_result_t*> opened_dirs;
+ uint64_t fd_gen = 1;
bool initialized = false;
bool mounted = false;
ino_t last_used_faked_ino;
ino_t last_used_faked_root;
- // When an MDS has sent us a REJECT, remember that and don't
- // contact it again. Remember which inst rejected us, so that
- // when we talk to another inst with the same rank we can
- // try again.
- std::map<mds_rank_t, entity_addrvec_t> rejected_by_mds;
-
int local_osd = -ENXIO;
epoch_t local_osd_epoch = 0;
ceph::unordered_map<inodeno_t,SnapRealm*> snap_realms;
std::map<std::string, std::string> metadata;
+ utime_t last_auto_reconnect;
+
// trace generation
ofstream traceout;