mds: fix inode version used for inest in decode_lock_state

We need to pass the inode rstat's version into finish_scatter_update, not
the shadowed local variable.  Otherwise we don't update the dirfrag when
we should.

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2010-11-04 22:19:53 -07:00
parent 53f6ed163b
commit 9b6d96e9aa

View File

@ -1298,7 +1298,8 @@ void CInode::decode_lock_state(int type, bufferlist& bl)
<< " on " << *dir << dendl;
dir->first = fgfirst;
fnode_t *pf = dir->get_projected_fnode();
finish_scatter_update(&filelock, dir, dirstat.version, pf->accounted_fragstat.version);
finish_scatter_update(&filelock, dir,
inode.dirstat.version, pf->accounted_fragstat.version);
}
}
}
@ -1350,7 +1351,8 @@ void CInode::decode_lock_state(int type, bufferlist& bl)
<< " on " << *dir << dendl;
dir->first = fgfirst;
fnode_t *pf = dir->get_projected_fnode();
finish_scatter_update(&nestlock, dir, rstat.version, pf->accounted_rstat.version);
finish_scatter_update(&nestlock, dir,
inode.rstat.version, pf->accounted_rstat.version);
}
}
}