]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
obj_bencher: store per-benchmark metadata
authorMike Ryan <mike.ryan@inktank.com>
Wed, 20 Jun 2012 21:50:04 +0000 (14:50 -0700)
committerMike Ryan <mike.ryan@inktank.com>
Thu, 23 Aug 2012 22:52:04 +0000 (15:52 -0700)
Store metadata for each benchmark run so that the objects can be
efficiently removed at a later point.

Signed-off-by: Mike Ryan <mike.ryan@inktank.com>
src/common/obj_bencher.cc

index 2f78161b8b1c6f2da2ba5d5c7a9b9fbcf83ed369..f8a598d0be86942260edb00ebce13b4461714416 100644 (file)
@@ -50,6 +50,20 @@ static std::string generate_object_name(int objnum, int pid = 0)
   return oss.str();
 }
 
+static std::string generate_metadata_name(int pid = 0)
+{
+  if (!pid)
+    pid = getpid();
+
+  char hostname[30];
+  gethostname(hostname, sizeof(hostname)-1);
+  hostname[sizeof(hostname)-1] = 0;
+
+  std::ostringstream oss;
+  oss << BENCH_PREFIX << "_" << hostname << "_" << pid << "_metadata";
+  return oss.str();
+}
+
 static void sanitize_object_contents (bench_data *data, int length) {
   memset(data->object_contents, 'z', length);
 }
@@ -210,6 +224,9 @@ int ObjBencher::aio_bench(int operation, int secondsToRun, int concurrentios, in
     if (r != 0) goto out;
 
     r = sync_remove(BENCH_METADATA);
+    if (r != 0) goto out;
+
+    r = sync_remove(generate_metadata_name());
   }
 
  out:
@@ -446,6 +463,8 @@ int ObjBencher::write_bench(int secondsToRun, int concurrentios) {
   ::encode(getpid(), b_write);
   sync_write(BENCH_METADATA, b_write, sizeof(int)*3);
 
+  sync_write(generate_metadata_name(), b_write, sizeof(int)*3);
+
   completions_done();
 
   return 0;