// Instantiate Journaler and start async write to RADOS
ceph_assert(journaler == NULL);
- journaler = new Journaler("mdlog", ino, mds->mdsmap->get_metadata_pool(),
+ journaler = new Journaler("mdlog", ino, mds->get_metadata_pool(),
CEPH_FS_ONDISK_MAGIC, mds->objecter, logger,
l_mdl_jlat, mds->finisher);
ceph_assert(journaler->is_readonly());
journaler->write_head(gather.new_sub());
// Async write JournalPointer to RADOS
- JournalPointer jp(mds->get_nodeid(), mds->mdsmap->get_metadata_pool());
+ JournalPointer jp(mds->get_nodeid(), mds->get_metadata_pool());
jp.front = ino;
jp.back = 0;
jp.save(mds->objecter, gather.new_sub());
// Oh dear, something unreadable in the store for this rank: require
// operator intervention.
- mds->damaged();
+ mds->damaged_unlocked();
ceph_abort(); // damaged should not return
}
// First, read the pointer object.
// If the pointer object is not present, then create it with
// front = default ino and back = null
- JournalPointer jp(mds->get_nodeid(), mds->mdsmap->get_metadata_pool());
+ JournalPointer jp(mds->get_nodeid(), mds->get_metadata_pool());
const int read_result = jp.load(mds->objecter);
if (read_result == -CEPHFS_ENOENT) {
inodeno_t const default_log_ino = MDS_INO_LOG_OFFSET + mds->get_nodeid();
}
dout(1) << "Erasing journal " << jp.back << dendl;
C_SaferCond erase_waiter;
- Journaler back("mdlog", jp.back, mds->mdsmap->get_metadata_pool(),
+ Journaler back("mdlog", jp.back, mds->get_metadata_pool(),
CEPH_FS_ONDISK_MAGIC, mds->objecter, logger, l_mdl_jlat,
mds->finisher);
/* 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,
+ mds->get_metadata_pool(), CEPH_FS_ONDISK_MAGIC, mds->objecter,
logger, l_mdl_jlat, mds->finisher);
// Assign to ::journaler so that we can be aborted by ::shutdown while
* tolerate replaying old journals until we have to go active. Use front_journal as
* our journaler attribute and complete */
dout(4) << "Recovered journal " << jp.front << " in format " << front_journal->get_stream_format() << dendl;
- journaler->set_write_error_handler(new C_MDL_WriteError(this));
{
std::lock_guard l(mds->mds_lock);
+ journaler->set_write_error_handler(new C_MDL_WriteError(this));
if (mds->is_daemon_stopping()) {
return;
}
/* 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->finisher);
+ mds->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();
ceph_assert(journaler == old_journal);
journaler = NULL;
delete old_journal;
- }
- /* Update the pointer to reflect we're back in clean single journal state. */
- jp.back = 0;
- write_result = jp.save(mds->objecter);
- ceph_assert(write_result == 0);
+ /* Update the pointer to reflect we're back in clean single journal state. */
+ jp.back = 0;
+ write_result = jp.save(mds->objecter);
+ ceph_assert(write_result == 0);
- /* Reset the Journaler object to its default state */
- dout(1) << "Journal rewrite complete, continuing with normal startup" << dendl;
- {
- std::lock_guard l(mds->mds_lock);
+ /* Reset the Journaler object to its default state */
+ dout(1) << "Journal rewrite complete, continuing with normal startup" << dendl;
if (mds->is_daemon_stopping()) {
delete new_journal;
return;
journaler = new_journal;
journaler->set_readonly();
journaler->set_write_error_handler(new C_MDL_WriteError(this));
- }
- /* Trigger completion */
- {
- std::lock_guard l(mds->mds_lock);
+ /* Trigger completion */
if (mds->is_daemon_stopping()) {
return;
}