MCPcopy Create free account
hub / github.com/ceph/ceph / create

Method create

src/mds/MDLog.cc:267–304  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

265}
266
267void MDLog::create(MDSContext *c)
268{
269 ceph_assert(ceph_mutex_is_locked_by_me(mds->mds_lock));
270
271 dout(5) << "create empty log" << dendl;
272
273 C_GatherBuilder gather(g_ceph_context);
274 // This requires an OnFinisher wrapper because Journaler will call back the completion for write_head inside its own lock
275 // XXX but should maybe that be handled inside Journaler?
276 gather.set_finisher(new C_IO_Wrapper(mds, c));
277
278 // The inode of the default Journaler we will create
279 ino = MDS_INO_LOG_OFFSET + mds->get_nodeid();
280
281 // Instantiate Journaler and start async write to RADOS
282 ceph_assert(journaler == NULL);
283 journaler = new Journaler("mdlog", ino, mds->get_metadata_pool(),
284 CEPH_FS_ONDISK_MAGIC, mds->objecter, logger,
285 l_mdl_jlat, mds->finisher);
286 ceph_assert(journaler->is_readonly());
287 journaler->set_write_error_handler(new C_MDL_WriteError(this));
288 journaler->set_writeable();
289 journaler->create(&mds->mdcache->default_log_layout, g_conf()->mds_journal_format);
290 journaler->write_head(gather.new_sub());
291
292 // Async write JournalPointer to RADOS
293 JournalPointer jp(mds->get_nodeid(), mds->get_metadata_pool());
294 jp.front = ino;
295 jp.back = 0;
296 jp.save(mds->objecter, gather.new_sub());
297
298 gather.activate();
299
300 logger->set(l_mdl_expos, journaler->get_expire_pos());
301 logger->set(l_mdl_wrpos, journaler->get_write_pos());
302
303 submit_thread.create("mds-log-submit");
304}
305
306void MDLog::open(MDSContext *c)
307{

Callers 14

update_membershipMethod · 0.45
openMethod · 0.45
reopenMethod · 0.45
replayMethod · 0.45
_reformat_journalMethod · 0.45
initMethod · 0.45
boot_createMethod · 0.45
updateMethod · 0.45
QuiesceAgentMethod · 0.45
uninline_data_workMethod · 0.45
_generate_bootstrap_keysFunction · 0.45
prepare_commandMethod · 0.45

Calls 13

set_writeableMethod · 0.80
get_expire_posMethod · 0.80
set_finisherMethod · 0.45
get_nodeidMethod · 0.45
get_metadata_poolMethod · 0.45
is_readonlyMethod · 0.45
write_headMethod · 0.45
new_subMethod · 0.45
saveMethod · 0.45
activateMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected