]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/tools: new and delete ObjectStore::Transaction in a function is not necessary 6299/head
authoryangruifeng <yangruifeng.09209@h3c.com>
Sat, 17 Oct 2015 02:00:56 +0000 (22:00 -0400)
committeryangruifeng <yangruifeng.09209@h3c.com>
Sat, 17 Oct 2015 02:01:41 +0000 (22:01 -0400)
Signed-off-by: Ruifeng Yang <yangruifeng.09209@h3c.com>
src/os/FileJournal.cc
src/osd/OSD.cc
src/tools/ceph_objectstore_tool.cc

index fb05152e8a418153c97c50b7f67dd1858d193031..4fa419ccbf82a9f1ba83d50142470cdacbe1c54e 100644 (file)
@@ -665,12 +665,11 @@ int FileJournal::_fdump(Formatter &f, bool simple)
       bufferlist::iterator p = bl.begin();
       int trans_num = 0;
       while (!p.end()) {
-        ObjectStore::Transaction *t = new ObjectStore::Transaction(p);
+        ObjectStore::Transaction t(p);
         f.open_object_section("transaction");
         f.dump_unsigned("trans_num", trans_num);
-        t->dump(&f);
+        t.dump(&f);
         f.close_section();
-        delete t;
         trans_num++;
       }
       f.close_section();
