forked from vitalif/vitastor
Clear SQEs before returning them to the caller to prevent erroneous double submissions
parent
036c6d4c42
commit
e66ed47515
|
@ -77,7 +77,10 @@ void ring_loop_t::loop()
|
|||
dl.callback(&dl);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Warning: empty callback in SQE\n");
|
||||
free_ring_data[free_ring_data_ptr++] = d - ring_datas;
|
||||
}
|
||||
io_uring_cqe_seen(&ring, cqe);
|
||||
}
|
||||
while (get_sqe_queue.size() > 0)
|
||||
|
|
|
@ -142,7 +142,10 @@ public:
|
|||
return NULL;
|
||||
struct io_uring_sqe* sqe = io_uring_get_sqe(&ring);
|
||||
if (sqe)
|
||||
{
|
||||
*sqe = { 0 };
|
||||
io_uring_sqe_set_data(sqe, ring_datas + free_ring_data[--free_ring_data_ptr]);
|
||||
}
|
||||
return sqe;
|
||||
}
|
||||
inline int wait_sqe(std::function<void()> cb)
|
||||
|
|
Loading…
Reference in New Issue