mds_log_max_trimming: 16,
mds_log_read_inc: 65536,
mds_log_before_reply: true,
- mds_log_flush_on_shutdown: true,
+ mds_log_flush_on_shutdown: false, //true,
mds_bal_replicate_threshold: 500,
mds_bal_unreplicate_threshold: 200,
mds_bal_interval: 200,
+ mds_flush_on_shutdown: true,
mds_verify_export_dirauth: true,
g_conf.num_client = atoi(argv[++i]);
else if (strcmp(argv[i], "--numosd") == 0)
g_conf.num_osd = atoi(argv[++i]);
+
else if (strcmp(argv[i], "--debug") == 0)
g_conf.debug = atoi(argv[++i]);
+
else if (strcmp(argv[i], "--mds_cache_size") == 0)
g_conf.mds_cache_size = atoi(argv[++i]);
else if (strcmp(argv[i], "--mds_log_max_len") == 0)
g_conf.mds_log_max_len = atoi(argv[++i]);
else if (strcmp(argv[i], "--mds_log_max_trimming") == 0)
g_conf.mds_log_max_trimming = atoi(argv[++i]);
+ else if (strcmp(argv[i], "--mds_flush_on_shutdown") == 0)
+ g_conf.mds_flush_on_shutdown = atoi(argv[++i]);
else if (strcmp(argv[i], "--mds_log_flush_on_shutdown") == 0)
g_conf.mds_log_flush_on_shutdown = atoi(argv[++i]);
else if (strcmp(argv[i], "--mds_bal_interval") == 0)
g_conf.mds_bal_interval = atoi(argv[++i]);
+
+ else if (strcmp(argv[i], "--osd_fsync") == 0)
+ g_conf.osd_fsync = atoi(argv[++i]);
+
else {
//cout << "passing arg " << argv[i] << endl;
nargv[nargc++] = argv[i];
void MDCache::shutdown_start()
{
- dout(1) << "shutdown_start: forcing unsync, unlock of everything" << endl;
+ dout(1) << "shutdown_start" << endl;
- // walk cache
- bool didsomething = false;
- for (hash_map<inodeno_t, CInode*>::iterator it = inode_map.begin();
- it != inode_map.end();
- it++) {
- CInode *in = it->second;
+ if (g_conf.mds_commit_on_shutdown) {
+ dout(1) << "shutdown_start committing all dirty dirs" << endl;
- // commit any dirty dir that's ours
- if (in->is_dir() && in->dir && in->dir->is_auth() && in->dir->is_dirty())
- mds->mdstore->commit_dir(in->dir, NULL);
-
- //drop locks?
- if (in->is_auth()) {
- //if (in->is_syncbyme()) inode_sync_release(in);
- //if (in->is_lockbyme()) inode_lock_release(in);
+ for (hash_map<inodeno_t, CInode*>::iterator it = inode_map.begin();
+ it != inode_map.end();
+ it++) {
+ CInode *in = it->second;
+
+ // commit any dirty dir that's ours
+ if (in->is_dir() && in->dir && in->dir->is_auth() && in->dir->is_dirty())
+ mds->mdstore->commit_dir(in->dir, NULL);
+
}
}
assert(inode_map.size() == lru.lru_get_size());
// done?
- if ((lru.lru_get_size() == 0 || g_conf.mds_log_flush_on_shutdown == false) &&
+ if ((lru.lru_get_size() == 0 ||
+ (g_conf.mds_commit_on_shutdown == false && g_conf.mds_log_flush_on_shutdown == false)) &&
!mds->filer->is_active()) {
if (mds->get_nodeid() != 0) {
dout(7) << "done, sending shutdown_finish" << endl;