test_write*_residuals: Fix overflow tests

RFC 3720 is not clear about whether a target should return SUCCESS
or CHECK CONDITION if SPDTL > EDTL. Hence accept both. See also
Fred Knight, Re: [Ips] Data Out residual overflow/underflow handling,
IETF mailing list archive, 21 September 2012
(http://www.ietf.org/mail-archive/web/ips/current/msg02756.html).

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
This commit is contained in:
Bart Van Assche
2013-10-14 18:22:02 +02:00
committed by Ronnie Sahlberg
parent d77765548f
commit cfce944b35
3 changed files with 14 additions and 4 deletions

View File

@@ -161,11 +161,15 @@ test_write10_residuals(void)
CU_ASSERT_PTR_NOT_NULL(task_ret);
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS");
if (task->status != SCSI_STATUS_GOOD) {
if (task->status != SCSI_STATUS_GOOD
&& !(task->status == SCSI_STATUS_CHECK_CONDITION
&& task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST
&& task->sense.ascq ==
SCSI_SENSE_ASCQ_INVALID_FIELD_IN_INFORMATION_UNIT)) {
logging(LOG_VERBOSE, "[FAILED] Target returned error %s",
iscsi_get_error(iscsic));
CU_ASSERT(0);
}
CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
logging(LOG_VERBOSE, "Verify residual overflow flag is set");
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW) {

View File

@@ -161,11 +161,16 @@ test_write12_residuals(void)
CU_ASSERT_PTR_NOT_NULL(task_ret);
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS");
if (task->status != SCSI_STATUS_GOOD) {
if (task->status != SCSI_STATUS_GOOD
&& !(task->status == SCSI_STATUS_CHECK_CONDITION
&& task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST
&& task->sense.ascq ==
SCSI_SENSE_ASCQ_INVALID_FIELD_IN_INFORMATION_UNIT))
{
logging(LOG_VERBOSE, "[FAILED] Target returned error %s",
iscsi_get_error(iscsic));
CU_ASSERT(0);
}
CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD);
logging(LOG_VERBOSE, "Verify residual overflow flag is set");
if (task->residual_status != SCSI_RESIDUAL_OVERFLOW) {