From a9998c8d96c8af6ca3e31fff1c557ea8efe0e230 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 17 Aug 2011 15:36:06 -0700 Subject: [PATCH] mds: avoid passing snapbl around explicitly We now properly track projected snaprealm/sr_t's. Use that for journaling instead of manually passing around a snapbl. Signed-off-by: Sage Weil --- src/mds/CInode.cc | 3 +-- src/mds/CInode.h | 2 +- src/mds/Server.cc | 17 +++++++---------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 8b33035565a66..aa306adfcb868 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -367,7 +367,7 @@ sr_t *CInode::project_snaprealm(snapid_t snapid) /* if newparent != parent, add parent to past_parents if parent DNE, we need to find what the parent actually is and fill that in */ -void CInode::project_past_snaprealm_parent(SnapRealm *newparent, bufferlist& snapbl) +void CInode::project_past_snaprealm_parent(SnapRealm *newparent) { sr_t *new_snap = project_snaprealm(); SnapRealm *oldparent; @@ -384,7 +384,6 @@ void CInode::project_past_snaprealm_parent(SnapRealm *newparent, bufferlist& sna new_snap->past_parents[oldparentseq].first = new_snap->current_parent_since; new_snap->current_parent_since = MAX(oldparentseq, newparent->get_last_created()) + 1; } - new_snap->encode(snapbl); } void CInode::pop_projected_snaprealm(sr_t *next_snaprealm) diff --git a/src/mds/CInode.h b/src/mds/CInode.h index ba0c1b101b1d0..b28fe58065fc6 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -350,7 +350,7 @@ public: } return &snaprealm->srnode; } - void project_past_snaprealm_parent(SnapRealm *newparent, bufferlist& snapbl); + void project_past_snaprealm_parent(SnapRealm *newparent); private: void pop_projected_snaprealm(sr_t *next_snaprealm); diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 2a8ef6c68d823..7f0fa4785f872 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -4547,10 +4547,9 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn) mdcache->predirty_journal_parents(mdr, &le->metablob, in, straydn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1); // project snaprealm, too - bufferlist snapbl; - in->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl); + in->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm()); - le->metablob.add_primary_dentry(straydn, true, in, 0, &snapbl); + le->metablob.add_primary_dentry(straydn, true, in, 0); } else { // remote link. update remote inode. mdcache->predirty_journal_parents(mdr, &le->metablob, in, dn->get_dir(), PREDIRTY_DIR, -1); @@ -5625,10 +5624,9 @@ void Server::_rename_prepare(MDRequest *mdr, if (destdnl->is_primary()) { if (destdn->is_auth()) { // project snaprealm, too - bufferlist snapbl; - oldin->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl); + oldin->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm()); straydn->first = MAX(oldin->first, next_dest_snap); - tji = metablob->add_primary_dentry(straydn, true, oldin, 0, &snapbl); + tji = metablob->add_primary_dentry(straydn, true, oldin, 0); } } else if (destdnl->is_remote()) { if (oldin->is_auth()) { @@ -5670,9 +5668,8 @@ void Server::_rename_prepare(MDRequest *mdr, } } else if (srcdnl->is_primary()) { // project snap parent update? - bufferlist snapbl; if (destdn->is_auth() && srci->snaprealm) - srci->project_past_snaprealm_parent(dest_realm, snapbl); + srci->project_past_snaprealm_parent(dest_realm); if (destdn->is_auth() && !destdnl->is_null()) mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl); @@ -5680,11 +5677,11 @@ void Server::_rename_prepare(MDRequest *mdr, destdn->first = MAX(destdn->first, next_dest_snap); if (destdn->is_auth()) - ji = metablob->add_primary_dentry(destdn, true, srci, 0, &snapbl); + ji = metablob->add_primary_dentry(destdn, true, srci, 0); else if (force_journal) { dout(10) << " forced journaling destdn " << *destdn << dendl; metablob->add_dir_context(destdn->get_dir()); - ji = metablob->add_primary_dentry(destdn, true, srci, 0, &snapbl); + ji = metablob->add_primary_dentry(destdn, true, srci, 0); } } -- 2.39.5