]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: simplify link_remote_inode interface slightly
authorSage Weil <sage@newdream.net>
Mon, 7 Apr 2008 13:25:44 +0000 (06:25 -0700)
committerSage Weil <sage@newdream.net>
Mon, 7 Apr 2008 13:25:44 +0000 (06:25 -0700)
src/mds/CDentry.cc
src/mds/CDir.cc
src/mds/CDir.h
src/mds/Server.cc

index ce1fd04c14af4abc6fe5d36dc03328813c9d5692..1fb3b6c0d0686e0f6d82bb4d815cabeda7426a8c 100644 (file)
@@ -60,9 +60,13 @@ ostream& operator<<(ostream& out, CDentry& dn)
   if (dn.is_remote()) {
     out << " REMOTE(";
     switch (dn.get_remote_d_type() << 12) {
+    case S_IFSOCK: out << "sock"; break;
+    case S_IFLNK: out << "lnk"; break;
     case S_IFREG: out << "reg"; break;
+    case S_IFBLK: out << "blk"; break;
     case S_IFDIR: out << "dir"; break;
-    case S_IFLNK: out << "lnk"; break;
+    case S_IFCHR: out << "chr"; break;
+    case S_IFIFO: out << "fifo"; break;
     default: assert(0);
     }
     out << ")";
index 460fd8999827b349fb1edf40fa97ac1b4c20ed56..091777d75ffdad4a14e4cec405b484313fbfa53c 100644 (file)
@@ -289,6 +289,11 @@ void CDir::remove_dentry(CDentry *dn)
   //assert(nnull == null_items.size());         
 }
 
+void CDir::link_remote_inode(CDentry *dn, CInode *in)
+{
+  link_remote_inode(dn, in->ino(), MODE_TO_DT(in->get_projected_inode()->mode));
+}
+
 void CDir::link_remote_inode(CDentry *dn, inodeno_t ino, unsigned char d_type)
 {
   dout(12) << "link_remote_inode " << *dn << " remote " << ino << dendl;
index dba00547966d4020b7aba7504016c6f130158562..f1c6fe8b522cd3201fb14ae3efb54dda62fc59f1 100644 (file)
@@ -258,6 +258,7 @@ protected:
   CDentry* add_remote_dentry(const string& dname, inodeno_t ino, unsigned char d_type);
   void remove_dentry( CDentry *dn );         // delete dentry
   void link_remote_inode( CDentry *dn, inodeno_t ino, unsigned char d_type);
+  void link_remote_inode( CDentry *dn, CInode *in );
   void link_primary_inode( CDentry *dn, CInode *in );
   void unlink_inode( CDentry *dn );
   void try_remove_unlinked_dn(CDentry *dn);
index c101c943a1000d14affc7bf6c8e835f51298877e..d888fb960eece80a870b67bace7eb5a17a72d33a 100644 (file)
@@ -2155,7 +2155,7 @@ void Server::_link_local_finish(MDRequest *mdr, CDentry *dn, CInode *targeti,
   dout(10) << "_link_local_finish " << *dn << " to " << *targeti << dendl;
 
   // link and unlock the NEW dentry
-  dn->dir->link_remote_inode(dn, targeti->ino(), MODE_TO_DT(targeti->inode.mode));
+  dn->dir->link_remote_inode(dn, targeti);
   dn->mark_dirty(dnpv, mdr->ls);
 
   // target inode
@@ -2240,7 +2240,7 @@ void Server::_link_remote_finish(MDRequest *mdr, CDentry *dn, CInode *targeti,
   dout(10) << "_link_remote_finish " << *dn << " to " << *targeti << dendl;
 
   // link the new dentry
-  dn->dir->link_remote_inode(dn, targeti->ino(), MODE_TO_DT(targeti->inode.mode));
+  dn->dir->link_remote_inode(dn, targeti);
   dn->mark_dirty(dpv, mdr->ls);
 
   // dir inode's mtime
@@ -3420,7 +3420,7 @@ void Server::_rename_apply(MDRequest *mdr, CDentry *srcdn, CDentry *destdn, CDen
     if (srcdn->is_remote()) {
       // srcdn was remote.
       srcdn->dir->unlink_inode(srcdn);
-      destdn->dir->link_remote_inode(destdn, in->ino(), MODE_TO_DT(in->inode.mode));    
+      destdn->dir->link_remote_inode(destdn, in);
       destdn->link_remote(in);
       if (destdn->is_auth())
        destdn->mark_dirty(mdr->more()->pvmap[destdn], mdr->ls);
@@ -3707,16 +3707,16 @@ void Server::_commit_slave_rename(MDRequest *mdr, int r,
       if (mdr->more()->destdn_was_remote_inode) {
        destdn->dir->unlink_inode(destdn);
        srcdn->dir->link_primary_inode(srcdn, in);
-       destdn->dir->link_remote_inode(destdn, in->ino(),  MODE_TO_DT(in->inode.mode));
+       destdn->dir->link_remote_inode(destdn, in);
       } else {
-       srcdn->dir->link_remote_inode(srcdn, in->ino(), MODE_TO_DT(in->inode.mode));
+       srcdn->dir->link_remote_inode(srcdn, in);
       }
     } else {
       // normal
 
       // revert srcdn
       if (destdn->is_remote()) {
-       srcdn->dir->link_remote_inode(srcdn, destdn->inode->ino(), MODE_TO_DT(destdn->inode->inode.mode));
+       srcdn->dir->link_remote_inode(srcdn, destdn->inode);
        destdn->dir->unlink_inode(destdn);
       } else {
        // renamed a primary
@@ -3727,9 +3727,7 @@ void Server::_commit_slave_rename(MDRequest *mdr, int r,
       
       // revert destdn
       if (mdr->more()->destdn_was_remote_inode) {
-       destdn->dir->link_remote_inode(destdn, 
-                                      mdr->more()->destdn_was_remote_inode->ino(), 
-                                      MODE_TO_DT(mdr->more()->destdn_was_remote_inode->inode.mode));
+       destdn->dir->link_remote_inode(destdn, mdr->more()->destdn_was_remote_inode);
        mdr->more()->destdn_was_remote_inode->inode.nlink++;
       } else if (straydn && straydn->inode) {
        CInode *in = straydn->inode;