ZFCP_LOG_FLAGS(2, "FSF_INVALID_COMMAND_OPTION\n"); 
zfcp_fsf_control_file_handler(struct zfcp_fsf_req *fsf_req){	struct zfcp_adapter *adapter = fsf_req->adapter;	struct fsf_qtcb_header *header = &fsf_req->qtcb->header;	struct fsf_qtcb_bottom_support *bottom = &fsf_req->qtcb->bottom.support;	int retval = 0;	if (fsf_req->status & ZFCP_STATUS_FSFREQ_ERROR) {		retval = -EINVAL;		goto skip_fsfstatus;	}	switch (header->fsf_status) {	case FSF_GOOD:		ZFCP_LOG_FLAGS(2, "FSF_GOOD\n");		ZFCP_LOG_NORMAL(			"The FSF request has been successfully completed "			"on the adapter %s\n",			zfcp_get_busid_by_adapter(adapter));		break;	case FSF_OPERATION_PARTIALLY_SUCCESSFUL:		ZFCP_LOG_FLAGS(2, "FSF_OPERATION_PARTIALLY_SUCCESSFUL\n");		if (bottom->operation_subtype == FSF_CFDC_OPERATION_SUBTYPE) {			switch (header->fsf_status_qual.word[0]) {			case FSF_SQ_CFDC_HARDENED_ON_SE:				ZFCP_LOG_NORMAL(					"CFDC on the adapter %s has being "					"hardened on primary and secondary SE\n",					zfcp_get_busid_by_adapter(adapter));				break;			case FSF_SQ_CFDC_COULD_NOT_HARDEN_ON_SE:				ZFCP_LOG_NORMAL(					"CFDC of the adapter %s could not "					"be saved on the SE\n",					zfcp_get_busid_by_adapter(adapter));				break;			case FSF_SQ_CFDC_COULD_NOT_HARDEN_ON_SE2:				ZFCP_LOG_NORMAL(					"CFDC of the adapter %s could not "					"be copied to the secondary SE\n",					zfcp_get_busid_by_adapter(adapter));				break;			default:				ZFCP_LOG_NORMAL(					"CFDC could not be hardened "					"on the adapter %s\n",					zfcp_get_busid_by_adapter(adapter));			}		}		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EAGAIN;		break;	case FSF_AUTHORIZATION_FAILURE:		ZFCP_LOG_FLAGS(2, "FSF_AUTHORIZATION_FAILURE\n");		ZFCP_LOG_NORMAL(			"Adapter %s does not accept privileged commands\n",			zfcp_get_busid_by_adapter(adapter));		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EACCES;		break;	case FSF_CFDC_ERROR_DETECTED:		ZFCP_LOG_FLAGS(2, "FSF_CFDC_ERROR_DETECTED\n");		ZFCP_LOG_NORMAL(			"Error at position %d in the CFDC, "			"CFDC is discarded by the adapter %s\n",			header->fsf_status_qual.word[0],			zfcp_get_busid_by_adapter(adapter));		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EPERM;		break;	case FSF_CONTROL_FILE_UPDATE_ERROR:		ZFCP_LOG_FLAGS(2, "FSF_CONTROL_FILE_UPDATE_ERROR\n");		ZFCP_LOG_NORMAL(			"Adapter %s cannot harden the control file, "			"file is discarded\n",			zfcp_get_busid_by_adapter(adapter));		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EIO;		break;	case FSF_CONTROL_FILE_TOO_LARGE:		ZFCP_LOG_FLAGS(2, "FSF_CONTROL_FILE_TOO_LARGE\n");		ZFCP_LOG_NORMAL(			"Control file is too large, file is discarded "			"by the adapter %s\n",			zfcp_get_busid_by_adapter(adapter));		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EIO;		break;	case FSF_ACCESS_CONFLICT_DETECTED:		ZFCP_LOG_FLAGS(2, "FSF_ACCESS_CONFLICT_DETECTED\n");		if (bottom->operation_subtype == FSF_CFDC_OPERATION_SUBTYPE)			ZFCP_LOG_NORMAL(				"CFDC has been discarded by the adapter %s, "				"because activation would impact "				"%d active connection(s)\n",				zfcp_get_busid_by_adapter(adapter),				header->fsf_status_qual.word[0]);		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EIO;		break;	case FSF_CONFLICTS_OVERRULED:		ZFCP_LOG_FLAGS(2, "FSF_CONFLICTS_OVERRULED\n");		if (bottom->operation_subtype == FSF_CFDC_OPERATION_SUBTYPE)			ZFCP_LOG_NORMAL(				"CFDC has been activated on the adapter %s, "				"but activation has impacted "				"%d active connection(s)\n",				zfcp_get_busid_by_adapter(adapter),				header->fsf_status_qual.word[0]);		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EIO;		break;	case FSF_UNKNOWN_OP_SUBTYPE:		ZFCP_LOG_FLAGS(2, "FSF_UNKNOWN_OP_SUBTYPE\n");		ZFCP_LOG_NORMAL("unknown operation subtype (adapter: %s, "				"op_subtype=0x%x)\n",				zfcp_get_busid_by_adapter(adapter),				bottom->operation_subtype);		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EINVAL;		break;	case FSF_INVALID_COMMAND_OPTION:		ZFCP_LOG_FLAGS(2, "FSF_INVALID_COMMAND_OPTION\n");		ZFCP_LOG_NORMAL(			"Invalid option 0x%x has been specified "			"in QTCB bottom sent to the adapter %s\n",			bottom->option,			zfcp_get_busid_by_adapter(adapter));		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EINVAL;		break;	default:		ZFCP_LOG_NORMAL(			"bug: An unknown/unexpected FSF status 0x%08x "			"was presented on the adapter %s\n",			header->fsf_status,			zfcp_get_busid_by_adapter(adapter));		debug_text_event(fsf_req->adapter->erp_dbf, 0, "fsf_sq_inval");		debug_exception(fsf_req->adapter->erp_dbf, 0,			&header->fsf_status_qual.word[0], sizeof(u32));		fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;		retval = -EINVAL;		break;	}skip_fsfstatus:	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6bc9dace767f1fffdf975b3398b3c4e37cd5ae18/zfcp_fsf.c/clean/drivers/s390/scsi/zfcp_fsf.c