Changeset 77023 in vbox for trunk/src/VBox/Devices/Storage
- Timestamp:
- Jan 28, 2019 3:32:50 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 128450
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevATA.cpp
r77012 r77023 3236 3236 uint8_t *pbBuf; 3237 3237 uint32_t cbMax; 3238 uint32_t cSectors, iATAPILBA; 3238 3239 3239 3240 pbPacket = s->aATAPICmd; … … 3341 3342 case SCSI_READ_12: 3342 3343 { 3343 uint32_t cSectors, iATAPILBA;3344 3345 3344 if (s->cNotifiedMediaChange > 0) 3346 3345 { … … 3406 3405 break; 3407 3406 } 3407 case SCSI_READ_CD_MSF: 3408 3408 case SCSI_READ_CD: 3409 3409 { 3410 uint32_t cSectors, iATAPILBA;3411 3412 3410 if (s->cNotifiedMediaChange > 0) 3413 3411 { … … 3426 3424 break; 3427 3425 } 3428 cSectors = (pbPacket[6] << 16) | (pbPacket[7] << 8) | pbPacket[8]; 3429 iATAPILBA = scsiBE2H_U32(pbPacket + 2); 3426 if (pbPacket[0] == SCSI_READ_CD) 3427 { 3428 cSectors = (pbPacket[6] << 16) | (pbPacket[7] << 8) | pbPacket[8]; 3429 iATAPILBA = scsiBE2H_U32(pbPacket + 2); 3430 } 3431 else /* READ CD MSF */ 3432 { 3433 iATAPILBA = scsiMSF2LBA(pbPacket + 3); 3434 if (iATAPILBA > scsiMSF2LBA(pbPacket + 6)) 3435 { 3436 Log2(("Start MSF %02u:%02u:%02u > end MSF %02u:%02u:%02u!\n", *(pbPacket + 3), *(pbPacket + 4), *(pbPacket + 5), 3437 *(pbPacket + 6), *(pbPacket + 7), *(pbPacket + 8))); 3438 atapiR3CmdErrorSimple(s, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET); 3439 break; 3440 } 3441 cSectors = scsiMSF2LBA(pbPacket + 6) - iATAPILBA; 3442 Log2(("Start MSF %02u:%02u:%02u -> LBA %u\n", *(pbPacket + 3), *(pbPacket + 4), *(pbPacket + 5), iATAPILBA)); 3443 Log2(("End MSF %02u:%02u:%02u -> %u sectors\n", *(pbPacket + 6), *(pbPacket + 7), *(pbPacket + 8), cSectors)); 3444 } 3430 3445 if (cSectors == 0) 3431 3446 { … … 3497 3512 case SCSI_SEEK_10: 3498 3513 { 3499 uint32_t iATAPILBA;3500 3514 if (s->cNotifiedMediaChange > 0) 3501 3515 {
Note:
See TracChangeset
for help on using the changeset viewer.