From: Greg Farnum Date: Fri, 8 Oct 2010 21:38:19 +0000 (-0700) Subject: mds: CInode doesn't always call assimilate_dirty_rstate_inodes_finish X-Git-Tag: v0.22~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4ba060ccfa8b5ea4677c84f7872a69db3be0ebb7;p=ceph.git mds: CInode doesn't always call assimilate_dirty_rstate_inodes_finish 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! --- diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 179a80c3640a..63bfe8261efa 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -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); } }