Handle all io_uring events using lambdas
This commit is contained in:
+17
-4
@@ -88,7 +88,10 @@ void journal_flusher_co::loop()
|
||||
v.insert(it, (copy_buffer_t){ .offset = offset, .len = submit_len, .buf = memalign(512, submit_len) });
|
||||
data = ((ring_data_t*)sqe->user_data);
|
||||
data->iov = (struct iovec){ v.end()->buf, (size_t)submit_len };
|
||||
data->op = this;
|
||||
data->callback = [this](ring_data_t* data)
|
||||
{
|
||||
wait_count--;
|
||||
};
|
||||
io_uring_prep_readv(
|
||||
sqe, bs->journal.fd, &data->iov, 1, bs->journal.offset + dirty_it->second.location + offset
|
||||
);
|
||||
@@ -156,7 +159,11 @@ void journal_flusher_co::loop()
|
||||
}
|
||||
data = ((ring_data_t*)sqe->user_data);
|
||||
data->iov = (struct iovec){ meta_it->second.buf, 512 };
|
||||
data->op = this;
|
||||
data->callback = [this](ring_data_t* data)
|
||||
{
|
||||
|
||||
wait_count--;
|
||||
};
|
||||
io_uring_prep_writev(
|
||||
sqe, bs->meta_fd, &data->iov, 1, bs->meta_offset + meta_sector
|
||||
);
|
||||
@@ -181,7 +188,10 @@ void journal_flusher_co::loop()
|
||||
}
|
||||
data = ((ring_data_t*)sqe->user_data);
|
||||
data->iov = (struct iovec){ it->buf, (size_t)it->len };
|
||||
data->op = this;
|
||||
data->callback = [this](ring_data_t* data)
|
||||
{
|
||||
wait_count--;
|
||||
};
|
||||
io_uring_prep_writev(
|
||||
sqe, bs->data_fd, &data->iov, 1, bs->data_offset + clean_loc + it->offset
|
||||
);
|
||||
@@ -210,7 +220,10 @@ void journal_flusher_co::loop()
|
||||
}
|
||||
data = ((ring_data_t*)sqe->user_data);
|
||||
data->iov = (struct iovec){ meta_it->second.buf, 512 };
|
||||
data->op = this;
|
||||
data->callback = [this](ring_data_t* data)
|
||||
{
|
||||
wait_count--;
|
||||
};
|
||||
io_uring_prep_writev(
|
||||
sqe, bs->meta_fd, &data->iov, 1, bs->meta_offset + meta_sector
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user