]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: CInode doesn't always call assimilate_dirty_rstate_inodes_finish
authorGreg Farnum <gregf@hq.newdream.net>
Fri, 8 Oct 2010 21:38:19 +0000 (14:38 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Tue, 12 Oct 2010 14:49:56 +0000 (07:49 -0700)
This was causing a mis-match in the projection code, since
assimilate_...finish() calls pop_and_dirty_projected_inode(), but
the first half is only called on CEPH_LOCK_INEST locks. So make them match!

src/mds/CInode.cc

index 179a80c3640a8f83fb7340b9cc63a4128065d297..63bfe8261efa98bf206ecaef416098ea3ec9749a 100644 (file)
@@ -1584,7 +1584,8 @@ void CInode::finish_scatter_gather_update_accounted(int type, Mutation *mut, EMe
     metablob->add_dir(dir, true);
     mut->auth_pin(dir);
 
-    dir->assimilate_dirty_rstat_inodes_finish(mut, metablob);
+    if (type == CEPH_LOCK_INEST)
+      dir->assimilate_dirty_rstat_inodes_finish(mut, metablob);
   }
 }