string_snap_t lb(dname, first);
string_snap_t ub(dname, last);
- map<string_snap_t, list<MDSInternalContextBase*> >::iterator p = waiting_on_dentry.lower_bound(lb);
+ compact_map<string_snap_t, list<MDSInternalContextBase*> >::iterator p = waiting_on_dentry.lower_bound(lb);
while (p != waiting_on_dentry.end() &&
!(ub < p->first)) {
dout(10) << "take_dentry_waiting dentry " << dname
{
dout(10) << "take_sub_waiting" << dendl;
if (!waiting_on_dentry.empty()) {
- for (map<string_snap_t, list<MDSInternalContextBase*> >::iterator p = waiting_on_dentry.begin();
+ for (compact_map<string_snap_t, list<MDSInternalContextBase*> >::iterator p = waiting_on_dentry.begin();
p != waiting_on_dentry.end();
++p)
ls.splice(ls.end(), p->second);
if ((mask & WAIT_DENTRY) && !waiting_on_dentry.empty()) {
// take all dentry waiters
while (!waiting_on_dentry.empty()) {
- map<string_snap_t, list<MDSInternalContextBase*> >::iterator p = waiting_on_dentry.begin();
+ compact_map<string_snap_t, list<MDSInternalContextBase*> >::iterator p = waiting_on_dentry.begin();
dout(10) << "take_waiting dentry " << p->first.name
<< " snap " << p->first.snapid << " on " << *this << dendl;
ls.splice(ls.end(), p->second);
// finishers?
bool were_waiters = !waiting_for_commit.empty();
- map<version_t, list<MDSInternalContextBase*> >::iterator p = waiting_for_commit.begin();
+ compact_map<version_t, list<MDSInternalContextBase*> >::iterator p = waiting_for_commit.begin();
while (p != waiting_for_commit.end()) {
- map<version_t, list<MDSInternalContextBase*> >::iterator n = p;
+ compact_map<version_t, list<MDSInternalContextBase*> >::iterator n = p;
++n;
if (p->first > committed_version) {
dout(10) << " there are waiters for " << p->first << ", committing again" << dendl;
fnode_t fnode;
snapid_t first;
- std::map<snapid_t,old_rstat_t> dirty_old_rstat; // [value.first,key]
+ compact_map<snapid_t,old_rstat_t> dirty_old_rstat; // [value.first,key]
// my inodes with dirty rstat data
elist<CInode*> dirty_rstat_inodes;
// cache control (defined for authority; hints for replicas)
__s32 dir_rep;
- std::set<__s32> dir_rep_by; // if dir_rep == REP_LIST
+ compact_set<__s32> dir_rep_by; // if dir_rep == REP_LIST
// popularity
dirfrag_load_vec_t pop_me;
void _tmap_fetched(bufferlist &bl, const std::string& want_dn, int r);
// -- commit --
- std::map<version_t, std::list<MDSInternalContextBase*> > waiting_for_commit;
+ compact_map<version_t, std::list<MDSInternalContextBase*> > waiting_for_commit;
void _commit(version_t want, int op_prio);
void _omap_commit(int op_prio);
void _encode_dentry(CDentry *dn, bufferlist& bl, const std::set<snapid_t> *snaps);
// -- waiters --
protected:
- std::map< string_snap_t, std::list<MDSInternalContextBase*> > waiting_on_dentry;
+ compact_map< string_snap_t, std::list<MDSInternalContextBase*> > waiting_on_dentry;
public:
bool is_waiting_for_dentry(const std::string& dname, snapid_t snap) {
snapid_t fgfirst;
nest_info_t rstat;
nest_info_t accounted_rstat;
- map<snapid_t,old_rstat_t> dirty_old_rstat;
+ compact_map<snapid_t,old_rstat_t> dirty_old_rstat;
::decode(fg, p);
::decode(fgfirst, p);
::decode(rstat, p);
dout(20) << fg << " dirty_old_rstat " << dir->dirty_old_rstat << dendl;
mdcache->project_rstat_frag_to_inode(pf->rstat, pf->accounted_rstat,
dir->first, CEPH_NOSNAP, this, true);
- for (map<snapid_t,old_rstat_t>::iterator q = dir->dirty_old_rstat.begin();
+ for (compact_map<snapid_t,old_rstat_t>::iterator q = dir->dirty_old_rstat.begin();
q != dir->dirty_old_rstat.end();
++q)
mdcache->project_rstat_frag_to_inode(q->second.rstat, q->second.accounted_rstat,
first = ofirst;
// find any intersection with last
- map<snapid_t,old_rstat_t>::iterator p = parent->dirty_old_rstat.lower_bound(last);
+ compact_map<snapid_t,old_rstat_t>::iterator p = parent->dirty_old_rstat.lower_bound(last);
if (p == parent->dirty_old_rstat.end()) {
dout(20) << " no dirty_old_rstat with last >= last " << last << dendl;
if (!parent->dirty_old_rstat.empty() && parent->dirty_old_rstat.rbegin()->first >= first) {
// first, if the frag is stale, bring it back in sync.
parent->resync_accounted_rstat();
- for (map<snapid_t,old_rstat_t>::iterator p = parent->dirty_old_rstat.begin();
+ for (compact_map<snapid_t,old_rstat_t>::iterator p = parent->dirty_old_rstat.begin();
p != parent->dirty_old_rstat.end();
++p)
project_rstat_frag_to_inode(p->second.rstat, p->second.accounted_rstat, p->second.first, p->first, pin, true);//false);
dirfrag_t dirfrag;
int32_t dir_rep;
int32_t discover;
- set<int32_t> dir_rep_by;
+ compact_set<int32_t> dir_rep_by;
filepath path;
public:
mds_rank_t get_source_mds() const { return from_mds; }
dirfrag_t get_dirfrag() const { return dirfrag; }
int get_dir_rep() const { return dir_rep; }
- const set<int>& get_dir_rep_by() const { return dir_rep_by; }
+ const compact_set<int>& get_dir_rep_by() const { return dir_rep_by; }
bool should_discover() const { return discover > 0; }
const filepath& get_path() const { return path; }
MDirUpdate(mds_rank_t f,
dirfrag_t dirfrag,
int dir_rep,
- set<int>& dir_rep_by,
+ compact_set<int>& dir_rep_by,
filepath& path,
bool discover = false) :
Message(MSG_MDS_DIRUPDATE) {