From 199e5b465ad18cd6baa34c976cd11f199a6a52fb Mon Sep 17 00:00:00 2001 From: John Spray Date: Sun, 12 Feb 2017 23:24:41 +0000 Subject: [PATCH] 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 --- src/common/config_opts.h | 2 -- src/mds/MDLog.cc | 8 ++++---- src/osdc/Journaler.cc | 15 +-------------- src/osdc/Journaler.h | 7 ++----- src/tools/cephfs/Dumper.cc | 2 +- src/tools/cephfs/MDSUtility.cc | 3 --- src/tools/cephfs/MDSUtility.h | 1 - src/tools/cephfs/Resetter.cc | 4 ++-- 8 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 36a2624bb89..8e7e02d15c3 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -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 ' afterwards OPTION(mds_cache_size, OPT_INT, 100000) diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index dd014195312..9069718e310 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -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(); diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index df92fd807d4..45cfecb8625 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -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); } diff --git a/src/osdc/Journaler.h b/src/osdc/Journaler.h index 5532d5c07c6..6a731993bc0 100644 --- a/src/osdc/Journaler.h +++ b/src/osdc/Journaler.h @@ -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), diff --git a/src/tools/cephfs/Dumper.cc b/src/tools/cephfs/Dumper.cc index 94d470ef64b..73054c335ff 100644 --- a/src/tools/cephfs/Dumper.cc +++ b/src/tools/cephfs/Dumper.cc @@ -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; diff --git a/src/tools/cephfs/MDSUtility.cc b/src/tools/cephfs/MDSUtility.cc index 1af0b788bfc..9a345f49d1a 100644 --- a/src/tools/cephfs/MDSUtility.cc +++ b/src/tools/cephfs/MDSUtility.cc @@ -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(); diff --git a/src/tools/cephfs/MDSUtility.h b/src/tools/cephfs/MDSUtility.h index 7547c0e78c6..5df881a7c6c 100644 --- a/src/tools/cephfs/MDSUtility.h +++ b/src/tools/cephfs/MDSUtility.h @@ -37,7 +37,6 @@ protected: MonClient *monc; Mutex lock; - SafeTimer timer; Finisher finisher; Context *waiting_for_mds_map; diff --git a/src/tools/cephfs/Resetter.cc b/src/tools/cephfs/Resetter.cc index 909a2313115..58465c2ffc7 100644 --- a/src/tools/cephfs/Resetter.cc +++ b/src/tools/cephfs/Resetter.cc @@ -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( -- 2.47.3