the 'will dirty' check is wrong because we don't always project fnode.
Fixes: http://tracker.ceph.com/issues/21584
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit
461bbc7e89a9ed440478f30145158b4989c137d0)
// caller should hold auth pin of this
void CDir::log_mark_dirty()
{
- if (is_dirty() || is_projected())
+ if (is_dirty() || projected_version > get_version())
return; // noop if it is already dirty or will be dirty
version_t pv = pre_dirty();