]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
*** empty log message ***
authorsage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 5 Jul 2005 16:46:44 +0000 (16:46 +0000)
committersage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Tue, 5 Jul 2005 16:46:44 +0000 (16:46 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@395 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/client/SyntheticClient.cc
ceph/config.cc
ceph/fakesyn.cc
ceph/mds/MDCache.cc

index 855a11d48f0ceca5f9f544893749b419fa9f2f2e..1f4b851e53199576aef78cab761a0a09c37e2dd2 100644 (file)
@@ -113,6 +113,7 @@ int SyntheticClient::start_thread()
   assert(!thread_id);
 
   pthread_create(&thread_id, NULL, synthetic_client_thread_entry, this);
+  assert(thread_id);
 }
 
 int SyntheticClient::join_thread()
@@ -242,7 +243,7 @@ int SyntheticClient::write_file(string& fn, int size, int wrsize)   // size is i
   if (fd < 0) return fd;
 
   for (int i=0; i<chunks; i++) {
-       if (g_clock.gettimepair() > run_until) return 0;
+       if (g_clock.gettimepair() > run_until) break;
        dout(2) << "writing block " << i << "/" << chunks << endl;
        client->write(fd, buf, wrsize, i*wrsize);
   }
@@ -262,7 +263,7 @@ int SyntheticClient::read_file(string& fn, int size, int rdsize)   // size is in
   if (fd < 0) return fd;
 
   for (int i=0; i<chunks; i++) {
-       if (g_clock.gettimepair() > run_until) return 0;
+       if (g_clock.gettimepair() > run_until) break;
        dout(2) << "reading block " << i << "/" << chunks << endl;
        client->read(fd, buf, rdsize, i*rdsize);
   }
@@ -284,7 +285,7 @@ int SyntheticClient::random_walk(int num_req)
   while (left > 0) {
        left--;
 
-       if (g_clock.gettimepair() > run_until) return 0;
+       if (g_clock.gettimepair() > run_until) break;
 
        // ascend?
        if (cwd.depth() && roll_die(.05)) {
@@ -380,8 +381,10 @@ int SyntheticClient::random_walk(int num_req)
                op = MDS_OP_READDIR;
          else {
                r = client->open( get_random_sub(), O_RDWR );
-               if (r > 0) 
+               if (r > 0) {
+                 assert(open_files.count(r) == 0);
                  open_files.insert(r);
+               }
          }
        }
 
@@ -446,4 +449,5 @@ int SyntheticClient::random_walk(int num_req)
   }
 
   dout(DBL) << "done" << endl;
+  return 0;
 }
