summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-04-04 20:51:21 -0700
committerSage Weil <sage@newdream.net>2009-04-04 20:51:21 -0700
commitb70721e4e77957cf9825f9c82944fff55b085f6c (patch)
treefe48cb46a8ddccefe572560608a57f18cdd55347
parent2c822fff06f350e815ac806a8124b9f65c583a4b (diff)
downloadceph-b70721e4e77957cf9825f9c82944fff55b085f6c.tar.gz
mds: simplify EMetaBlob interface - don't pass explicit inode_t pointer
It is always in->get_projected_inode().
-rw-r--r--src/mds/Locker.cc2
-rw-r--r--src/mds/MDCache.cc10
-rw-r--r--src/mds/Server.cc28
-rw-r--r--src/mds/events/EMetaBlob.h8
-rw-r--r--src/mds/events/EOpen.h3
5 files changed, 25 insertions, 26 deletions
diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc
index 2b5022f4824..1e0a19c9371 100644
--- a/src/mds/Locker.cc
+++ b/src/mds/Locker.cc
@@ -1359,7 +1359,7 @@ bool Locker::check_inode_max_size(CInode *in, bool force_wrlock, bool update_siz
mdcache->predirty_journal_parents(mut, metablob, in, 0, PREDIRTY_PRIMARY);
// no cow, here!
CDentry *parent = in->get_projected_parent_dn();
- metablob->add_primary_dentry(parent, true, in, in->get_projected_inode());
+ metablob->add_primary_dentry(parent, true, in);
} else {
metablob->add_dir_context(in->get_projected_parent_dn()->get_dir());
mdcache->journal_dirty_inode(mut, metablob, in);
diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc
index 2fd02ea6f73..7eed98fbe93 100644
--- a/src/mds/MDCache.cc
+++ b/src/mds/MDCache.cc
@@ -357,7 +357,7 @@ void MDCache::_create_system_file(CDir *dir, const char *name, CInode *in, Conte
EUpdate *le = new EUpdate(mds->mdlog, "create system file");
predirty_journal_parents(mut, &le->metablob, in, dir, PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
- le->metablob.add_primary_dentry(dn, true, in, &in->inode);
+ le->metablob.add_primary_dentry(dn, true, in);
if (mdir)
le->metablob.add_dir(mdir, true, true, true); // dirty AND complete AND new
@@ -1396,7 +1396,7 @@ inode_t *MDCache::journal_dirty_inode(Mutation *mut, EMetaBlob *metablob, CInode
CDentry *dn = in->get_projected_parent_dn();
if (!dn->get_projected_linkage()->is_null()) // no need to cow a null dentry
journal_cow_dentry(mut, metablob, dn, follows);
- return metablob->add_primary_dentry(dn, true, in, in->get_projected_inode());
+ return metablob->add_primary_dentry(dn, true, in);
}
}
@@ -4247,7 +4247,7 @@ void MDCache::queue_file_recover(CInode *in)
}
in->parent->first = in->first;
- le->metablob.add_primary_dentry(in->parent, true, in, in->get_projected_inode());
+ le->metablob.add_primary_dentry(in->parent, true, in);
mds->mdlog->submit_entry(le, new C_MDC_QueuedCow(this, in, mut));
mds->mdlog->flush();
}
@@ -4458,7 +4458,7 @@ void MDCache::truncate_inode_finish(CInode *in, LogSegment *ls)
EUpdate *le = new EUpdate(mds->mdlog, "truncate finish");
le->metablob.add_dir_context(in->get_parent_dir());
- le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in, pi);
+ le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in);
le->metablob.add_truncate_finish(in->ino(), ls->offset);
journal_dirty_inode(mut, &le->metablob, in);
@@ -6550,7 +6550,7 @@ void MDCache::snaprealm_create(MDRequest *mdr, CInode *in)
predirty_journal_parents(mut, &le->metablob, in, 0, PREDIRTY_PRIMARY);
journal_cow_inode(mut, &le->metablob, in);
- le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in, 0, &snapbl);
mds->mdlog->submit_entry(le, new C_MDC_snaprealm_create_finish(this, mdr, mut, in));
mds->mdlog->flush();
diff --git a/src/mds/Server.cc b/src/mds/Server.cc
index 182b48a60b6..df52f974318 100644
--- a/src/mds/Server.cc
+++ b/src/mds/Server.cc
@@ -2064,7 +2064,7 @@ void Server::handle_client_setxattr(MDRequest *mdr)
le->metablob.add_client_req(req->get_reqid());
mdcache->predirty_journal_parents(mdr, &le->metablob, cur, 0, PREDIRTY_PRIMARY, false);
mdcache->journal_cow_inode(mdr, &le->metablob, cur);
- le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, pi, 0, 0, px);
+ le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, 0, 0, px);
journal_and_reply(mdr, cur, 0, le, new C_MDS_inode_update_finish(mds, mdr, cur));
}
@@ -2113,7 +2113,7 @@ void Server::handle_client_removexattr(MDRequest *mdr)
le->metablob.add_client_req(req->get_reqid());
mdcache->predirty_journal_parents(mdr, &le->metablob, cur, 0, PREDIRTY_PRIMARY, false);
mdcache->journal_cow_inode(mdr, &le->metablob, cur);
- le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, pi, 0, 0, px);
+ le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, 0, 0, px);
journal_and_reply(mdr, cur, 0, le, new C_MDS_inode_update_finish(mds, mdr, cur));
}
@@ -2416,7 +2416,7 @@ void Server::handle_client_mkdir(MDRequest *mdr)
le->metablob.add_client_req(req->get_reqid());
journal_allocated_inos(mdr, &le->metablob);
mdcache->predirty_journal_parents(mdr, &le->metablob, newi, dn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
- le->metablob.add_primary_dentry(dn, true, newi, &newi->inode);
+ le->metablob.add_primary_dentry(dn, true, newi);
le->metablob.add_dir(newdir, true, true, true); // dirty AND complete AND new
// issue a cap on the directory
@@ -3005,7 +3005,7 @@ void Server::do_link_rollback(bufferlist &rbl, int master, MDRequest *mdr)
ESlaveUpdate::OP_ROLLBACK, ESlaveUpdate::LINK);
le->commit.add_dir_context(parent);
le->commit.add_dir(parent, true);
- le->commit.add_primary_dentry(in->get_parent_dn(), true, 0, pi);
+ le->commit.add_primary_dentry(in->get_parent_dn(), true, 0);
mdlog->submit_entry(le, new C_MDS_LoggedLinkRollback(this, mut, mdr));
mdlog->flush();
@@ -3251,7 +3251,7 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn)
dnl->get_inode()->snaprealm->project_past_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
straydn->first = dnl->get_inode()->first;
- le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), 0, &snapbl);
} else {
// remote link. update remote inode.
mdcache->predirty_journal_parents(mdr, &le->metablob, dnl->get_inode(), dn->get_dir(), PREDIRTY_DIR, -1);
@@ -4013,11 +4013,11 @@ void Server::_rename_prepare(MDRequest *mdr,
} else
destdnl->get_inode()->snaprealm->project_past_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
straydn->first = destdnl->get_inode()->first;
- tji = metablob->add_primary_dentry(straydn, true, destdnl->get_inode(), tpi, 0, &snapbl);
+ tji = metablob->add_primary_dentry(straydn, true, destdnl->get_inode(), 0, &snapbl);
} else if (destdnl->is_remote()) {
metablob->add_dir_context(destdnl->get_inode()->get_parent_dir());
mdcache->journal_cow_dentry(mdr, metablob, destdnl->get_inode()->parent, CEPH_NOSNAP, 0, destdnl);
- tji = metablob->add_primary_dentry(destdnl->get_inode()->parent, true, destdnl->get_inode(), tpi);
+ tji = metablob->add_primary_dentry(destdnl->get_inode()->parent, true, destdnl->get_inode());
}
}
@@ -4030,13 +4030,13 @@ void Server::_rename_prepare(MDRequest *mdr,
destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
metablob->add_remote_dentry(destdn, true, srcdnl->get_remote_ino(), srcdnl->get_remote_d_type());
mdcache->journal_cow_dentry(mdr, metablob, srcdnl->get_inode()->get_parent_dn(), CEPH_NOSNAP, 0, srcdnl);
- ji = metablob->add_primary_dentry(srcdnl->get_inode()->get_parent_dn(), true, srcdnl->get_inode(), pi);
+ ji = metablob->add_primary_dentry(srcdnl->get_inode()->get_parent_dn(), true, srcdnl->get_inode());
} else {
if (!destdnl->is_null())
mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
else
destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
- metablob->add_primary_dentry(destdn, true, destdnl->get_inode(), pi);
+ metablob->add_primary_dentry(destdn, true, destdnl->get_inode());
}
} else if (srcdnl->is_primary()) {
// project snap parent update?
@@ -4048,7 +4048,7 @@ void Server::_rename_prepare(MDRequest *mdr,
mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
else
destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
- ji = metablob->add_primary_dentry(destdn, true, srcdnl->get_inode(), pi, 0, &snapbl);
+ ji = metablob->add_primary_dentry(destdn, true, srcdnl->get_inode(), 0, &snapbl);
}
// src
@@ -4696,12 +4696,12 @@ void Server::do_rename_rollback(bufferlist &rbl, int master, MDRequest *mdr)
ESlaveUpdate *le = new ESlaveUpdate(mdlog, "slave_rename_rollback", rollback.reqid, master,
ESlaveUpdate::OP_ROLLBACK, ESlaveUpdate::RENAME);
le->commit.add_dir_context(srcdir);
- le->commit.add_primary_dentry(srcdn, true, 0, pi);
+ le->commit.add_primary_dentry(srcdn, true, 0);
le->commit.add_dir_context(destdir);
if (destdnl->is_null())
le->commit.add_null_dentry(destdn, true);
else if (destdnl->is_primary())
- le->commit.add_primary_dentry(destdn, true, 0, ti);
+ le->commit.add_primary_dentry(destdn, true, 0);
else if (destdnl->is_remote())
le->commit.add_remote_dentry(destdn, true);
if (straydn) {
@@ -5271,7 +5271,7 @@ void Server::handle_client_mksnap(MDRequest *mdr)
if (newrealm)
diri->close_snaprealm(true);
- le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
mdlog->submit_entry(le, new C_MDS_mksnap_finish(mds, mdr, diri, info));
mdlog->flush();
@@ -5408,7 +5408,7 @@ void Server::handle_client_rmsnap(MDRequest *mdr)
diri->snaprealm->snaps[snapid] = old_info;
diri->snaprealm->seq = old_seq;
diri->snaprealm->last_destroyed = old_ld;
- le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+ le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
mdlog->submit_entry(le, new C_MDS_rmsnap_finish(mds, mdr, diri, snapid));
mdlog->flush();
diff --git a/src/mds/events/EMetaBlob.h b/src/mds/events/EMetaBlob.h
index 6c94c724d9d..16ca7fe449c 100644
--- a/src/mds/events/EMetaBlob.h
+++ b/src/mds/events/EMetaBlob.h
@@ -491,13 +491,13 @@ private:
// return remote pointer to to-be-journaled inode
inode_t *add_primary_dentry(CDentry *dn, bool dirty,
- CInode *in=0, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+ CInode *in=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
map<string,bufferptr> *px=0) {
return add_primary_dentry(add_dir(dn->get_dir(), false),
- dn, dirty, in, pi, pdft, psnapbl, px);
+ dn, dirty, in, pdft, psnapbl, px);
}
inode_t *add_primary_dentry(dirlump& lump, CDentry *dn, bool dirty,
- CInode *in=0, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+ CInode *in=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
map<string,bufferptr> *px=0) {
if (!in)
in = dn->get_projected_linkage()->get_inode();
@@ -506,7 +506,7 @@ private:
in->last_journaled = my_offset;
//cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
- if (!pi) pi = in->get_projected_inode();
+ inode_t *pi = in->get_projected_inode();
if (!pdft) pdft = &in->dirfragtree;
if (!px) px = &in->xattrs;
diff --git a/src/mds/events/EOpen.h b/src/mds/events/EOpen.h
index 40c872cea84..d72572fda8e 100644
--- a/src/mds/events/EOpen.h
+++ b/src/mds/events/EOpen.h
@@ -33,9 +33,8 @@ public:
void add_clean_inode(CInode *in) {
if (!in->is_root()) {
- inode_t *pi = in->get_projected_inode();
metablob.add_dir_context(in->get_projected_parent_dn()->get_dir());
- metablob.add_primary_dentry(in->get_projected_parent_dn(), false, 0, pi);
+ metablob.add_primary_dentry(in->get_projected_parent_dn(), false, 0);
inos.push_back(in->ino());
}
}