From e9d2f79aa7056dacf3de1d10962d3d95636db9b9 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 27 Dec 2021 02:02:12 +0300 Subject: [PATCH] Support reading bitmaps in fio_sec_osd --- src/fio_sec_osd.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/fio_sec_osd.cpp b/src/fio_sec_osd.cpp index 0be2f764..5fdcd626 100644 --- a/src/fio_sec_osd.cpp +++ b/src/fio_sec_osd.cpp @@ -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); 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) {