]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: dir->mark_new() should together with dir->mark_dirty() 39128/head
authorYan, Zheng <zyan@redhat.com>
Mon, 16 Nov 2020 14:44:00 +0000 (22:44 +0800)
committerNathan Cutler <ncutler@suse.com>
Thu, 28 Jan 2021 13:11:46 +0000 (14:11 +0100)
Otherwise, the 'new' flag won't get cleared after dir is committed.
The leftover 'new' flag will confuse later journal and dir commit.

Fixes: https://tracker.ceph.com/issues/48249
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit be4710a1496c46f3307966ddfa416e932d878603)

Conflicts:
        src/mds/MDCache.cc
- the "mark_dirty" method requires an additional boilerplate argument in
  nautilus

src/mds/MDCache.cc

index 03c36c093364bd369f61885d8279cc220e7f3e94..2a294a8ddb7475c01194197d7bf079c1ab56a2e4 100644 (file)
@@ -11676,6 +11676,7 @@ void MDCache::_fragment_logged(MDRequestRef& mdr)
     CDir *dir = *p;
     dout(10) << " storing result frag " << *dir << dendl;
 
+    dir->mark_dirty(dir->pre_dirty(), mdr->ls);
     dir->mark_new(mdr->ls);
 
     // freeze and store them too