Lines Matching defs:pVScsiReq

191 static int vscsiLunSbcReqProcess(PVSCSILUNINT pVScsiLun, PVSCSIREQINT pVScsiReq)
200 switch(pVScsiReq->pbCDB[0])
205 if (pVScsiReq->pbCDB[1] & 0x1)
207 rc = vscsiVpdPagePoolQueryPage(&pVScsiLunSbc->VpdPagePool, pVScsiReq, pVScsiReq->pbCDB[2]);
210 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST,
215 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
217 else if (pVScsiReq->pbCDB[2] != 0) /* A non zero page code is an error. */
218 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST,
236 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, (uint8_t *)&ScsiInquiryReply, sizeof(SCSIINQUIRYDATA));
237 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
255 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
256 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
261 uint8_t uModePage = pVScsiReq->pbCDB[2] & 0x3f;
290 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
291 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
293 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
301 size_t cbList = pVScsiReq->pbCDB[4];
304 cbCopied = RTSgBufCopyToBuf(&pVScsiReq->SgBuf, &abParms[0], sizeof(abParms));
307 if ( !(pVScsiReq->pbCDB[1] & 0x01)
318 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
323 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
329 uLbaStart = ((uint64_t) pVScsiReq->pbCDB[3]
330 | (pVScsiReq->pbCDB[2] << 8)
331 | ((pVScsiReq->pbCDB[1] & 0x1f) << 16));
332 cSectorTransfer = pVScsiReq->pbCDB[4];
338 uLbaStart = vscsiBE2HU32(&pVScsiReq->pbCDB[2]);
339 cSectorTransfer = vscsiBE2HU16(&pVScsiReq->pbCDB[7]);
345 uLbaStart = vscsiBE2HU32(&pVScsiReq->pbCDB[2]);
346 cSectorTransfer = vscsiBE2HU32(&pVScsiReq->pbCDB[6]);
352 uLbaStart = vscsiBE2HU64(&pVScsiReq->pbCDB[2]);
353 cSectorTransfer = vscsiBE2HU32(&pVScsiReq->pbCDB[10]);
359 uLbaStart = ((uint64_t) pVScsiReq->pbCDB[3]
360 | (pVScsiReq->pbCDB[2] << 8)
361 | ((pVScsiReq->pbCDB[1] & 0x1f) << 16));
362 cSectorTransfer = pVScsiReq->pbCDB[4];
368 uLbaStart = vscsiBE2HU32(&pVScsiReq->pbCDB[2]);
369 cSectorTransfer = vscsiBE2HU16(&pVScsiReq->pbCDB[7]);
375 uLbaStart = vscsiBE2HU32(&pVScsiReq->pbCDB[2]);
376 cSectorTransfer = vscsiBE2HU32(&pVScsiReq->pbCDB[6]);
382 uLbaStart = vscsiBE2HU64(&pVScsiReq->pbCDB[2]);
383 cSectorTransfer = vscsiBE2HU32(&pVScsiReq->pbCDB[10]);
392 uint8_t uDataMode = pVScsiReq->pbCDB[1] & 0x1f;
409 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
410 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
424 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
429 uint16_t cbMax = vscsiBE2HU16(&pVScsiReq->pbCDB[7]);
430 uint8_t uPageCode = pVScsiReq->pbCDB[2] & 0x3f;
431 uint8_t uSubPageCode = pVScsiReq->pbCDB[3];
445 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
446 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
451 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
457 switch (pVScsiReq->pbCDB[1] & 0x1f)
470 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
471 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
475 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00); /* Don't know if this is correct */
485 size_t cbList = vscsiBE2HU16(&pVScsiReq->pbCDB[7]);
488 cbCopied = RTSgBufCopyToBuf(&pVScsiReq->SgBuf, &abHdr[0], sizeof(abHdr));
491 if ( !(pVScsiReq->pbCDB[1] & 0x01)
506 cbCopied = RTSgBufCopyToBuf(&pVScsiReq->SgBuf, &abBlkDesc[0], sizeof(abBlkDesc));
509 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
518 rc = vscsiIoReqUnmapEnqueue(pVScsiLun, pVScsiReq, paRanges, cBlkDesc);
524 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_HARDWARE_ERROR, SCSI_ASC_SYSTEM_RESOURCE_FAILURE,
528 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
531 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
534 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_ILLEGAL_OPCODE, 0x00);
540 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_ILLEGAL_OPCODE, 0x00);
550 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_LOGICAL_BLOCK_OOR, 0x00);
551 vscsiDeviceReqComplete(pVScsiLun->pVScsiDevice, pVScsiReq, rcReq, false, VINF_SUCCESS);
556 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
557 vscsiDeviceReqComplete(pVScsiLun->pVScsiDevice, pVScsiReq, rcReq, false, VINF_SUCCESS);
565 rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_DATA_PROTECT, SCSI_ASC_WRITE_PROTECTED, 0x00);
567 rc = vscsiIoReqTransferEnqueue(pVScsiLun, pVScsiReq, enmTxDir,
571 else if (pVScsiReq->pbCDB[0] == SCSI_SYNCHRONIZE_CACHE)
574 rc = vscsiIoReqFlushEnqueue(pVScsiLun, pVScsiReq);
576 else if (pVScsiReq->pbCDB[0] != SCSI_UNMAP) /* Request completed */
577 vscsiDeviceReqComplete(pVScsiLun->pVScsiDevice, pVScsiReq, rcReq, false, VINF_SUCCESS);