Skip to content

Commit

Permalink
Merge pull request #398 from anatoliy-glagolev/master
Browse files Browse the repository at this point in the history
checking if task is in outqueue
  • Loading branch information
sahlberg authored Sep 20, 2023
2 parents 75a46d2 + e4c4799 commit 528a386
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
7 changes: 7 additions & 0 deletions include/iscsi.h
Original file line number Diff line number Diff line change
Expand Up @@ -1537,6 +1537,13 @@ EXTERN void scsi_task_set_iov_in(struct scsi_task *task, struct scsi_iovec *iov,

EXTERN int scsi_task_get_status(struct scsi_task *task, struct scsi_sense *sense);

/*
* This function returns 1 if the task is queued for send (for example, the task has been created
* with an asynchronous request and has not been put on the wire right away due to the socket
* or the ISCSI session state); otherwise returns 0.
*/
EXTERN int iscsi_scsi_is_task_in_outqueue(struct iscsi_context *iscsi, struct scsi_task *task);

/*
* This function is used when you want to cancel a scsi task.
* The callback for the task will immediately be invoked with SCSI_STATUS_CANCELLED.
Expand Down
13 changes: 13 additions & 0 deletions lib/iscsi-command.c
Original file line number Diff line number Diff line change
Expand Up @@ -2675,6 +2675,19 @@ iscsi_scsi_get_task_from_pdu(struct iscsi_pdu *pdu)
return pdu->scsi_cbdata.task;
}

int iscsi_scsi_is_task_in_outqueue(struct iscsi_context *iscsi, struct scsi_task *task)
{
struct iscsi_pdu *pdu;

for (pdu = iscsi->outqueue; pdu; pdu = pdu->next) {
if (pdu->itt == task->itt) {
return 1;
}
}

return 0;
}

int
iscsi_scsi_cancel_task(struct iscsi_context *iscsi,
struct scsi_task *task)
Expand Down

0 comments on commit 528a386

Please sign in to comment.