_txc_add_transaction(txc, &(*p));
}
- // delayed csum calculation?
- for (auto& d : txc->deferred_csum) {
- dout(20) << __func__ << " deferred csum calc blob " << d.blob
- << " b_off 0x" << std::hex << d.b_off << std::dec
- << dendl;
- d.blob->dirty_blob().calc_csum(d.b_off, d.data);
- }
-
_txc_write_nodes(txc, txc->t);
// journal wal items
if (txc->wal_txn) {
});
assert(r == 0);
if (b->get_blob().csum_type) {
- txc->add_deferred_csum(b, b_off, padded);
+ b->dirty_blob().calc_csum(b_off, padded);
}
op->data.claim(padded);
dout(20) << __func__ << " wal write 0x" << std::hex << b_off << "~"
}
}
txc->write_shared_blob(e.blob->shared_blob);
- // ugly: duplicate deferred csum work, if any.
- for (auto& dc : txc->deferred_csum) {
- if (dc.blob == e.blob) {
- dout(20) << __func__ << " duplicating deferred csum for blob "
- << *e.blob << dendl;
- txc->add_deferred_csum(cb, dc.b_off, dc.data);
- }
- }
dout(20) << __func__ << " new " << *cb << dendl;
}
// dup extent
: blob(b), b_off(bo), data(bl) {}
};
- list<DeferredCsum> deferred_csum;
-
explicit TransContext(OpSequencer *o)
: state(STATE_PREPARE),
osr(o),
void write_shared_blob(SharedBlobRef &sb) {
shared_blobs.insert(sb);
}
-
- void add_deferred_csum(BlobRef& b, uint64_t bo, bufferlist& bl) {
- deferred_csum.emplace_back(TransContext::DeferredCsum(b, bo, bl));
- }
};
class OpSequencer : public Sequencer_impl {