// CHEAT. there's no real need to journal our intent to purge, since
// that is implicit in the dentry's presence and non-use in the stray
// dir. on recovery, we'll need to re-eval all strays anyway.
+ //
+ // as a result, we adjust EPurgeFinish::replay to forgive us if hte
+ // inode isn't in the cache. If we later decide to journal our
+ // intent here, add that assertion back.
purge_inode(in, 0, in->inode.size, mds->mdlog->get_current_segment());
waiting_for_purge[in][0].push_back(new C_MDC_PurgeStrayPurged(this, dn));
{
dout(10) << "EPurgeFinish.replay " << ino << " " << oldsize << " -> " << newsize << dendl;
CInode *in = mds->mdcache->get_inode(ino);
+
+ // if we don't have *in at this point, it's because purge_stray is lazy and
+ // doesn't jouranl it's intent to purge. no worries, if *in isn't in the cache,
+ // it's not in the purge table either. we'll eval_stray when we finish
+ // recovery.
+ //assert(in);
if (in)
mds->mdcache->remove_recovered_purge(in, newsize, oldsize);
}