]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: properly project past snaprealm parent while renaming files
authorYan, Zheng <zyan@redhat.com>
Fri, 19 Dec 2014 07:30:48 +0000 (15:30 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 5 Feb 2015 14:40:38 +0000 (22:40 +0800)
Signed-off-by: Yan, Zheng <zyan@redhat.com>
src/mds/Server.cc

index 0ef3fea243e2f1bd07a9e1582f46675c86aee905..3af913259ad8d55f7dbe0ec5708be98f4c1ce0af 100644 (file)
@@ -6401,7 +6401,7 @@ void Server::_rename_prepare(MDRequestRef& mdr,
     if (destdnl->is_primary()) {
       if (destdn->is_auth()) {
        // project snaprealm, too
-       if (oldin->snaprealm || src_realm->get_newest_seq() + 1 > srcdn->first)
+       if (oldin->snaprealm || dest_realm->get_newest_seq() + 1 > destdn->first)
          oldin->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm());
        straydn->first = MAX(oldin->first, next_dest_snap);
        metablob->add_primary_dentry(straydn, oldin, true, true);
@@ -6447,7 +6447,7 @@ void Server::_rename_prepare(MDRequestRef& mdr,
     }
   } else if (srcdnl->is_primary()) {
     // project snap parent update?
-    if (destdn->is_auth() &&
+    if (destdn->is_auth() && src_realm != dest_realm &&
         (srci->snaprealm || src_realm->get_newest_seq() + 1 > srcdn->first))
       srci->project_past_snaprealm_parent(dest_realm);