}
unsigned apply_transactions(Sequencer *osr, list<Transaction*>& tls, Context *ondisk=0);
- int queue_transaction(Sequencer *osr, Transaction* t,
- ThreadPool::TPHandle *handle = NULL) {
+ int queue_transaction_and_cleanup(Sequencer *osr, Transaction* t,
+ ThreadPool::TPHandle *handle = NULL) {
list<Transaction *> tls;
tls.push_back(t);
return queue_transactions(osr, tls, new C_DeleteTransaction(t),
for (int i=0; i<1000; i++) {
ObjectStore::Transaction *t = new ObjectStore::Transaction;
t->write(coll_t::META_COLL, hobject_t(sobject_t(oid, 0)), i*bl.length(), bl.length(), bl);
- store->queue_transaction(NULL, t);
+ store->queue_transaction_and_cleanup(NULL, t);
}
store->sync();
utime_t end = ceph_clock_now(cct);
hobject_t soid(sobject_t(oid, 0));
ObjectStore::Transaction *t = new ObjectStore::Transaction;
t->write(coll_t::META_COLL, soid, 0, bsize, bl);
- store->queue_transaction(NULL, t);
+ store->queue_transaction_and_cleanup(NULL, t);
cleanupt->remove(coll_t::META_COLL, soid);
}
store->sync_and_flush();
utime_t end = ceph_clock_now(cct);
// clean up
- store->queue_transaction(NULL, cleanupt);
+ store->queue_transaction_and_cleanup(NULL, cleanupt);
uint64_t rate = (double)count / (end - start);
if (f) {
pg->pg_log.trim(m->trim_to, pg->info);
pg->dirty_info = true;
pg->write_if_dirty(*t);
- int tr = store->queue_transaction(pg->osr.get(), t,
- new ObjectStore::C_DeleteTransaction(t));
+ int tr = store->queue_transaction(
+ pg->osr.get(), t,
+ new ObjectStore::C_DeleteTransaction(t));
assert(tr == 0);
}
pg->unlock();
if (dirty_info) {
ObjectStore::Transaction *t = new ObjectStore::Transaction;
write_if_dirty(*t);
- int tr = osd->store->queue_transaction(osr.get(), t);
+ int tr = osd->store->queue_transaction_and_cleanup(osr.get(), t);
assert(tr == 0);
}
ObjectStore::Transaction *t = new ObjectStore::Transaction;
dirty_info = true;
write_if_dirty(*t);
- int tr = osd->store->queue_transaction(osr.get(), t);
+ int tr = osd->store->queue_transaction_and_cleanup(osr.get(), t);
assert(tr == 0);
}
new C_OSD_SendMessageOnConn(
osd, reply, m->get_connection()));
+ t->register_on_applied(
+ new ObjectStore::C_DeleteTransaction(t));
get_parent()->queue_transaction(t);
}
osd, reply, m->get_connection()));
}
+ t->register_on_applied(
+ new ObjectStore::C_DeleteTransaction(t));
get_parent()->queue_transaction(t);
}
ObjectStore::Transaction *t = new ObjectStore::Transaction;
dirty_info = true;
write_if_dirty(*t);
- int tr = osd->store->queue_transaction(osr.get(), t);
+ int tr = osd->store->queue_transaction_and_cleanup(osr.get(), t);
assert(tr == 0);
}
break;
ObjectStore::Transaction *t = new ObjectStore::Transaction;
remove_snap_mapped_object(*t, m->poid);
- int r = osd->store->queue_transaction(osr.get(), t);
+ int r = osd->store->queue_transaction_and_cleanup(osr.get(), t);
assert(r == 0);
}
ObjectStore::Transaction *t = new ObjectStore::Transaction;
pg->dirty_big_info = true;
pg->write_if_dirty(*t);
- int tr = pg->osd->store->queue_transaction(pg->osr.get(), t);
+ int tr = pg->osd->store->queue_transaction_and_cleanup(pg->osr.get(), t);
assert(tr == 0);
context<SnapTrimmer>().need_share_pg_info = true;