]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
*** empty log message ***
authorsage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 28 Jun 2005 20:51:41 +0000 (20:51 +0000)
committersage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 28 Jun 2005 20:51:41 +0000 (20:51 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@359 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/client/Client.cc
ceph/client/SyntheticClient.cc
ceph/config.cc
ceph/mds/LogStream.cc
ceph/mds/MDS.cc
ceph/mds/MDStore.cc
ceph/msg/TCPMessenger.cc
ceph/tcpsyn.cc

index ebb761c45652edf5e4f41564cf3b425b2c93a59e..e371b6a3a0155db2d81dae64c49c6e4392682381 100644 (file)
@@ -727,7 +727,8 @@ int Client::lstat(const char *path, struct stat *stbuf)
   Dentry *dn = lookup(req->get_filepath());
   inode_t inode;
   time_t now = time(NULL);
-  if (dn && ((now - dn->inode->last_updated) <= g_conf.client_cache_stat_ttl)) {
+  if (dn && 
+         ((now - dn->inode->last_updated) < g_conf.client_cache_stat_ttl)) {
        inode = dn->inode->inode;
        dout(10) << "lstat cache hit, age is " << (now - dn->inode->last_updated) << endl;
        delete req;  // don't need this
index 300d55bb117b75fb2c3ed1f4f560d4a3a728293c..a98c23b360c8dfff42414daf4ce1bf642aeaa67b 100644 (file)
@@ -33,6 +33,10 @@ int SyntheticClient::run()
        break;
   case SYNCLIENT_MODE_MAKEDIRS:
        make_dirs(sarg1.c_str(), iarg1, iarg2, iarg3);
+       {
+         string root;
+         full_walk(root);
+       }
        break;
   case SYNCLIENT_MODE_FULLWALK:
        full_walk(sarg1);
index b003c3fedf1ed800d2c64dd1818c39139a30a357..b6a11920ef761b9239ef74870e3239a5d91050d8 100644 (file)
@@ -9,7 +9,7 @@
 #define AVG_PER_INODE_SIZE    450
 #define MDS_CACHE_MB_TO_INODES(x) ((x)*1000000/AVG_PER_INODE_SIZE)
 
-#define MDS_CACHE_SIZE       MDS_CACHE_MB_TO_INODES( 50 )
+#define MDS_CACHE_SIZE       MDS_CACHE_MB_TO_INODES( 500 )
 //#define MDS_CACHE_SIZE 25000  // 
 
 
@@ -177,6 +177,8 @@ void parse_config_options(int argc, char **argv,
        else if (strcmp(argv[i], "--mds_bal_interval") == 0) 
          g_conf.mds_bal_interval = atoi(argv[++i]);
 
+       else if (strcmp(argv[i], "--client_cache_stat_ttl") == 0)
+         g_conf.client_cache_stat_ttl = atoi(argv[++i]);
 
        else if (strcmp(argv[i], "--osd_fsync") == 0) 
          g_conf.osd_fsync = atoi(argv[++i]);
index 5a0863bd95f9a93c00f2fd534f58e4a916f13fd3..dfed02e2e88318fbaa8bb4727bf35cf38ed98b1d 100644 (file)
@@ -66,6 +66,7 @@ void LogStream::_append_2(off_t off)
   sync_pos = off;
 
   // discard written bufferlist
+  assert(writing_buffers.count(off) == 1);
   delete writing_buffers[off];
   writing_buffers.erase(off);
   
@@ -108,14 +109,14 @@ void LogStream::flush()
        assert(write_buf.length() == append_pos - flush_pos);
        
        // tuck writing buffer away until write finishes
-       writing_buffers[flush_pos] = new bufferlist;
-       writing_buffers[flush_pos]->claim(write_buf);
+       writing_buffers[append_pos] = new bufferlist;
+       writing_buffers[append_pos]->claim(write_buf);
 
        // write it
        mds->filer->write(log_ino, 
                                          g_OSD_MDLogLayout,
-                                         writing_buffers[flush_pos]->length(), flush_pos,
-                                         *writing_buffers[flush_pos],
+                                         writing_buffers[append_pos]->length(), flush_pos,
+                                         *writing_buffers[append_pos],
                                          0,
                                          new C_LS_Append(this, append_pos));
 
index 9dbab8a080bb9bef00e79a093bfd51ce2eabd3b7..ef2b35b999c2d623ff2465687a6034ab4a180040 100644 (file)
@@ -2160,7 +2160,7 @@ void MDS::handle_client_mkdir(MClientRequest *req, CInode *diri)
   // schedule a commit for good measure 
   // NOTE: not strictly necessary.. it's in the log!
   // but, if fakemds crashes we'll be less likely to corrupt osddata/* (in leiu of a real recovery mechanism)
-  mdstore->commit_dir(newdir, NULL);
+  //mdstore->commit_dir(newdir, NULL);
   return;
 }
 
index 872059b97536d6336e98eb3af3daf544777b0d85..a36dbaa4c041b135c95e8aa564c6f1efc40768c8 100644 (file)
@@ -310,6 +310,8 @@ class MDDoCommitDirContext : public Context {
   __uint64_t version;
 
 public:
+  bufferlist bl;
+
   MDDoCommitDirContext(MDStore *ms, CDir *dir, Context *c, int w) : Context() {
        this->ms = ms;
        this->dir = dir;
@@ -399,12 +401,12 @@ void MDStore::do_commit_dir( CDir *dir,
   dout(14) << "num " << num << endl;
   
   // put count in buffer
-  bufferlist bl;
+  //bufferlist bl;
   size_t size = sizeof(num) + dirdata.length();
-  bl.append((char*)&size, sizeof(size));
-  bl.append((char*)&num, sizeof(num));
-  bl.append(dirdata.c_str(), dirdata.length());
-  assert(bl.length() == size + sizeof(size));
+  fin->bl.append((char*)&size, sizeof(size));
+  fin->bl.append((char*)&num, sizeof(num));
+  fin->bl.append(dirdata.c_str(), dirdata.length());
+  assert(fin->bl.length() == size + sizeof(size));
   
   // pin inode
   dir->auth_pin();
@@ -412,8 +414,8 @@ void MDStore::do_commit_dir( CDir *dir,
   // submit to osd
   mds->filer->write( dir->ino(),
                                         g_OSD_MDDirLayout,
-                                        bl.length(), 0,
-                                        bl,
+                                        fin->bl.length(), 0,
+                                        fin->bl,
                                         0, //OSD_OP_FLAGS_TRUNCATE, // truncate file/object after end of this write
                                         fin );
 }
index 23b3fb3252cc6efbeb0e2f6d01d946486fc3c674..4a46be4db6cfb04a1bcec927808c5c82bce19e21 100644 (file)
@@ -416,7 +416,11 @@ int tcp_send(Message *m)
   m->encode_payload();
   msg_envelope_t *env = &m->get_envelope();
   bufferlist blist = m->get_payload();
+#ifdef TCP_KEEP_CHUNKS
   env->nchunks = blist.buffers().size();
+#else
+  env->nchunks = 1;
+#endif
 
   dout(7) << "sending " << *m << " to " << MSG_ADDR_NICE(env->dest) << " (rank " << rank << ")" << endl;
   
@@ -429,6 +433,8 @@ int tcp_send(Message *m)
   tcp_write( out_sd[rank], (char*)env, sizeof(*env) );
 
   // payload
+#ifdef TCP_KEEP_CHUNKS
+  // send chunk-wise
   int i = 0;
   for (list<bufferptr>::iterator it = blist.buffers().begin();
           it != blist.buffers().end();
@@ -439,6 +445,16 @@ int tcp_send(Message *m)
        tcp_write( out_sd[rank], (*it).c_str(), size );
        i++;
   }
+#else
+  // one big chunk
+  int size = blist.length();
+  tcp_write( out_sd[rank], (char*)&size, sizeof(size) );
+  for (list<bufferptr>::iterator it = blist.buffers().begin();
+          it != blist.buffers().end();
+          it++) {
+       tcp_write( out_sd[rank], (*it).c_str(), (*it).length() );
+  }
+#endif
 
   sender_lock.Unlock();
 
@@ -647,7 +663,7 @@ int TCPMessenger::shutdown()
 
   // last one?
   if (directory.empty()) {
-       dout(1) << "shutdown last tcpmessenger on rank " << mpi_rank << " shut down" << endl;
+       dout(2) << "shutdown last tcpmessenger on rank " << mpi_rank << " shut down" << endl;
        pthread_t whoami = pthread_self();
 
 
index 7f287f9191a275b5222c34d5095df13952bcb855..6e7395e4e0f3b362b2675c56d331f97e6f74d35c 100644 (file)
@@ -127,7 +127,8 @@ int main(int oargc, char **oargv) {
        client[i] = new Client(mdc, i, new TCPMessenger(MSG_ADDR_CLIENT(i)) );
        start++;
   }
-  cerr << "clients " << clientlist << " on rank " << myrank << " " << hostname << "." << pid << endl;
+  if (clientlist.size())
+       cerr << "clients " << clientlist << " on rank " << myrank << " " << hostname << "." << pid << endl;
 
 
   // start message loop