]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: dir->mark_new() should together with dir->mark_dirty() 38352/head
authorYan, Zheng <zyan@redhat.com>
Mon, 16 Nov 2020 14:44:00 +0000 (22:44 +0800)
committerNathan Cutler <ncutler@suse.com>
Sat, 16 Jan 2021 12:17:10 +0000 (13:17 +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
- in octopus, CDir::mark_dirty() takes a version_t argument in addition to the
  LogSegment* pointer

src/mds/MDCache.cc

index 77266416f2021a03d9e0136c0d8469d7b92e6e35..73ca762962f60095d904c7e06744ef6735bf10d8 100644 (file)
@@ -11995,6 +11995,7 @@ void MDCache::_fragment_logged(MDRequestRef& mdr)
   for (const auto& dir : info.resultfrags) {
     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