From: Yan, Zheng Date: Fri, 28 Mar 2014 04:57:29 +0000 (+0800) Subject: mds: properly propagate dirty dirstat to auth inode X-Git-Tag: v0.79~58^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1b5e8f43061733ae3b17f945c8155e4c76a5b9ea;p=ceph.git mds: properly propagate dirty dirstat to auth inode Propagate dirty dirstat to freezing auth inode if the inode is already auth pinned by the Mutation. Otherwiese the dirstat can be propagated to inode after client changes inode's mtime. Fixes: #7880 Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index a26633a44d216..54371fcb4b9ab 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -1983,8 +1983,8 @@ void MDCache::predirty_journal_parents(Mutation *mut, EMetaBlob *blob, } bool stop = false; - if (!pin->can_auth_pin() || pin->is_ambiguous_auth()) { - dout(10) << "predirty_journal_parents can't auth pin or ambig on " << *pin << dendl; + if (!pin->is_auth() || (!mut->is_auth_pinned(pin) && !pin->can_auth_pin())) { + dout(10) << "predirty_journal_parents !auth or ambig or can't authpin on " << *pin << dendl; stop = true; }