From: Patrick Donnelly Date: Wed, 26 Sep 2018 17:08:45 +0000 (-0700) Subject: mds: set rctime on new system inode X-Git-Tag: v13.2.3~37^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6b47827aa3ca5653272a5b4bf12f1851cebd0d76;p=ceph.git mds: set rctime on new system inode Fixes: http://tracker.ceph.com/issues/36221 Signed-off-by: Patrick Donnelly (cherry picked from commit a6fe15a29e53995e10e79e1338801cd53232ee38) Conflicts: src/mds/MDCache.cc - master uses g_conf(), mimic g_conf - master uses ceph_assert, mimic assert --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 390f662ef349..8158e222edcd 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -404,7 +404,8 @@ void MDCache::create_unlinked_system_inode(CInode *in, inodeno_t ino, memset(&in->inode.dir_layout, 0, sizeof(in->inode.dir_layout)); if (in->inode.is_dir()) { in->inode.dir_layout.dl_dir_hash = g_conf->mds_default_dir_hash; - ++in->inode.rstat.rsubdirs; + in->inode.rstat.rsubdirs = 1; /* itself */ + in->inode.rstat.rctime = in->inode.ctime; } else { in->inode.layout = default_file_layout; ++in->inode.rstat.rfiles; @@ -451,13 +452,12 @@ void MDCache::create_empty_hierarchy(MDSGather *gather) adjust_subtree_auth(rootdir, mds->get_nodeid()); rootdir->dir_rep = CDir::REP_ALL; //NONE; - rootdir->fnode.accounted_fragstat = rootdir->fnode.fragstat; - rootdir->fnode.accounted_rstat = rootdir->fnode.rstat; - - root->inode.dirstat = rootdir->fnode.fragstat; - root->inode.rstat = rootdir->fnode.rstat; - ++root->inode.rstat.rsubdirs; - root->inode.accounted_rstat = root->inode.rstat; + assert(rootdir->fnode.accounted_fragstat == rootdir->fnode.fragstat); + assert(rootdir->fnode.fragstat == root->inode.dirstat); + assert(rootdir->fnode.accounted_rstat == rootdir->fnode.rstat); + /* Do no update rootdir rstat information of the fragment, rstat upkeep magic + * assume version 0 is stale/invalid. + */ rootdir->mark_complete(); rootdir->mark_dirty(rootdir->pre_dirty(), mds->mdlog->get_current_segment());