]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: use non-string coll_t's
authorSage Weil <sage@redhat.com>
Mon, 22 Dec 2014 21:38:10 +0000 (13:38 -0800)
committerSage Weil <sage@redhat.com>
Fri, 19 Jun 2015 00:02:46 +0000 (17:02 -0700)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/Transaction.cc
src/test/objectstore/DeterministicOpSequence.cc
src/test/objectstore/FileStoreTracker.cc
src/test/objectstore/FileStoreTracker.h
src/test/objectstore/store_test.cc
src/test/objectstore/test_idempotent.cc
src/test/xattr_bench.cc

index 07655b3f70c391a5b06ed051078f3d7d7d00315f..a5e6b515f3dbf9585a0cc095222282922c741a5c 100644 (file)
@@ -947,8 +947,8 @@ void ObjectStore::Transaction::generate_test_instances(list<ObjectStore::Transac
   o.push_back(t);
   
   t = new Transaction;
-  coll_t c("foocoll");
-  coll_t c2("foocoll2");
+  coll_t c(spg_t(pg_t(1,2), shard_id_t::NO_SHARD));
+  coll_t c2(spg_t(pg_t(4,5), shard_id_t::NO_SHARD));
   ghobject_t o1(hobject_t("obj", "", 123, 456, -1, ""));
   ghobject_t o2(hobject_t("obj2", "", 123, 456, -1, ""));
   ghobject_t o3(hobject_t("obj3", "", 123, 456, -1, ""));
index f2a30ae7e3cca4fdda246e4c133e282f32c9c938..42dde3ad76e1be75c7dc575e72ca649e15d3126f 100644 (file)
@@ -433,9 +433,8 @@ bool DeterministicOpSequence::do_coll_create(rngen_t& gen)
     int pg_id = pg_range(gen);
     if (pg_created.count(pg_id) > 0)
       continue;
-    char buf[100];
-    snprintf(buf, 100, "%d.%x_head", pool_id, pg_id);
-    _do_coll_create(coll_t(buf), (uint32_t) pg_num, (uint64_t) num_objs);
+    _do_coll_create(coll_t(spg_t(pg_t(pg_id,pool_id),shard_id_t::NO_SHARD)),
+                   (uint32_t) pg_num, (uint64_t) num_objs);
     pg_created.insert(pg_id);
   }
   return true;
