From: Sage Weil Date: Wed, 23 Mar 2011 23:53:10 +0000 (-0700) Subject: mds: add FIXME for snaprealm on rename slave X-Git-Tag: v0.26~22^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=33a419094c87d8262ce891aaf6f58daae05a5a67;p=ceph.git mds: add FIXME for snaprealm on rename slave Replicas don't get the snaprealm opened or updated on rename. For example: everything on mds0 mksnap on /foo /foo/bar has a replica on mds1 rename /foo/bar /bar -> a snaprealm will get created for /bar on mds0 -> mds1 currently does not do anything about that... it needs to get an accurate replica of the snaprealm portion of the inode, either from the master, or via a lock update, or something. See: #925 Signed-off-by: Sage Weil --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index f92f7cf73e65..fcd59c556b88 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -5064,6 +5064,9 @@ void Server::_rename_apply(MDRequest *mdr, CDentry *srcdn, CDentry *destdn, CDen oldin->pop_and_dirty_projected_inode(mdr->ls); if (oldin->snaprealm && !hadrealm) mdcache->do_realm_invalidate_and_update_notify(oldin, CEPH_SNAP_OP_SPLIT); + } else { + // FIXME this snaprealm is not filled out correctly + //oldin->open_snaprealm(); might be sufficient.. } } else { destdn->get_dir()->unlink_inode(destdn); @@ -5114,6 +5117,8 @@ void Server::_rename_apply(MDRequest *mdr, CDentry *srcdn, CDentry *destdn, CDen desti->state_set(CInode::STATE_DIRTYPARENT); dout(10) << "added dir to logsegment renamed_files list " << *desti << dendl; } + } else { + // FIXME: fix up snaprealm! } }