Add set_immediate to ringloop and use it for bs/osd ops to prevent reenterability issues

This commit is contained in:
Vitaliy Filippov
2023-02-09 17:37:26 +03:00
parent 3d09c9cec7
commit 1a1ba0d1e7
6 changed files with 19 additions and 6 deletions
+5
View File
@@ -119,6 +119,7 @@ struct ring_consumer_t
class ring_loop_t
{
std::vector<std::function<void()>> immediate_queue, immediate_queue2;
std::vector<ring_consumer_t*> consumers;
struct ring_data_t *ring_datas;
int *free_ring_data;
@@ -143,6 +144,10 @@ public:
}
return sqe;
}
inline void set_immediate(const std::function<void()> cb)
{
immediate_queue.push_back(cb);
}
inline int submit()
{
return io_uring_submit(&ring);