From 0ab0744e6f082a25429a113791b3138b31d8fd29 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Thu, 6 Dec 2012 09:28:46 +0800 Subject: [PATCH] mds: properly mark dirfrag dirty If predirty_journal_parents() does not propagate changes in dir's fragstat into corresponding inode's dirstat, it should mark the inode as dirfrag dirty. This happens when we modify dir fragments that are auth subtree roots. Signed-off-by: Yan, Zheng --- src/mds/MDCache.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index c345b11e448e9..09d9b7cbc701b 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -1993,6 +1993,11 @@ void MDCache::predirty_journal_parents(Mutation *mut, EMetaBlob *blob, mds->locker->mark_updated_scatterlock(&pin->nestlock); mut->ls->dirty_dirfrag_nest.push_back(&pin->item_dirty_dirfrag_nest); mut->add_updated_lock(&pin->nestlock); + if (do_parent_mtime || linkunlink) { + mds->locker->mark_updated_scatterlock(&pin->filelock); + mut->ls->dirty_dirfrag_dir.push_back(&pin->item_dirty_dirfrag_dir); + mut->add_updated_lock(&pin->filelock); + } break; } if (!mut->wrlocks.count(&pin->versionlock)) -- 2.39.5