svn commit: r325224 - stable/10/sys/dev/iscsi
Andriy Gapon
avg at FreeBSD.org
Tue Oct 31 09:57:12 UTC 2017
Author: avg
Date: Tue Oct 31 09:57:10 2017
New Revision: 325224
URL: https://svnweb.freebsd.org/changeset/base/325224
Log:
MFC r324694: never retry oustanding requests when terminating iscsi session
Modified:
stable/10/sys/dev/iscsi/iscsi.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/iscsi/iscsi.c
==============================================================================
--- stable/10/sys/dev/iscsi/iscsi.c Tue Oct 31 09:56:37 2017 (r325223)
+++ stable/10/sys/dev/iscsi/iscsi.c Tue Oct 31 09:57:10 2017 (r325224)
@@ -293,15 +293,12 @@ iscsi_session_logout(struct iscsi_session *is)
static void
iscsi_session_terminate_task(struct iscsi_session *is,
- struct iscsi_outstanding *io, bool requeue)
+ struct iscsi_outstanding *io, cam_status status)
{
if (io->io_ccb != NULL) {
io->io_ccb->ccb_h.status &= ~(CAM_SIM_QUEUED | CAM_STATUS_MASK);
- if (requeue)
- io->io_ccb->ccb_h.status |= CAM_REQUEUE_REQ;
- else
- io->io_ccb->ccb_h.status |= CAM_REQ_ABORTED;
+ io->io_ccb->ccb_h.status |= status;
if ((io->io_ccb->ccb_h.status & CAM_DEV_QFRZN) == 0) {
io->io_ccb->ccb_h.status |= CAM_DEV_QFRZN;
xpt_freeze_devq(io->io_ccb->ccb_h.path, 1);
@@ -313,14 +310,14 @@ iscsi_session_terminate_task(struct iscsi_session *is,
}
static void
-iscsi_session_terminate_tasks(struct iscsi_session *is, bool requeue)
+iscsi_session_terminate_tasks(struct iscsi_session *is, cam_status status)
{
struct iscsi_outstanding *io, *tmp;
ISCSI_SESSION_LOCK_ASSERT(is);
TAILQ_FOREACH_SAFE(io, &is->is_outstanding, io_next, tmp) {
- iscsi_session_terminate_task(is, io, requeue);
+ iscsi_session_terminate_task(is, io, status);
}
}
@@ -354,11 +351,11 @@ iscsi_session_cleanup(struct iscsi_session *is, bool d
/*
* Terminate SCSI tasks, asking CAM to requeue them.
*/
- iscsi_session_terminate_tasks(is, true);
+ iscsi_session_terminate_tasks(is, CAM_REQUEUE_REQ);
return;
}
- iscsi_session_terminate_tasks(is, false);
+ iscsi_session_terminate_tasks(is, CAM_DEV_NOT_THERE);
if (is->is_sim == NULL)
return;
@@ -996,7 +993,7 @@ iscsi_pdu_handle_task_response(struct icl_pdu *respons
} else {
aio = iscsi_outstanding_find(is, io->io_datasn);
if (aio != NULL && aio->io_ccb != NULL)
- iscsi_session_terminate_task(is, aio, false);
+ iscsi_session_terminate_task(is, aio, CAM_REQ_ABORTED);
}
iscsi_outstanding_remove(is, io);
More information about the svn-src-stable
mailing list