index a4af9981999424266fa57ad43e92efbf7c6102af..59cb5aade17ee23bd48265dfda9d4fdf75921ee8 100644 (file)
@@ -4223,7 +4223,7 @@ bool remove_dir(
 {
   vector<ghobject_t> olist;
   int64_t num = 0;
-  ObjectStore::Transaction *t = new ObjectStore::Transaction;
+  ObjectStore::Transaction t;
   ghobject_t next;
   handle.reset_tp_timeout();
   store->collection_list(
@@ -4239,38 +4239,36 @@ bool remove_dir(
        ++i, ++num) {
     if (i->is_pgmeta())
       continue;
-    OSDriver::OSTransaction _t(osdriver->get_transaction(t));
+    OSDriver::OSTransaction _t(osdriver->get_transaction(&t));
     int r = mapper->remove_oid(i->hobj, &_t);
     if (r != 0 && r != -ENOENT) {
       assert(0);
     }
-    t->remove(coll, *i);
+    t.remove(coll, *i);
     if (num >= cct->_conf->osd_target_transaction_size) {
       C_SaferCond waiter;
-      store->queue_transaction(osr, t, &waiter);
+      store->queue_transaction(osr, &t, &waiter);
       bool cont = dstate->pause_clearing();
       handle.suspend_tp_timeout();
       waiter.wait();
       handle.reset_tp_timeout();
       if (cont)
         cont = dstate->resume_clearing();
-      delete t;
       if (!cont)
        return false;
-      t = new ObjectStore::Transaction;
+      t = ObjectStore::Transaction();
       num = 0;
     }
   }
 
   C_SaferCond waiter;
-  store->queue_transaction(osr, t, &waiter);
+  store->queue_transaction(osr, &t, &waiter);
   bool cont = dstate->pause_clearing();
   handle.suspend_tp_timeout();
   waiter.wait();
   handle.reset_tp_timeout();
   if (cont)
     cont = dstate->resume_clearing();
-  delete t;
   // whether there are more objects to remove in the collection
   *finished = next.is_max();
   return cont;
index 11de3bc32b4816ca7eb9b16c67958d6a4d03baf6..d734fcd968eeea25e6cc80a527a5f9984a75ff7d 100644 (file)
@@ -407,38 +407,35 @@ void remove_coll(ObjectStore *store, const coll_t &coll,
   ghobject_t next;
   int r = 0;
   int64_t num = 0;
-  ObjectStore::Transaction *t = new ObjectStore::Transaction;
+  ObjectStore::Transaction t;
   cout << "remove_coll " << coll << std::endl;
   while (!next.is_max()) {
     vector<ghobject_t> objects;
     r = store->collection_list(coll, next, ghobject_t::get_max(), true, 300,
       &objects, &next);
     if (r < 0)
-      goto out;
+      return;
     for (vector<ghobject_t>::iterator i = objects.begin();
         i != objects.end();
         ++i, ++num) {
 
-      OSDriver::OSTransaction _t(driver.get_transaction(t));
+      OSDriver::OSTransaction _t(driver.get_transaction(&t));
       cout << "remove " << *i << std::endl;
       int r = mapper.remove_oid(i->hobj, &_t);
       if (r != 0 && r != -ENOENT) {
         assert(0);
       }
 
-      t->remove(coll, *i);
+      t.remove(coll, *i);
       if (num >= 30) {
-        store->apply_transaction(&osr, *t);
-        delete t;
-        t = new ObjectStore::Transaction;
+        store->apply_transaction(&osr, t);
+        t = ObjectStore::Transaction();
         num = 0;
       }
     }
   }
-  t->remove_collection(coll);
-  store->apply_transaction(&osr, *t);
-out:
-  delete t;
+  t.remove_collection(coll);
+  store->apply_transaction(&osr, t);
 }
 
 //Based on part of OSD::load_pgs()
@@ -507,13 +504,12 @@ int initiate_new_remove_pg(ObjectStore *store, spg_t r_pgid,
   cout << " marking collection for removal" << std::endl;
   if (dry_run)
     return 0;
-  ObjectStore::Transaction *rmt = new ObjectStore::Transaction;
-  int r = mark_pg_for_removal(store, r_pgid, rmt);
+  ObjectStore::Transaction rmt;
+  int r = mark_pg_for_removal(store, r_pgid, &rmt);
   if (r < 0) {
-    delete rmt;
     return r;
   }
-  store->apply_transaction(&osr, *rmt);
+  store->apply_transaction(&osr, rmt);
   finish_remove_pgs(store);
   return r;
 }
@@ -1331,18 +1327,17 @@ int ObjectStoreTool::do_import(ObjectStore *store, OSDSuperblock& sb,
   }
 
   if (!dry_run) {
-    ObjectStore::Transaction *t = new ObjectStore::Transaction;
-    PG::_create(*t, pgid,
+    ObjectStore::Transaction t;
+    PG::_create(t, pgid,
                pgid.get_split_bits(curmap.get_pg_pool(pgid.pool())->get_pg_num()));
-    PG::_init(*t, pgid, NULL);
+    PG::_init(t, pgid, NULL);
 
     // mark this coll for removal until we're done
     map<string,bufferlist> values;
     ::encode((char)1, values["_remove"]);
-    t->omap_setkeys(coll, pgid.make_pgmeta_oid(), values);
+    t.omap_setkeys(coll, pgid.make_pgmeta_oid(), values);
 
-    store->apply_transaction(&osr, *t);
-    delete t;
+    store->apply_transaction(&osr, t);
   }
 
   cout << "Importing pgid " << pgid;
@@ -1494,18 +1489,17 @@ int do_remove_object(ObjectStore *store, coll_t coll,
   cout << "remove " << ghobj << std::endl;
   if (dry_run)
     return 0;
-  ObjectStore::Transaction *t = new ObjectStore::Transaction;
-  OSDriver::OSTransaction _t(driver.get_transaction(t));
+  ObjectStore::Transaction t;
+  OSDriver::OSTransaction _t(driver.get_transaction(&t));
   r = mapper.remove_oid(ghobj.hobj, &_t);
   if (r < 0 && r != -ENOENT) {
     cerr << "remove_oid returned " << cpp_strerror(r) << std::endl;
     return r;
   }
 
-  t->remove(coll, ghobj);
+  t.remove(coll, ghobj);
 
-  store->apply_transaction(&osr, *t);
-  delete t;
+  store->apply_transaction(&osr, t);
   return 0;
 }