osdc: remove Journaler "journaler_batch_*" settings

This was an unused code path.  If anyone set a nonzero
value here the MDS would crash because the Timer implementation
has changed since this code was written, and now requires
add_event_after callers to hold the right lock.

Signed-off-by: John Spray <john.spray@redhat.com>
This commit is contained in:
John Spray 2017-02-12 23:24:41 +00:00
parent 6d59f15e12
commit 199e5b465a
8 changed files with 10 additions and 32 deletions

View File

@ -486,8 +486,6 @@ OPTION(journaler_allow_split_entries, OPT_BOOL, true)
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)

View File

@ -159,7 +159,7 @@ void MDLog::create(MDSInternalContextBase *c)
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();
@ -954,7 +954,7 @@ void MDLog::_recovery_thread(MDSInternalContextBase *completion)
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)
@ -994,7 +994,7 @@ void MDLog::_recovery_thread(MDSInternalContextBase *completion)
/* 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
@ -1080,7 +1080,7 @@ void MDLog::_reformat_journal(JournalPointer const &jp_in, Journaler *old_journa
/* 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();

View File

@ -717,20 +717,7 @@ void Journaler::_flush(C_OnFinisher *onsafe)
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);
}

View File

@ -226,8 +226,6 @@ private:
PerfCounters *logger;
int logger_key_lat;
SafeTimer *timer;
class C_DelayFlush;
C_DelayFlush *delay_flush_event;
/*
@ -381,15 +379,14 @@ private:
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),

View File

@ -84,7 +84,7 @@ int Dumper::dump(const char *dump_file)
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;

View File

@ -22,7 +22,6 @@ MDSUtility::MDSUtility() :
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)
{
@ -86,7 +85,6 @@ int MDSUtility::init()
// 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");
@ -118,7 +116,6 @@ void MDSUtility::shutdown()
finisher.stop();
lock.Lock();
timer.shutdown();
objecter->shutdown();
lock.Unlock();
monc->shutdown();

View File

@ -37,7 +37,6 @@ protected:
MonClient *monc;
Mutex lock;
SafeTimer timer;
Finisher finisher;
Context *waiting_for_mds_map;

View File

@ -48,7 +48,7 @@ int Resetter::reset(mds_role_t role)
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));
@ -130,7 +130,7 @@ int Resetter::reset_hard(mds_role_t role)
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(