Skip to content

Commit

Permalink
mds: todo rejoin bug
Browse files Browse the repository at this point in the history
  • Loading branch information
liewegas committed Mar 30, 2010
1 parent 58ce32c commit 47286cb
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 5 deletions.
5 changes: 1 addition & 4 deletions src/TODO
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,7 @@ filestore
- need an osdmap cache layer?

bugs
- mds: rdlock forwards to auth on inode file lock, leading to an infinite forward loop if dirfrag is a subtree on another node.
- mds states
- closing -> opening transition
- mds prepare_force_open_sessions, then import aborts.. session is still OPENING but no client_session is sent...
- mds rejoin: invented dirfrags (MDCache.cc:3469) have version=0; subsequent modification of dentries/inodes predirty a bad (small) version #.
- rm -r failure (on kernel tree)
- dbench 1, restart mds (may take a few times), dbench will error out.

Expand Down
4 changes: 3 additions & 1 deletion src/mds/MDCache.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3460,12 +3460,14 @@ void MDCache::handle_cache_rejoin_strong(MMDSCacheRejoin *strong)
CDir *dir = get_dirfrag(p->first);
if (!dir) {
CInode *in = get_inode(p->first.ino);
if (!in) in = rejoin_invent_inode(p->first.ino, CEPH_NOSNAP);
if (!in)
in = rejoin_invent_inode(p->first.ino, CEPH_NOSNAP);
if (!in->is_dir()) {
assert(in->state_test(CInode::STATE_REJOINUNDEF));
in->inode.mode = S_IFDIR;
}
dir = in->get_or_open_dirfrag(this, p->first.frag);
dout(10) << " invented " << *dir << dendl;
} else {
dout(10) << " have " << *dir << dendl;
}
Expand Down

0 comments on commit 47286cb

Please sign in to comment.