Cancel outbound operations only in the osd_client_t destructor
This is required to prevent disconnected peers from sometimes receiving messages suited for other peers - stop_client was freeing the operations even though they were still references in the io_uring requests in progress. This was leading to OSDs sometimes receiving garbage and "broken sequencing" errors in logs as the memory was usually already reallocated for other operations
This commit is contained in:
@@ -99,6 +99,7 @@ struct osd_client_t
|
||||
std::vector<osd_op_t*> zc_free_list;
|
||||
|
||||
~osd_client_t();
|
||||
void cancel_ops();
|
||||
};
|
||||
|
||||
struct osd_wanted_peer_t
|
||||
|
||||
Reference in New Issue
Block a user