Support reading bitmaps in fio_sec_osd

separate-data-connections
Vitaliy Filippov 2021-12-27 02:02:12 +03:00
parent 0785bdf8b3
commit e9d2f79aa7
1 changed files with 17 additions and 1 deletions

View File

@ -319,7 +319,23 @@ static int sec_getevents(struct thread_data *td, unsigned int min, unsigned int
fprintf(stderr, "Short read: retval = %ld instead of %llu\n", reply.hdr.retval, io->xfer_buflen); fprintf(stderr, "Short read: retval = %ld instead of %llu\n", reply.hdr.retval, io->xfer_buflen);
exit(1); exit(1);
} }
read_blocking(bsd->connect_fd, io->xfer_buf, io->xfer_buflen); // Support bitmap
uint64_t bitmap = 0;
int iovcnt = 0;
iovec iov[2];
if (reply.sec_rw.attr_len > 0)
{
if (reply.sec_rw.attr_len <= 8)
iov[iovcnt++] = { .iov_base = &bitmap, .iov_len = reply.sec_rw.attr_len };
else
iov[iovcnt++] = { .iov_base = (void*)(bitmap = (uint64_t)malloc(reply.sec_rw.attr_len)), .iov_len = reply.sec_rw.attr_len };
}
iov[iovcnt++] = { .iov_base = io->xfer_buf, .iov_len = io->xfer_buflen };
readv_blocking(bsd->connect_fd, iov, iovcnt);
if (reply.sec_rw.attr_len > 8)
{
free((void*)bitmap);
}
} }
else if (io->ddir == DDIR_WRITE) else if (io->ddir == DDIR_WRITE)
{ {