mds: use cache trimmer to purge stray inodes.

Current method to purge stray inode is call MDCache::maybe_eval_stray()
after releasing a reference to the stray inode. It's difficult to make
this method work right, because there are many places that can release
inode reference.

Previous commit makes MDCache::trim_inode() purge stray inode instead
of trimming stray inode from the cache. To purge stray inodes that are
not in-use, we just need to trim dentries in the LRU bottom list.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: move stray dentries to lru bottom list during mds recovery

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: allow purging 'dirty parent' inode

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: purge backtrace/dirfrag objects when expiring log segment

For MDS metadata, most updates happen in LogSegment::try_to_expire().
The only exception is removing stray inode's backtrace. This patch
makes LogSegment::try_to_expire() also handle backtrace removal.

The basic idea is: define a new class PurgingInode which contains all
information required to purging backtrace/dirfrags. After "purge_stray"
event is logged, instantiate a new PurgeInode object and add it to the
log segment. When expiring a log segment, LogSegment::try_to_expire()
iterates PurgeInode objects in the log segment and purges destroyed
inodes' backtrace/dirfrags.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>