void set_xlocks_done(MutationImpl *mut, bool skip_dentry=false);
void drop_non_rdlocks(MutationImpl *mut, set<CInode*> *pneed_issue=0);
void drop_rdlocks_for_early_reply(MutationImpl *mut);
+ void drop_locks_for_fragment_unfreeze(MutationImpl *mut);
void eval_gather(SimpleLock *lock, bool first=false, bool *need_issue=0, list<MDSInternalContextBase*> *pfinishers=0);
void eval(SimpleLock *lock, bool *need_issue);
void kick_cap_releases(MDRequestRef& mdr);
void kick_issue_caps(CInode *in, client_t client, ceph_seq_t seq);
- void remove_client_cap(CInode *in, client_t client);
+ void remove_client_cap(CInode *in, Capability *cap);
- void get_late_revoking_clients(std::list<client_t> *result) const;
- bool any_late_revoking_caps(xlist<Capability*> const &revoking) const;
+ void get_late_revoking_clients(std::list<client_t> *result, double timeout) const;
+
+private:
+ bool any_late_revoking_caps(xlist<Capability*> const &revoking, double timeout) const;
protected:
bool _need_flush_mdlog(CInode *in, int wanted_caps);
public:
version_t issue_file_data_version(CInode *in);
Capability* issue_new_caps(CInode *in, int mode, Session *session, SnapRealm *conrealm, bool is_replay);
- bool issue_caps(CInode *in, Capability *only_cap=0);
+ int issue_caps(CInode *in, Capability *only_cap=0);
void issue_caps_set(set<CInode*>& inset);
void issue_truncate(CInode *in);
void revoke_stale_caps(Session *session);
- void revoke_stale_caps(Capability *cap);
void resume_stale_caps(Session *session);
void remove_stale_leases(Session *session);
private:
uint64_t calc_new_max_size(CInode::mempool_inode *pi, uint64_t size);
public:
- void calc_new_client_ranges(CInode *in, uint64_t size,
+ void calc_new_client_ranges(CInode *in, uint64_t size, bool update,
CInode::mempool_inode::client_range_map* new_ranges,
bool *max_increased);
bool check_inode_max_size(CInode *in, bool force_wrlock=false,