Add initial multithreading support and example

This is the basic support for doing i/o in a separate worker thread.
It is still not threads safe but a start.
Now we need to protect all variables such as outqueue, waitpdu
and friends.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
Ronnie Sahlberg
2025-03-25 12:42:31 +10:00
parent cb44ad4e26
commit 3c48aea225
10 changed files with 492 additions and 95 deletions

View File

@@ -940,7 +940,17 @@ iscsi_timeout_scan(struct iscsi_context *iscsi)
int
iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
return iscsi->drv->queue_pdu(iscsi, pdu);
int ret;
#ifdef HAVE_MULTITHREADING
iscsi_mt_mutex_lock(&iscsi->iscsi_mutex);
#endif /* HAVE_MULTITHREADING */
ret = iscsi->drv->queue_pdu(iscsi, pdu);
#ifdef HAVE_MULTITHREADING
iscsi_mt_mutex_unlock(&iscsi->iscsi_mutex);
#endif /* HAVE_MULTITHREADING */
return ret;
}
void