void Locker::handle_file_lock(FileLock *lock, MLock *m)
{
- if (mds->logger) mds->logger->inc("lif");
-
CInode *in = (CInode*)lock->get_parent();
int from = m->get_asker();
if (!didit) {
didit = true;
mdlog_logtype.add_inc("add");
- mdlog_logtype.add_inc("expire");
mdlog_logtype.add_inc("obs");
- mdlog_logtype.add_inc("trim");
+ mdlog_logtype.add_inc("trims");
+ mdlog_logtype.add_inc("trimf");
+ mdlog_logtype.add_inc("trimng");
mdlog_logtype.add_set("size");
- mdlog_logtype.add_set("read");
- mdlog_logtype.add_set("append");
- mdlog_logtype.add_inc("lsum");
- mdlog_logtype.add_inc("lnum");
+ mdlog_logtype.add_set("rdpos");
+ mdlog_logtype.add_set("wrpos");
+ mdlog_logtype.add_inc("jlsum");
+ mdlog_logtype.add_inc("jlnum");
}
// inode
logger->inc("add");
logger->set("size", num_events);
- logger->set("append", journaler->get_write_pos());
+ logger->set("wrpos", journaler->get_write_pos());
if (c) {
unflushed = 0;
trimming.erase(le->_end_off);
delete le;
- logger->set("trim", trimming.size());
- logger->set("read", journaler->get_read_pos());
+ logger->inc("trimf");
+ logger->set("trimng", trimming.size());
+ logger->set("rdpos", journaler->get_read_pos());
trim(0);
}
dout(7) << "trim expiring : " << le->get_start_off() << " : " << *le << endl;
trimming[le->_end_off] = le;
le->expire(mds, new C_MDL_Trimmed(this, le));
- logger->inc("expire");
- logger->set("trim", trimming.size());
+ logger->inc("trims");
+ logger->set("trimng", trimming.size());
}
- logger->set("read", journaler->get_read_pos());
+ logger->set("rdpos", journaler->get_read_pos());
logger->set("size", num_events);
} else {
// need to read!
}
}
- dout(5) << "trim num_events " << num_events << " <= max " << max_events
+ dout(10) << "trim num_events " << num_events << " <= max " << max_events
<< ", trimming " << trimming.size()
<< ", done for now."
<< endl;
mds_logtype.add_inc("fw");
mds_logtype.add_inc("cfw");
- mds_logtype.add_set("l");
- mds_logtype.add_set("q");
- mds_logtype.add_set("popanyd");
- mds_logtype.add_set("popnest");
-
- mds_logtype.add_inc("lih");
- mds_logtype.add_inc("lif");
+ mds_logtype.add_inc("dir_f");
+ mds_logtype.add_inc("dir_c");
+ mds_logtype.add_inc("mkdir");
mds_logtype.add_set("c");
mds_logtype.add_set("ctop");
mds_logtype.add_inc("dis");
mds_logtype.add_inc("cmiss");
+ mds_logtype.add_set("l");
+ mds_logtype.add_set("q");
+ mds_logtype.add_set("popanyd");
+ mds_logtype.add_set("popnest");
+
mds_logtype.add_set("buf");
- mds_logtype.add_inc("cdir");
- mds_logtype.add_inc("fdir");
mds_logtype.add_inc("iex");
mds_logtype.add_inc("iim");
public:
C_MDS_BeaconKiller(MDS *m, utime_t l) : mds(m), lab(l) {}
void finish(int r) {
- mds->beacon_killer = 0;
- mds->beacon_kill(lab);
+ if (mds->beacon_killer) {
+ mds->beacon_killer = 0;
+ mds->beacon_kill(lab);
+ }
+ // else mds is pbly already shutting down
}
} *beacon_killer;
newdir->mark_complete();
newdir->mark_dirty(newdir->pre_dirty());
+ if (mds->logger) mds->logger->inc("mkdir");
+
// prepare finisher
EUpdate *le = new EUpdate(mdlog, "mkdir");
le->metablob.add_client_req(req->get_reqid());
mdr->pvmap[srcdn->dir->inode] = predirty_dn_diri(mdr, srcdn, metablob);
}
- inode_t *ji; // journaled inode getting nlink--
+ inode_t *ji = 0; // journaled inode getting nlink--
version_t ipv = 0; // it's version
if (linkmerge) {
return;
if (mode == TO_AUTH_SUBTREE_ROOT) {
+ //return; // hack: for comparison purposes.. what if NO context?
+
// subtree root?
if (dir->is_subtree_root() && dir->is_auth())
return;
// was the inode journaled since the last subtree_map?
- if (last_subtree_map &&
+ if (//false && // for benchmarking
+ last_subtree_map &&
dir->inode->last_journaled >= last_subtree_map)
return;
}
<< " for " << *dir << endl;
continue; // not our problem
}
+ // FIXME HACK: this makes logger stats more accurage, for journal stats,
+ // but is not perfectly safe. for benchmarking ONLY!
if (dir->get_committed_version() >= lp->second.dirv ||
+ //if (dir->get_committing_version() >= lp->second.dirv ||
dir->get_committed_version_equivalent() >= lp->second.dirv) {
dout(10) << "EMetaBlob.has_expired have dirv " << lp->second.dirv
<< " for " << *dir << endl;
}
}
+ dout(10) << "my gather finsher is " << gather << " with " << gather->get_num() << endl;
+
}
void EMetaBlob::replay(MDS *mds)