]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: clear dirty inode rstat if import fails
authorYan, Zheng <zheng.z.yan@intel.com>
Sat, 16 Mar 2013 04:38:56 +0000 (12:38 +0800)
committerGreg Farnum <greg@inktank.com>
Mon, 1 Apr 2013 16:26:24 +0000 (09:26 -0700)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
src/mds/CDir.cc
src/mds/Migrator.cc

index c412a48dd797356b444b7d45b7f541860342c33e..4670a1887eb692a13f67daf076dff0891cc5435e 100644 (file)
@@ -1022,6 +1022,7 @@ void CDir::assimilate_dirty_rstat_inodes()
   for (elist<CInode*>::iterator p = dirty_rstat_inodes.begin_use_current();
        !p.end(); ++p) {
     CInode *in = *p;
+    assert(in->is_auth());
     if (in->is_frozen())
       continue;
 
index bf64ed40f8309ecaffdb80b30cca0322c9f06527..dcefd2336901db5ba4c1c09b8d95b2c939489a61 100644 (file)
@@ -2052,6 +2052,8 @@ void Migrator::import_reverse(CDir *dir)
        in->clear_replica_map();
        if (in->is_dirty()) 
          in->mark_clean();
+       in->clear_dirty_rstat();
+
        in->authlock.clear_gather();
        in->linklock.clear_gather();
        in->dirfragtreelock.clear_gather();