From: Greg Farnum Date: Wed, 1 Oct 2014 00:03:24 +0000 (-0700) Subject: MDCache: create_unlinked_system_inode() as the guts of create_system_inode() X-Git-Tag: v0.89~50^2~20 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c575d16290de66807f0aa9803ede4683d41c033f;p=ceph.git MDCache: create_unlinked_system_inode() as the guts of create_system_inode() 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 --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 87193d6362e3..20318cc36332 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -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(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; } diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index a5a61311d4e0..812b4ec2402c 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -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();