Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 516a4201 authored by Andreas Herrmann's avatar Andreas Herrmann Committed by James Bottomley
Browse files

[SCSI] zfcp: fix: mark fsf request failed when receiving unknown status qualifier



From: Maxim Shchetynin <maxim@de.ibm.com>

Correct a bug in zfcp_fsf_send_fcp_command_handler.  An fsf request
was not marked as failed if an unknown status qualifier was returned.

Signed-off-by: default avatarAndreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 65a8d4e1
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -3931,19 +3931,16 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req)
			debug_text_event(fsf_req->adapter->erp_dbf, 1,
			debug_text_event(fsf_req->adapter->erp_dbf, 1,
					 "fsf_sq_ltest");
					 "fsf_sq_ltest");
 			zfcp_test_link(unit->port);
 			zfcp_test_link(unit->port);
			fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
			break;
			break;
		case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED:
		case FSF_SQ_ULP_DEPENDENT_ERP_REQUIRED:
			/* FIXME(hw) need proper specs for proper action */
			/* FIXME(hw) need proper specs for proper action */
			/* let scsi stack deal with retries and escalation */
			/* let scsi stack deal with retries and escalation */
			debug_text_event(fsf_req->adapter->erp_dbf, 1,
			debug_text_event(fsf_req->adapter->erp_dbf, 1,
					 "fsf_sq_ulp");
					 "fsf_sq_ulp");
			fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
			break;
			break;
		default:
		default:
			/* FIXME: shall we consider this a successful transfer? */
			ZFCP_LOG_NORMAL
			ZFCP_LOG_NORMAL
			    ("bug: Wrong status qualifier 0x%x arrived.\n",
 			    ("Unknown status qualifier 0x%x arrived.\n",
			     header->fsf_status_qual.word[0]);
			     header->fsf_status_qual.word[0]);
			debug_text_event(fsf_req->adapter->erp_dbf, 0,
			debug_text_event(fsf_req->adapter->erp_dbf, 0,
					 "fsf_sq_inval:");
					 "fsf_sq_inval:");
@@ -3952,6 +3949,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req)
					sizeof(u32));
					sizeof(u32));
			break;
			break;
		}
		}
		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
		break;
		break;


	case FSF_GOOD:
	case FSF_GOOD: