Expose MDCache::fetch_backtrace and call it from the CInode context.
Signed-off-by: Greg Farnum <greg@inktank.com>
fin->complete(0);
}
+void CInode::fetch_backtrace(Context *fin, bufferlist *backtrace)
+{
+ int64_t pool;
+ if (is_dir())
+ pool = mdcache->mds->mdsmap->get_metadata_pool();
+ else
+ pool = inode.layout.fl_pg_pool;
+
+ mdcache->fetch_backtrace(inode.ino, pool, *backtrace, fin);
+}
+
void CInode::_mark_dirty_parent(LogSegment *ls, bool dirty_pool)
{
if (!state_test(STATE_DIRTYPARENT)) {
void build_backtrace(int64_t pool, inode_backtrace_t& bt);
void store_backtrace(MDSInternalContextBase *fin, int op_prio=-1);
void _stored_backtrace(version_t v, Context *fin);
+ void fetch_backtrace(Context *fin, bufferlist *backtrace);
void _mark_dirty_parent(LogSegment *ls, bool dirty_pool=false);
void clear_dirty_parent();
bool is_dirty_parent() { return state_test(STATE_DIRTYPARENT); }
dn->get_dir()->get_inode()->is_stray())
eval_stray(dn, delay);
}
+
+ void fetch_backtrace(inodeno_t ino, int64_t pool, bufferlist& bl, Context *fin);
+
protected:
void scan_stray_dir(dirfrag_t next=dirfrag_t());
- void fetch_backtrace(inodeno_t ino, int64_t pool, bufferlist& bl, Context *fin);
void purge_stray(CDentry *dn);
void _purge_stray_purged(CDentry *dn, int r=0);
void _purge_stray_logged(CDentry *dn, version_t pdv, LogSegment *ls);