for (list<bluestore_wal_op_t>::iterator p = wt.ops.begin();
p != wt.ops.end();
++p, ++q) {
- int r = _do_wal_op(*p, &txc->ioc);
+ int r = _do_wal_op(txc, *p);
assert(r == 0);
}
return 0;
}
-int BlueStore::_do_wal_op(bluestore_wal_op_t& wo, IOContext *ioc)
+int BlueStore::_do_wal_op(TransContext *txc, bluestore_wal_op_t& wo)
{
const uint64_t block_size = bdev->get_block_size();
const uint64_t block_mask = ~(block_size - 1);
dout(20) << __func__ << " reading initial partial block 0x"
<< std::hex << src_offset << "~0x" << block_size
<< std::dec << dendl;
- r = bdev->read(src_offset, block_size, &first, ioc, true);
+ r = bdev->read(src_offset, block_size, &first, &txc->ioc, true);
assert(r == 0);
bufferlist t;
t.substr_of(first, 0, first_len);
dout(20) << __func__ << " reading trailing partial block 0x"
<< std::hex << last_offset << "~0x" << block_size
<< std::dec << dendl;
- r = bdev->read(last_offset, block_size, &last, ioc, true);
+ r = bdev->read(last_offset, block_size, &last, &txc->ioc, true);
assert(r == 0);
}
bufferlist t;
bl.claim_append(t);
}
assert((bl.length() & ~block_mask) == 0);
- r = bdev->aio_write(offset, bl, ioc, true);
+ r = bdev->aio_write(offset, bl, &txc->ioc, true);
assert(r == 0);
}
break;
assert(wo.extent.length == wo.src_extent.length);
assert((wo.src_extent.offset & ~block_mask) == 0);
bufferlist bl;
- r = bdev->read(wo.src_extent.offset, wo.src_extent.length, &bl, ioc,
+ r = bdev->read(wo.src_extent.offset, wo.src_extent.length, &bl, &txc->ioc,
true);
assert(r == 0);
assert(bl.length() == wo.extent.length);
- r = bdev->aio_write(wo.extent.offset, bl, ioc, true);
+ r = bdev->aio_write(wo.extent.offset, bl, &txc->ioc, true);
assert(r == 0);
}
break;
dout(20) << __func__ << " reading initial partial block 0x"
<< std::hex << first_offset << "~0x" << block_size
<< std::dec << dendl;
- r = bdev->read(first_offset, block_size, &first, ioc, true);
+ r = bdev->read(first_offset, block_size, &first, &txc->ioc, true);
assert(r == 0);
size_t z_len = MIN(block_size - first_len, length);
memset(first.c_str() + first_len, 0, z_len);
- r = bdev->aio_write(first_offset, first, ioc, true);
+ r = bdev->aio_write(first_offset, first, &txc->ioc, true);
assert(r == 0);
offset += block_size - first_len;
length -= z_len;
uint64_t middle_len = length & block_mask;
dout(20) << __func__ << " zero 0x" << std::hex << offset << "~0x"
<< length << std::dec << dendl;
- r = bdev->aio_zero(offset, middle_len, ioc);
+ r = bdev->aio_zero(offset, middle_len, &txc->ioc);
assert(r == 0);
offset += middle_len;
length -= middle_len;
bufferlist last;
dout(20) << __func__ << " reading trailing partial block 0x"
<< std::hex << offset << "~0x" << block_size << std::dec << dendl;
- r = bdev->read(offset, block_size, &last, ioc, true);
+ r = bdev->read(offset, block_size, &last, &txc->ioc, true);
assert(r == 0);
memset(last.c_str(), 0, length);
- r = bdev->aio_write(offset, last, ioc, true);
+ r = bdev->aio_write(offset, last, &txc->ioc, true);
assert(r == 0);
}
}