]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
MDCache: create_unlinked_system_inode() as the guts of create_system_inode()
authorGreg Farnum <greg@inktank.com>
Wed, 1 Oct 2014 00:03:24 +0000 (17:03 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Fri, 7 Nov 2014 19:48:43 +0000 (11:48 -0800)
This way we can create duplicate CInodes without actually linking them
into the cache. It'll be helpful for comparing different versions of
disk states and in-memory state, etc.

Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/MDCache.cc
src/mds/MDCache.h

index 87193d6362e39cf985a4c293ccaec2951f038788..20318cc36332b17c80da5a24fd0e80898f7b44b4 100644 (file)
@@ -326,10 +326,9 @@ void MDCache::init_layouts()
   }
 }
 
-CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
+void MDCache::create_unlinked_system_inode(CInode *in, inodeno_t ino,
+                                              int mode) const
 {
-  dout(0) << "creating system inode with ino:" << ino << dendl;
-  CInode *in = new CInode(this);
   in->inode.ino = ino;
   in->inode.version = 1;
   in->inode.mode = 0500 | mode;
@@ -356,9 +355,16 @@ CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
     else
       in->inode_auth = pair<int,int>(in->ino() - MDS_INO_MDSDIR_OFFSET, CDIR_AUTH_UNKNOWN);
     in->open_snaprealm();  // empty snaprealm
+    assert(!in->snaprealm->parent); // created its own
     in->snaprealm->srnode.seq = 1;
   }
-  
+}
+
+CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
+{
+  dout(0) << "creating system inode with ino:" << ino << dendl;
+  CInode *in = new CInode(this);
+  create_unlinked_system_inode(in, ino, mode);
   add_inode(in);
   return in;
 }
index a5a61311d4e0caced2587a716f090e72a0b05ad4..812b4ec2402c143b4393d22ef8e5a6e2a55c47ed 100644 (file)
@@ -696,6 +696,8 @@ private:
 
 public:
   void init_layouts();
+  void create_unlinked_system_inode(CInode *in, inodeno_t ino,
+                                    int mode) const;
   CInode *create_system_inode(inodeno_t ino, int mode);
   CInode *create_root_inode();