OPTION(journaler_write_head_interval, OPT_INT, 15)
OPTION(journaler_prefetch_periods, OPT_INT, 10) // * journal object size
OPTION(journaler_prezero_periods, OPT_INT, 5) // * journal object size
-OPTION(journaler_batch_interval, OPT_DOUBLE, .001) // seconds.. max add latency we artificially incur
-OPTION(journaler_batch_max, OPT_U64, 0) // max bytes we'll delay flushing; disable, for now....
OPTION(mds_data, OPT_STR, "/var/lib/ceph/mds/$cluster-$id")
OPTION(mds_max_file_size, OPT_U64, 1ULL << 40) // Used when creating new CephFS. Change with 'ceph mds set max_file_size <size>' afterwards
OPTION(mds_cache_size, OPT_INT, 100000)
assert(journaler == NULL);
journaler = new Journaler("mdlog", ino, mds->mdsmap->get_metadata_pool(),
CEPH_FS_ONDISK_MAGIC, mds->objecter, logger,
- l_mdl_jlat, &mds->timer, mds->finisher);
+ l_mdl_jlat, mds->finisher);
assert(journaler->is_readonly());
journaler->set_write_error_handler(new C_MDL_WriteError(this));
journaler->set_writeable();
dout(1) << "Erasing journal " << jp.back << dendl;
C_SaferCond erase_waiter;
Journaler back("mdlog", jp.back, mds->mdsmap->get_metadata_pool(),
- CEPH_FS_ONDISK_MAGIC, mds->objecter, logger, l_mdl_jlat, &mds->timer,
+ CEPH_FS_ONDISK_MAGIC, mds->objecter, logger, l_mdl_jlat,
mds->finisher);
// Read all about this journal (header + extents)
/* Read the header from the front journal */
Journaler *front_journal = new Journaler("mdlog", jp.front,
mds->mdsmap->get_metadata_pool(), CEPH_FS_ONDISK_MAGIC, mds->objecter,
- logger, l_mdl_jlat, &mds->timer, mds->finisher);
+ logger, l_mdl_jlat, mds->finisher);
// Assign to ::journaler so that we can be aborted by ::shutdown while
// waiting for journaler recovery
/* Create the new Journaler file */
Journaler *new_journal = new Journaler("mdlog", jp.back,
- mds->mdsmap->get_metadata_pool(), CEPH_FS_ONDISK_MAGIC, mds->objecter, logger, l_mdl_jlat, &mds->timer, mds->finisher);
+ mds->mdsmap->get_metadata_pool(), CEPH_FS_ONDISK_MAGIC, mds->objecter, logger, l_mdl_jlat, mds->finisher);
dout(4) << "Writing new journal header " << jp.back << dendl;
file_layout_t new_layout = old_journal->get_layout();
new_journal->set_writeable();
onsafe->complete(0);
}
} else {
- // maybe buffer
- if (write_buf.length() < cct->_conf->journaler_batch_max) {
- // delay! schedule an event.
- ldout(cct, 20) << "flush delaying flush" << dendl;
- if (delay_flush_event) {
- timer->cancel_event(delay_flush_event);
- }
- delay_flush_event = new C_DelayFlush(this);
- timer->add_event_after(cct->_conf->journaler_batch_interval,
- delay_flush_event);
- } else {
- ldout(cct, 20) << "flush not delaying flush" << dendl;
- _do_flush();
- }
+ _do_flush();
_wait_for_flush(onsafe);
}
PerfCounters *logger;
int logger_key_lat;
- SafeTimer *timer;
-
class C_DelayFlush;
C_DelayFlush *delay_flush_event;
/*
public:
Journaler(const std::string &name_, inodeno_t ino_, int64_t pool,
- const char *mag, Objecter *obj, PerfCounters *l, int lkey,
- SafeTimer *tim, Finisher *f) :
+ const char *mag, Objecter *obj, PerfCounters *l, int lkey, Finisher *f) :
last_committed(mag),
cct(obj->cct), name(name_), finisher(f), last_written(mag),
ino(ino_), pg_pool(pool), readonly(true),
stream_format(-1), journal_stream(-1),
magic(mag),
objecter(obj), filer(objecter, f), logger(l), logger_key_lat(lkey),
- timer(tim), delay_flush_event(0),
+ delay_flush_event(0),
state(STATE_UNDEF), error(0),
prezeroing_pos(0), prezero_pos(0), write_pos(0), flush_pos(0), safe_pos(0),
waiting_for_zero(false),
Journaler journaler("dumper", ino, fs->mds_map.get_metadata_pool(),
CEPH_FS_ONDISK_MAGIC, objecter, 0, 0,
- &timer, &finisher);
+ &finisher);
r = recover_journal(&journaler);
if (r) {
return r;
Dispatcher(g_ceph_context),
objecter(NULL),
lock("MDSUtility::lock"),
- timer(g_ceph_context, lock),
finisher(g_ceph_context, "MDSUtility", "fn_mds_utility"),
waiting_for_mds_map(NULL)
{
// Start Objecter and wait for OSD map
objecter->start();
objecter->wait_for_osd_map();
- timer.init();
// Prepare to receive MDS map and request it
Mutex init_lock("MDSUtility:init");
finisher.stop();
lock.Lock();
- timer.shutdown();
objecter->shutdown();
lock.Unlock();
monc->shutdown();
MonClient *monc;
Mutex lock;
- SafeTimer timer;
Finisher finisher;
Context *waiting_for_mds_map;
Journaler journaler("resetter", jp.front,
pool_id,
CEPH_FS_ONDISK_MAGIC,
- objecter, 0, 0, &timer, &finisher);
+ objecter, 0, 0, &finisher);
lock.Lock();
journaler.recover(new C_SafeCond(&mylock, &cond, &done, &r));
Journaler journaler("resetter", jp.front,
pool_id,
CEPH_FS_ONDISK_MAGIC,
- objecter, 0, 0, &timer, &finisher);
+ objecter, 0, 0, &finisher);
journaler.set_writeable();
file_layout_t default_log_layout = MDCache::gen_default_log_layout(