bl.hexdump(*_dout);
*_dout << dendl;
- _aio_log_start(ioc, off, bl.length());
+ _aio_log_start(ioc, off, len);
#ifdef HAVE_LIBAIO
if (aio && dio && !buffered) {
<< " " << aio.iov[i].iov_len << dendl;
}
aio.bl.claim_append(bl);
- aio.pwritev(off);
+ aio.pwritev(off, len);
}
dout(5) << __func__ << " " << off << "~" << len << " aio " << &aio << dendl;
} else
bl.prepare_iov(&iov);
int r = ::pwritev(buffered ? fd_buffered : fd_direct,
&iov[0], iov.size(), off);
- _aio_log_finish(ioc, off, bl.length());
+ _aio_log_finish(ioc, off, len);
if (r < 0) {
r = -errno;
memset(&iocb, 0, sizeof(iocb));
}
- void pwritev(uint64_t _offset) {
+ void pwritev(uint64_t _offset, uint64_t len) {
offset = _offset;
+ length = len;
io_prep_pwritev(&iocb, fd, &iov[0], iov.size(), offset);
- length = 0;
- for (unsigned u=0; u<iov.size(); ++u)
- length += iov[u].iov_len;
}
void pread(uint64_t _offset, uint64_t len) {
offset = _offset;