From f19977416590b1bd0820501c8db94f66e8300eb5 Mon Sep 17 00:00:00 2001 From: sage Date: Tue, 28 Jun 2005 20:51:41 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@359 29311d96-e01e-0410-9327-a35deaab8ce9 --- ceph/client/Client.cc | 3 ++- ceph/client/SyntheticClient.cc | 4 ++++ ceph/config.cc | 4 +++- ceph/mds/LogStream.cc | 9 +++++---- ceph/mds/MDS.cc | 2 +- ceph/mds/MDStore.cc | 16 +++++++++------- ceph/msg/TCPMessenger.cc | 18 +++++++++++++++++- ceph/tcpsyn.cc | 3 ++- 8 files changed, 43 insertions(+), 16 deletions(-) diff --git a/ceph/client/Client.cc b/ceph/client/Client.cc index ebb761c45652e..e371b6a3a0155 100644 --- a/ceph/client/Client.cc +++ b/ceph/client/Client.cc @@ -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 diff --git a/ceph/client/SyntheticClient.cc b/ceph/client/SyntheticClient.cc index 300d55bb117b7..a98c23b360c8d 100644 --- a/ceph/client/SyntheticClient.cc +++ b/ceph/client/SyntheticClient.cc @@ -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); diff --git a/ceph/config.cc b/ceph/config.cc index b003c3fedf1ed..b6a11920ef761 100644 --- a/ceph/config.cc +++ b/ceph/config.cc @@ -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]); diff --git a/ceph/mds/LogStream.cc b/ceph/mds/LogStream.cc index 5a0863bd95f9a..dfed02e2e8831 100644 --- a/ceph/mds/LogStream.cc +++ b/ceph/mds/LogStream.cc @@ -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)); diff --git a/ceph/mds/MDS.cc b/ceph/mds/MDS.cc index 9dbab8a080bb9..ef2b35b999c2d 100644 --- a/ceph/mds/MDS.cc +++ b/ceph/mds/MDS.cc @@ -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; } diff --git a/ceph/mds/MDStore.cc b/ceph/mds/MDStore.cc index 872059b97536d..a36dbaa4c041b 100644 --- a/ceph/mds/MDStore.cc +++ b/ceph/mds/MDStore.cc @@ -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 ); } diff --git a/ceph/msg/TCPMessenger.cc b/ceph/msg/TCPMessenger.cc index 23b3fb3252cc6..4a46be4db6cfb 100644 --- a/ceph/msg/TCPMessenger.cc +++ b/ceph/msg/TCPMessenger.cc @@ -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::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::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(); diff --git a/ceph/tcpsyn.cc b/ceph/tcpsyn.cc index 7f287f9191a27..6e7395e4e0f3b 100644 --- a/ceph/tcpsyn.cc +++ b/ceph/tcpsyn.cc @@ -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 -- 2.39.5