]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add FIXME for snaprealm on rename slave
authorSage Weil <sage@newdream.net>
Wed, 23 Mar 2011 23:53:10 +0000 (16:53 -0700)
committerSage Weil <sage@newdream.net>
Wed, 23 Mar 2011 23:53:10 +0000 (16:53 -0700)
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 <sage@newdream.net>
src/mds/Server.cc

index f92f7cf73e65c0d22c6d15c9f13d1d7881acb5f2..fcd59c556b888093311740652bf10b82a3709c70 100644 (file)
@@ -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!
     }
   }