index 7eaa28beb91d3711db3d1b3fc178c496212fdd6c..81bce9027b56a63c8fdbc19c916c68d732184e0b 100644 (file)
@@ -189,6 +189,8 @@ void parse_config_options(int argc, char **argv,
        else if (strcmp(argv[i], "--mds_bal_max") == 0) 
          g_conf.mds_bal_max = atoi(argv[++i]);
 
+       else if (strcmp(argv[i], "--client_cache_size") == 0)
+         g_conf.client_cache_size = atoi(argv[++i]);
        else if (strcmp(argv[i], "--client_cache_stat_ttl") == 0)
          g_conf.client_cache_stat_ttl = atoi(argv[++i]);
 
index 7e75ec9b1c50957ae66bfbf8d786cce15a8b1a03..62ba31592379244859ea1d1ff6c741142c0a82c3 100644 (file)
@@ -46,9 +46,10 @@ int main(int oargc, char **oargv)
   char **nargv = new pchar[argc];
   nargv[nargc++] = argv[0];
 
-  string syn_sarg1;
-  int syn_mode = SYNCLIENT_MODE_WRITEFILE;
-  int syn_iarg1, syn_iarg2, syn_iarg3;
+  list<int> syn_modes;
+  list<int> syn_iargs;
+  list<string> syn_sargs;
+
   int mkfs = 0;
   for (int i=1; i<argc; i++) {
        if (strcmp(argv[i], "--fastmkfs") == 0) {
@@ -58,25 +59,31 @@ int main(int oargc, char **oargv)
          mkfs = MDS_MKFS_FULL;
        }
 
-       else if (strcmp(argv[i],"--synsarg1") == 0) 
-         syn_sarg1 = argv[++i];
-       else if (strcmp(argv[i],"--syniarg1") == 0) 
-         syn_iarg1 = atoi(argv[++i]);
-       else if (strcmp(argv[i],"--syniarg2") == 0) 
-         syn_iarg2 = atoi(argv[++i]);
-       else if (strcmp(argv[i],"--syniarg3") == 0) 
-         syn_iarg3 = atoi(argv[++i]);
-       else if (strcmp(argv[i],"--synmode") == 0) {
+       else if (strcmp(argv[i],"--syn") == 0) {
          ++i;
-         if (strcmp(argv[i],"writefile") == 0) 
-               syn_mode = SYNCLIENT_MODE_WRITEFILE;
-         else if (strcmp(argv[i],"makedirs") == 0) 
-               syn_mode = SYNCLIENT_MODE_MAKEDIRS;
-         else if (strcmp(argv[i],"fullwalk") == 0) 
-               syn_mode = SYNCLIENT_MODE_FULLWALK;
-         else if (strcmp(argv[i],"randomwalk") == 0) 
-               syn_mode = SYNCLIENT_MODE_RANDOMWALK;
-         else {
+         if (strcmp(argv[i],"writefile") == 0) {
+               syn_modes.push_back( SYNCLIENT_MODE_WRITEFILE );
+               syn_iargs.push_back( atoi(argv[++i]) );
+               syn_iargs.push_back( atoi(argv[++i]) );
+         } else if (strcmp(argv[i],"readfile") == 0) {
+               syn_modes.push_back( SYNCLIENT_MODE_READFILE );
+               syn_iargs.push_back( atoi(argv[++i]) );
+               syn_iargs.push_back( atoi(argv[++i]) );
+         } else if (strcmp(argv[i],"makedirs") == 0) {
+               syn_modes.push_back( SYNCLIENT_MODE_MAKEDIRS );
+               syn_iargs.push_back( atoi(argv[++i]) );
+               syn_iargs.push_back( atoi(argv[++i]) );
+               syn_iargs.push_back( atoi(argv[++i]) );
+         } else if (strcmp(argv[i],"fullwalk") == 0) {
+               syn_modes.push_back( SYNCLIENT_MODE_FULLWALK );
+               //syn_sargs.push_back( atoi(argv[++i]) );
+         } else if (strcmp(argv[i],"randomwalk") == 0) {
+               syn_modes.push_back( SYNCLIENT_MODE_RANDOMWALK );
+               syn_iargs.push_back( atoi(argv[++i]) );
+         } else if (strcmp(argv[i],"until") == 0) {
+               syn_modes.push_back( SYNCLIENT_MODE_UNTIL );
+               syn_iargs.push_back( atoi(argv[++i]) );
+         } else {
                cerr << "unknown syn mode " << argv[i] << endl;
                return -1;
          }
@@ -144,15 +151,9 @@ int main(int oargc, char **oargv)
        //cout << "starting synthetic client  " << endl;
        syn[i] = new SyntheticClient(client[i]);
 
-       char s[20];
-       sprintf(s,"syn.%d", i);
-       syn[i]->sarg1 = s;
-       
-       syn[i]->mode = syn_mode;
-       syn[i]->iarg1 = syn_iarg1;
-       syn[i]->iarg2 = syn_iarg2;
-       syn[i]->iarg3 = syn_iarg3;
-
+       syn[i]->modes = syn_modes;
+       syn[i]->sargs = syn_sargs;
+       syn[i]->iargs = syn_iargs;
        syn[i]->start_thread();
   }
   for (int i=0; i<NUMCLIENT; i++) {
index 748e51fb22b5f71b47a6840a0dbc7427440a75dd..58c4f5f0cf8ef1e858f896b881f34f7e41739e61 100644 (file)
@@ -615,6 +615,10 @@ bool MDCache::shutdown_pass()
   
   // send all imports back to 0.
   if (mds->get_nodeid() != 0 && !did_shutdown_exports) {
+       // flush what i can from the cache first..
+       trim(0);
+
+       // export to root
        for (set<CDir*>::iterator it = imports.begin();
                 it != imports.end();
                 ) {