From 4dedab64c22072d0f4e940af168ce2e1080e314f Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Wed, 12 Mar 2014 09:42:45 -0700 Subject: [PATCH] MDS: switch cache object classes to use MutationRef instead of raw pointers Signed-off-by: Greg Farnum --- src/mds/CDentry.h | 4 ++-- src/mds/CDir.cc | 2 +- src/mds/CDir.h | 2 +- src/mds/CInode.cc | 11 +++++------ src/mds/CInode.h | 4 ++-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/mds/CDentry.h b/src/mds/CDentry.h index 39a4c55380bdb..41ed83d600a2f 100644 --- a/src/mds/CDentry.h +++ b/src/mds/CDentry.h @@ -242,11 +242,11 @@ public: return get_projected_linkage()->inode; } - bool use_projected(client_t client, Mutation *mut) { + bool use_projected(client_t client, const MutationRef& mut) const { return lock.can_read_projected(client) || lock.get_xlock_by() == mut; } - linkage_t *get_linkage(client_t client, Mutation *mut) { + linkage_t *get_linkage(client_t client, const MutationRef& mut) { return use_projected(client, mut) ? get_projected_linkage() : get_linkage(); } diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc index 35573b656896b..b89ac08e7461e 100644 --- a/src/mds/CDir.cc +++ b/src/mds/CDir.cc @@ -1050,7 +1050,7 @@ void CDir::assimilate_dirty_rstat_inodes() dout(10) << "assimilate_dirty_rstat_inodes done" << dendl; } -void CDir::assimilate_dirty_rstat_inodes_finish(Mutation *mut, EMetaBlob *blob) +void CDir::assimilate_dirty_rstat_inodes_finish(MutationRef& mut, EMetaBlob *blob) { if (!state_test(STATE_ASSIMRSTAT)) return; diff --git a/src/mds/CDir.h b/src/mds/CDir.h index dc1037a2b82fa..5ef2d65372c5a 100644 --- a/src/mds/CDir.h +++ b/src/mds/CDir.h @@ -179,7 +179,7 @@ public: void resync_accounted_fragstat(); void resync_accounted_rstat(); void assimilate_dirty_rstat_inodes(); - void assimilate_dirty_rstat_inodes_finish(Mutation *mut, EMetaBlob *blob); + void assimilate_dirty_rstat_inodes_finish(MutationRef& mut, EMetaBlob *blob); protected: version_t projected_version; diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index e475dfb2a1767..f8a25d592adea 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -1678,9 +1678,9 @@ void CInode::start_scatter(ScatterLock *lock) struct C_Inode_FragUpdate : public Context { CInode *in; CDir *dir; - Mutation *mut; + MutationRef mut; - C_Inode_FragUpdate(CInode *i, CDir *d, Mutation *m) : in(i), dir(d), mut(m) {} + C_Inode_FragUpdate(CInode *i, CDir *d, MutationRef& m) : in(i), dir(d), mut(m) {} void finish(int r) { in->_finish_frag_update(dir, mut); } @@ -1701,7 +1701,7 @@ void CInode::finish_scatter_update(ScatterLock *lock, CDir *dir, dout(10) << "finish_scatter_update " << fg << " journaling accounted scatterstat update v" << inode_version << dendl; MDLog *mdlog = mdcache->mds->mdlog; - Mutation *mut = new Mutation; + MutationRef mut(new MutationImpl); mut->ls = mdlog->get_current_segment(); inode_t *pi = get_projected_inode(); @@ -1742,12 +1742,11 @@ void CInode::finish_scatter_update(ScatterLock *lock, CDir *dir, } } -void CInode::_finish_frag_update(CDir *dir, Mutation *mut) +void CInode::_finish_frag_update(CDir *dir, MutationRef& mut) { dout(10) << "_finish_frag_update on " << *dir << dendl; mut->apply(); mut->cleanup(); - delete mut; } @@ -1952,7 +1951,7 @@ void CInode::finish_scatter_gather_update(int type) } } -void CInode::finish_scatter_gather_update_accounted(int type, Mutation *mut, EMetaBlob *metablob) +void CInode::finish_scatter_gather_update_accounted(int type, MutationRef& mut, EMetaBlob *metablob) { dout(10) << "finish_scatter_gather_update_accounted " << type << " on " << *this << dendl; assert(is_auth()); diff --git a/src/mds/CInode.h b/src/mds/CInode.h index efc9825aa353f..cb1add372ecf5 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -663,7 +663,7 @@ public: void encode_lock_state(int type, bufferlist& bl); void decode_lock_state(int type, bufferlist& bl); - void _finish_frag_update(CDir *dir, Mutation *mut); + void _finish_frag_update(CDir *dir, MutationRef& mut); void clear_dirty_scattered(int type); bool is_dirty_scattered(); @@ -673,7 +673,7 @@ public: void finish_scatter_update(ScatterLock *lock, CDir *dir, version_t inode_version, version_t dir_accounted_version); void finish_scatter_gather_update(int type); - void finish_scatter_gather_update_accounted(int type, Mutation *mut, EMetaBlob *metablob); + void finish_scatter_gather_update_accounted(int type, MutationRef& mut, EMetaBlob *metablob); // -- snap -- void open_snaprealm(bool no_split=false); -- 2.39.5