Bug #6914 » 0001-mds-always-store-backtrace-xattr-in-the-default-pool.patch
src/mds/CInode.cc | ||
---|---|---|
object_locator_t oloc(pool);
|
||
Context *fin2 = new C_Inode_StoredBacktrace(this, inode.backtrace_version, fin);
|
||
if (!state_test(STATE_DIRTYPOOL)) {
|
||
if (!state_test(STATE_DIRTYPOOL) || inode.old_pools.empty()) {
|
||
mdcache->mds->objecter->mutate(oid, oloc, op, snapc, ceph_clock_now(g_ceph_context),
|
||
0, NULL, fin2);
|
||
return;
|
src/mds/MDCache.cc | ||
---|---|---|
info.want_replica = want_replica;
|
||
info.want_xlocked = want_xlocked;
|
||
info.tid = ++open_ino_last_tid;
|
||
info.pool = pool >= 0 ? pool : mds->mdsmap->get_first_data_pool();
|
||
info.pool = pool >= 0 ? pool : default_file_layout.fl_pg_pool;
|
||
info.waiters.push_back(fin);
|
||
do_open_ino(ino, info, 0);
|
||
}
|
src/mds/Server.cc | ||
---|---|---|
// dirty inode, dn, dir
|
||
newi->inode.version--; // a bit hacky, see C_MDS_mknod_finish
|
||
newi->mark_dirty(newi->inode.version+1, mdr->ls);
|
||
newi->_mark_dirty_parent(mdr->ls);
|
||
newi->_mark_dirty_parent(mdr->ls, true);
|
||
mdr->apply();
|
||
... | ... | |
dn->push_projected_linkage(in);
|
||
in->inode.version = dn->pre_dirty();
|
||
if (layout.fl_pg_pool != mdcache->default_file_layout.fl_pg_pool)
|
||
in->inode.add_old_pool(mdcache->default_file_layout.fl_pg_pool);
|
||
in->inode.update_backtrace();
|
||
if (cmode & CEPH_FILE_MODE_WR) {
|
||
in->inode.client_ranges[client].range.first = 0;
|
||
... | ... | |
le->metablob.add_client_req(req->get_reqid(), req->get_oldest_client_tid());
|
||
journal_allocated_inos(mdr, &le->metablob);
|
||
mdcache->predirty_journal_parents(mdr, &le->metablob, in, dn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
|
||
le->metablob.add_primary_dentry(dn, in, true, true);
|
||
le->metablob.add_primary_dentry(dn, in, true, true, true);
|
||
// do the open
|
||
mds->locker->issue_new_caps(in, cmode, mdr->session, realm, req->is_replay());
|
||
... | ... | |
// a new version of hte inode since it's just been created)
|
||
newi->inode.version--;
|
||
newi->mark_dirty(newi->inode.version + 1, mdr->ls);
|
||
newi->_mark_dirty_parent(mdr->ls);
|
||
newi->_mark_dirty_parent(mdr->ls, true);
|
||
// mkdir?
|
||
if (newi->inode.is_dir()) {
|
||
... | ... | |
newi->inode.mode |= S_IFREG;
|
||
newi->inode.version = dn->pre_dirty();
|
||
newi->inode.rstat.rfiles = 1;
|
||
if (layout.fl_pg_pool != mdcache->default_file_layout.fl_pg_pool)
|
||
newi->inode.add_old_pool(mdcache->default_file_layout.fl_pg_pool);
|
||
newi->inode.update_backtrace();
|
||
// if the client created a _regular_ file via MKNOD, it's highly likely they'll
|
||
... | ... | |
|
||
mdcache->predirty_journal_parents(mdr, &le->metablob, newi, dn->get_dir(),
|
||
PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
|
||
le->metablob.add_primary_dentry(dn, newi, true, true);
|
||
le->metablob.add_primary_dentry(dn, newi, true, true, true);
|
||
journal_and_reply(mdr, newi, dn, le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows));
|
||
}
|