index afdc31bad23e9cd460b0a98bc38e85784476aec5..eb16cac4cffdc1675863708f69499a93bc6b222f 100644 (file)
@@ -8,16 +8,16 @@
 
 class OnApplied : public Context {
   FileStoreTracker *tracker;
-  list<pair<pair<string, string>, uint64_t> > in_flight;
+  list<pair<pair<coll_t, string>, uint64_t> > in_flight;
   ObjectStore::Transaction *t;
 public:
   OnApplied(FileStoreTracker *tracker,
-           list<pair<pair<string, string>, uint64_t> > in_flight,
+           list<pair<pair<coll_t, string>, uint64_t> > in_flight,
            ObjectStore::Transaction *t)
     : tracker(tracker), in_flight(in_flight), t(t) {}
 
   void finish(int r) {
-    for (list<pair<pair<string, string>, uint64_t> >::iterator i =
+    for (list<pair<pair<coll_t, string>, uint64_t> >::iterator i =
           in_flight.begin();
         i != in_flight.end();
         ++i) {
@@ -29,14 +29,14 @@ public:
 
 class OnCommitted : public Context {
   FileStoreTracker *tracker;
-  list<pair<pair<string, string>, uint64_t> > in_flight;
+  list<pair<pair<coll_t, string>, uint64_t> > in_flight;
 public:
   OnCommitted(FileStoreTracker *tracker,
-             list<pair<pair<string, string>, uint64_t> > in_flight)
+             list<pair<pair<coll_t, string>, uint64_t> > in_flight)
     : tracker(tracker), in_flight(in_flight) {}
 
   void finish(int r) {
-    for (list<pair<pair<string, string>, uint64_t> >::iterator i =
+    for (list<pair<pair<coll_t, string>, uint64_t> >::iterator i =
           in_flight.begin();
         i != in_flight.end();
         ++i) {
@@ -67,7 +67,7 @@ int FileStoreTracker::init()
 
 void FileStoreTracker::submit_transaction(Transaction &t)
 {
-  list<pair<pair<string, string>, uint64_t> > in_flight;
+  list<pair<pair<coll_t, string>, uint64_t> > in_flight;
   OutTransaction out;
   out.t = new ObjectStore::Transaction;
   out.in_flight = &in_flight;
@@ -82,7 +82,7 @@ void FileStoreTracker::submit_transaction(Transaction &t)
     new OnCommitted(this, in_flight));
 }
 
-void FileStoreTracker::write(const pair<string, string> &obj,
+void FileStoreTracker::write(const pair<coll_t, string> &obj,
                             OutTransaction *out)
 {
   Mutex::Locker l(lock);
@@ -111,7 +111,7 @@ void FileStoreTracker::write(const pair<string, string> &obj,
   out->in_flight->push_back(make_pair(obj, set_content(obj, contents)));
 }
 
-void FileStoreTracker::remove(const pair<string, string> &obj,
+void FileStoreTracker::remove(const pair<coll_t, string> &obj,
                              OutTransaction *out)
 {
   std::cerr << "Deleting " << obj << std::endl;
@@ -125,8 +125,8 @@ void FileStoreTracker::remove(const pair<string, string> &obj,
   out->in_flight->push_back(make_pair(obj, set_content(obj, contents)));
 }
 
-void FileStoreTracker::clone_range(const pair<string, string> &from,
-                                  const pair<string, string> &to,
+void FileStoreTracker::clone_range(const pair<coll_t, string> &from,
+                                  const pair<coll_t, string> &to,
                                   OutTransaction *out) {
   Mutex::Locker l(lock);
   std::cerr << "CloningRange " << from << " to " << to << std::endl;
@@ -156,8 +156,8 @@ void FileStoreTracker::clone_range(const pair<string, string> &from,
   out->in_flight->push_back(make_pair(to, set_content(to, to_contents)));
 }
 
-void FileStoreTracker::clone(const pair<string, string> &from,
-                            const pair<string, string> &to,
+void FileStoreTracker::clone(const pair<coll_t, string> &from,
+                            const pair<coll_t, string> &to,
                             OutTransaction *out) {
   Mutex::Locker l(lock);
   std::cerr << "Cloning " << from << " to " << to << std::endl;
@@ -181,16 +181,16 @@ void FileStoreTracker::clone(const pair<string, string> &from,
 }
 
 
-string obj_to_prefix(const pair<string, string> &obj) {
+string obj_to_prefix(const pair<coll_t, string> &obj) {
   string sep;
   sep.push_back('^');
-  return obj.first + sep + obj.second + "_CONTENTS_";
+  return obj.first.to_str() + sep + obj.second + "_CONTENTS_";
 }
 
-string obj_to_meta_prefix(const pair<string, string> &obj) {
+string obj_to_meta_prefix(const pair<coll_t, string> &obj) {
   string sep;
   sep.push_back('^');
-  return obj.first + sep + obj.second;
+  return obj.first.to_str() + sep + obj.second;
 }
 
 string seq_to_key(uint64_t seq) {
@@ -232,7 +232,7 @@ void decode(ObjStatus &obj, bufferlist::iterator &bl) {
 }
 
 
-ObjStatus get_obj_status(const pair<string, string> &obj,
+ObjStatus get_obj_status(const pair<coll_t, string> &obj,
                         KeyValueDB *db)
 {
   set<string> to_get;
@@ -247,7 +247,7 @@ ObjStatus get_obj_status(const pair<string, string> &obj,
   return retval;
 }
 
-void set_obj_status(const pair<string, string> &obj,
+void set_obj_status(const pair<coll_t, string> &obj,
                    const ObjStatus &status,
                    KeyValueDB::Transaction t)
 {
@@ -256,7 +256,7 @@ void set_obj_status(const pair<string, string> &obj,
   t->set(obj_to_meta_prefix(obj), to_set);
 }
 
-void _clean_forward(const pair<string, string> &obj,
+void _clean_forward(const pair<coll_t, string> &obj,
                    uint64_t last_valid,
                    KeyValueDB *db)
 {
@@ -272,7 +272,7 @@ void _clean_forward(const pair<string, string> &obj,
 }
 
 
-void FileStoreTracker::verify(const string &coll, const string &obj,
+void FileStoreTracker::verify(const coll_t &coll, const string &obj,
                              bool on_start) {
   Mutex::Locker l(lock);
   std::cerr << "Verifying " << make_pair(coll, obj) << std::endl;
@@ -333,7 +333,7 @@ void FileStoreTracker::verify(const string &coll, const string &obj,
 }
 
 ObjectContents FileStoreTracker::get_current_content(
-  const pair<string, string> &obj)
+  const pair<coll_t, string> &obj)
 {
   KeyValueDB::Iterator iter = db->get_iterator(
     obj_to_prefix(obj));
@@ -351,7 +351,7 @@ ObjectContents FileStoreTracker::get_current_content(
 }
 
 ObjectContents FileStoreTracker::get_content(
-  const pair<string, string> &obj, uint64_t version)
+  const pair<coll_t, string> &obj, uint64_t version)
 {
   set<string> to_get;
   map<string, bufferlist> got;
@@ -368,7 +368,7 @@ ObjectContents FileStoreTracker::get_content(
 }
 
 pair<uint64_t, uint64_t> FileStoreTracker::get_valid_reads(
-  const pair<string, string> &obj)
+  const pair<coll_t, string> &obj)
 {
   pair<uint64_t, uint64_t> bounds = make_pair(0,1);
   KeyValueDB::Iterator iter = db->get_iterator(
@@ -387,7 +387,7 @@ pair<uint64_t, uint64_t> FileStoreTracker::get_valid_reads(
   return bounds;
 }
 
-void clear_obsolete(const pair<string, string> &obj,
+void clear_obsolete(const pair<coll_t, string> &obj,
                    const ObjStatus &status,
                    KeyValueDB *db,
                    KeyValueDB::Transaction t)
@@ -401,7 +401,7 @@ void clear_obsolete(const pair<string, string> &obj,
   t->rmkeys(obj_to_prefix(obj), to_remove);
 }
 
-void FileStoreTracker::committed(const pair<string, string> &obj,
+void FileStoreTracker::committed(const pair<coll_t, string> &obj,
                                 uint64_t seq) {
   Mutex::Locker l(lock);
   ObjStatus status = get_obj_status(obj, db);
@@ -413,7 +413,7 @@ void FileStoreTracker::committed(const pair<string, string> &obj,
   db->submit_transaction(t);
 }
 
-void FileStoreTracker::applied(const pair<string, string> &obj,
+void FileStoreTracker::applied(const pair<coll_t, string> &obj,
                               uint64_t seq) {
   Mutex::Locker l(lock);
   std::cerr << "Applied " << obj << " version " << seq << std::endl;
@@ -427,7 +427,7 @@ void FileStoreTracker::applied(const pair<string, string> &obj,
 }
 
 
-uint64_t FileStoreTracker::set_content(const pair<string, string> &obj,
+uint64_t FileStoreTracker::set_content(const pair<coll_t, string> &obj,
                                       ObjectContents &content) {
   KeyValueDB::Transaction t = db->get_transaction();
   KeyValueDB::Iterator iter = db->get_iterator(
index d70e54a112314d16519319e6f739cbe03067e26b..11033a68b9968efebdd192aae52c77e0fc96dee4 100644 (file)
@@ -18,7 +18,7 @@ class FileStoreTracker {
   uint64_t restart_seq;
 
   struct OutTransaction {
-    list<pair<pair<string, string>, uint64_t> > *in_flight;
+    list<pair<pair<coll_t, string>, uint64_t> > *in_flight;
     ObjectStore::Transaction *t;
   };
 public:
@@ -36,9 +36,9 @@ public:
     list<Op*> ops;
     class Write : public Op {
     public:
-      string coll;
+      coll_t coll;
       string oid;
-      Write(const string &coll,
+      Write(const coll_t &coll,
            const string &oid)
        : coll(coll), oid(oid) {}
       void operator()(FileStoreTracker *harness,
@@ -48,10 +48,10 @@ public:
     };
     class CloneRange : public Op {
     public:
-      string coll;
+      coll_t coll;
       string from;
       string to;
-      CloneRange(const string &coll,
+      CloneRange(const coll_t &coll,
                 const string &from,
                 const string &to)
        : coll(coll), from(from), to(to) {}
@@ -63,10 +63,10 @@ public:
     };
     class Clone : public Op {
     public:
-      string coll;
+      coll_t coll;
       string from;
       string to;
-      Clone(const string &coll,
+      Clone(const coll_t &coll,
                 const string &from,
                 const string &to)
        : coll(coll), from(from), to(to) {}
@@ -78,9 +78,9 @@ public:
     };
     class Remove: public Op {
     public:
-      string coll;
+      coll_t coll;
       string obj;
-      Remove(const string &coll,
+      Remove(const coll_t &coll,
             const string &obj)
        : coll(coll), obj(obj) {}
       void operator()(FileStoreTracker *harness,
@@ -90,18 +90,18 @@ public:
       }
     };
   public:
-    void write(const string &coll, const string &oid) {
+    void write(const coll_t &coll, const string &oid) {
       ops.push_back(new Write(coll, oid));
     }
-    void clone_range(const string &coll, const string &from,
+    void clone_range(const coll_t &coll, const string &from,
                     const string &to) {
       ops.push_back(new CloneRange(coll, from, to));
     }
-    void clone(const string &coll, const string &from,
+    void clone(const coll_t &coll, const string &from,
               const string &to) {
       ops.push_back(new Clone(coll, from, to));
     }
-    void remove(const string &coll, const string &oid) {
+    void remove(const coll_t &coll, const string &oid) {
       ops.push_back(new Remove(coll, oid));
     }
     friend class FileStoreTracker;
@@ -109,27 +109,27 @@ public:
 
   int init();
   void submit_transaction(Transaction &t);
-  void verify(const string &coll,
+  void verify(const coll_t &coll,
              const string &from,
              bool on_start = false);
 
 private:
-  ObjectContents get_current_content(const pair<string, string> &obj);
-  pair<uint64_t, uint64_t> get_valid_reads(const pair<string, string> &obj);
-  ObjectContents get_content(const pair<string, string> &obj, uint64_t version);
+  ObjectContents get_current_content(const pair<coll_t, string> &obj);
+  pair<uint64_t, uint64_t> get_valid_reads(const pair<coll_t, string> &obj);
+  ObjectContents get_content(const pair<coll_t, string> &obj, uint64_t version);
 
-  void committed(const pair<string, string> &obj, uint64_t seq);
-  void applied(const pair<string, string> &obj, uint64_t seq);
-  uint64_t set_content(const pair<string, string> &obj, ObjectContents &content);
+  void committed(const pair<coll_t, string> &obj, uint64_t seq);
+  void applied(const pair<coll_t, string> &obj, uint64_t seq);
+  uint64_t set_content(const pair<coll_t, string> &obj, ObjectContents &content);
 
   // ObjectContents Operations
-  void write(const pair<string, string> &obj, OutTransaction *out);
-  void remove(const pair<string, string> &obj, OutTransaction *out);
-  void clone_range(const pair<string, string> &from,
-                  const pair<string, string> &to,
+  void write(const pair<coll_t, string> &obj, OutTransaction *out);
+  void remove(const pair<coll_t, string> &obj, OutTransaction *out);
+  void clone_range(const pair<coll_t, string> &from,
+                  const pair<coll_t, string> &to,
                   OutTransaction *out);
-  void clone(const pair<string, string> &from,
-            const pair<string, string> &to,
+  void clone(const pair<coll_t, string> &from,
+            const pair<coll_t, string> &to,
             OutTransaction *out);
   friend class OnApplied;
   friend class OnCommitted;
index 9cee58ad99a7560888c9e5e2265693e586fc0f42..2513ae048e5402fc5bc0b30454fe220fdbadc9d4 100644 (file)
@@ -140,10 +140,7 @@ TEST_P(StoreTest, SimpleColPreHashTest) {
   boost::uniform_int<> folders_range(5, 256);
   uint64_t expected_num_objs = (uint64_t)objs_per_folder * (uint64_t)folders_range(rng);
 
-  char buf[100];
-  snprintf(buf, 100, "1.%x_head", pg_id);
-
-  coll_t cid(buf);
+  coll_t cid(spg_t(pg_t(pg_id, 1), shard_id_t::NO_SHARD));
   int r;
   {
     // Create a collection along with a hint
@@ -302,7 +299,7 @@ TEST_P(StoreTest, Sort) {
 
 TEST_P(StoreTest, MultipoolListTest) {
   int r;
-  coll_t cid = coll_t("coll");
+  coll_t cid = coll_t(spg_t(pg_t(1, 1), shard_id_t::NO_SHARD));
   {
     ObjectStore::Transaction t;
     t.create_collection(cid);
@@ -1111,7 +1108,7 @@ TEST_P(StoreTest, Synthetic) {
   ObjectStore::Sequencer osr("test");
   MixedGenerator gen;
   gen_type rng(time(NULL));
-  coll_t cid("synthetic_1");
+  coll_t cid(spg_t(pg_t(1,0), shard_id_t::NO_SHARD));
 
   SyntheticWorkloadState test_obj(store.get(), &gen, &rng, &osr, cid);
   test_obj.init();
@@ -1149,7 +1146,7 @@ TEST_P(StoreTest, AttrSynthetic) {
   ObjectStore::Sequencer osr("test");
   MixedGenerator gen;
   gen_type rng(time(NULL));
-  coll_t cid("synthetic_2");
+  coll_t cid(spg_t(pg_t(4,0),shard_id_t::NO_SHARD));
 
   SyntheticWorkloadState test_obj(store.get(), &gen, &rng, &osr, cid);
   test_obj.init();
@@ -1572,8 +1569,8 @@ void colsplittest(
   unsigned num_objects,
   unsigned common_suffix_size
   ) {
-  coll_t cid("from");
-  coll_t tid("to");
+  coll_t cid(spg_t(pg_t(1,2),shard_id_t::NO_SHARD));
+  coll_t tid(spg_t(pg_t(3,2),shard_id_t::NO_SHARD));
   int r = 0;
   {
     ObjectStore::Transaction t;
@@ -1716,9 +1713,8 @@ TEST_P(StoreTest, TwoHash) {
 }
 
 TEST_P(StoreTest, MoveRename) {
-  coll_t temp_cid("mytemp");
+  coll_t cid(spg_t(pg_t(212,0),shard_id_t::NO_SHARD));
   hobject_t temp_oid("tmp_oid", "", CEPH_NOSNAP, 0, 0, "");
-  coll_t cid("dest");
   hobject_t oid("dest_oid", "", CEPH_NOSNAP, 0, 0, "");
   int r;
   {
@@ -1785,9 +1781,9 @@ TEST_P(StoreTest, MoveRename) {
 TEST_P(StoreTest, BigRGWObjectName) {
   store->set_allow_sharded_objects();
   store->sync_and_flush();
-  coll_t temp_cid("mytemp");
+  coll_t cid(spg_t(pg_t(1,2),shard_id_t::NO_SHARD));
+  coll_t temp_cid = cid.get_temp();
   hobject_t temp_oid("tmp_oid", "", CEPH_NOSNAP, 0, 0, "");
-  coll_t cid("dest");
   ghobject_t oid(
     hobject_t(
       "default.4106.50_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
index 4cfb8d11e2a671d9ce38f8b3eabe45230622b03a..a13783c784872966439644c4740cfae2e9e21102 100644 (file)
@@ -68,13 +68,14 @@ int main(int argc, char **argv) {
   boost::scoped_ptr<KeyValueDB> db(_db);
   boost::scoped_ptr<ObjectStore> store(new FileStore(store_path, store_dev));
 
+  coll_t coll(spg_t(pg_t(1,2),shard_id_t::NO_SHARD));
 
   if (start_new) {
     std::cerr << "mkfs" << std::endl;
     assert(!store->mkfs());
     ObjectStore::Transaction t;
     assert(!store->mount());
-    t.create_collection(coll_t("coll"));
+    t.create_collection(coll);
     store->apply_transaction(t);
   } else {
     assert(!store->mount());
@@ -86,7 +87,7 @@ int main(int argc, char **argv) {
   for (unsigned i = 0; i < 10; ++i) {
     stringstream stream;
     stream << "Object_" << i;
-    tracker.verify("coll", stream.str(), true);
+    tracker.verify(coll, stream.str(), true);
     objects.insert(stream.str());
   }
 
@@ -95,19 +96,19 @@ int main(int argc, char **argv) {
     for (unsigned j = 0; j < 100; ++j) {
       int val = rand() % 100;
       if (val < 30) {
-       t.write("coll", *rand_choose(objects));
+       t.write(coll, *rand_choose(objects));
       } else if (val < 60) {
-       t.clone("coll", *rand_choose(objects),
+       t.clone(coll, *rand_choose(objects),
                *rand_choose(objects));
       } else if (val < 70) {
-       t.remove("coll", *rand_choose(objects));
+       t.remove(coll, *rand_choose(objects));
       } else {
-       t.clone_range("coll", *rand_choose(objects),
+       t.clone_range(coll, *rand_choose(objects),
                      *rand_choose(objects));
       }
     }
     tracker.submit_transaction(t);
-    tracker.verify("coll", *rand_choose(objects));
+    tracker.verify(coll, *rand_choose(objects));
   }
   return 0;
 }
index 2b8d09ff29dcf6630706817c689777c32f76a97f..38080000cce8929d8b54ec119ed984d86189890f 100644 (file)
@@ -91,20 +91,19 @@ uint64_t do_run(ObjectStore *store, int attrsize, int numattrs,
   Cond cond;
   int in_flight = 0;
   ObjectStore::Transaction t;
-  map<string, pair<set<string>, ObjectStore::Sequencer*> > collections;
+  map<coll_t, pair<set<string>, ObjectStore::Sequencer*> > collections;
   for (int i = 0; i < 3*THREADS; ++i) {
-    stringstream coll_str;
-    coll_str << "coll_" << i << "_" << run;
-    t.create_collection(coll_t(coll_str.str()));
+    coll_t coll(spg_t(pg_t(i, run), shard_id_t::NO_SHARD));
+    t.create_collection(coll);
     set<string> objects;
     for (int i = 0; i < transsize; ++i) {
       stringstream obj_str;
       obj_str << i;
-      t.touch(coll_t(coll_str.str()),
+      t.touch(coll,
              hobject_t(sobject_t(obj_str.str(), CEPH_NOSNAP)));
       objects.insert(obj_str.str());
     }
-    collections[coll_str.str()] = make_pair(objects, new ObjectStore::Sequencer(coll_str.str()));
+    collections[coll] = make_pair(objects, new ObjectStore::Sequencer(coll.to_str()));
   }
   store->apply_transaction(t);
 
@@ -121,7 +120,7 @@ uint64_t do_run(ObjectStore *store, int attrsize, int numattrs,
        cond.Wait(lock);
     }
     ObjectStore::Transaction *t = new ObjectStore::Transaction;
-    map<string, pair<set<string>, ObjectStore::Sequencer*> >::iterator iter =
+    map<coll_t, pair<set<string>, ObjectStore::Sequencer*> >::iterator iter =
       rand_choose(collections);
     for (set<string>::iterator obj = iter->second.first.begin();
         obj != iter->second.first.end();
@@ -129,7 +128,7 @@ uint64_t do_run(ObjectStore *store, int attrsize, int numattrs,
       for (int j = 0; j < numattrs; ++j) {
        stringstream ss;
        ss << i << ", " << j << ", " << *obj;
-       t->setattr(coll_t(iter->first),
+       t->setattr(iter->first,
                   hobject_t(sobject_t(*obj, CEPH_NOSNAP)),
                   ss.str().c_str(),
                   bl);