From: Patrick Donnelly Date: Wed, 26 Sep 2018 17:08:45 +0000 (-0700) Subject: mds: set rctime on new system inode X-Git-Tag: v14.0.1~33^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a6fe15a29e53995e10e79e1338801cd53232ee38;p=ceph.git mds: set rctime on new system inode Fixes: http://tracker.ceph.com/issues/36221 Signed-off-by: Patrick Donnelly --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index ed822ce77db..cc14f92ea48 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -369,7 +369,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; @@ -416,13 +417,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; + ceph_assert(rootdir->fnode.accounted_fragstat == rootdir->fnode.fragstat); + ceph_assert(rootdir->fnode.fragstat == root->inode.dirstat); + ceph_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());