Changeset 83572 in vbox for trunk/src/VBox/Devices/Storage
- Timestamp:
- Apr 5, 2020 9:59:45 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 136915
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevVirtioSCSI.cpp
r83571 r83572 310 310 typedef union VIRTIO_SCSI_CTRL_UNION_T 311 311 { 312 VIRTIOSCSI_CTRL_T scsiCtrl;313 VIRTIOSCSI_CTRL_TMF_T scsiCtrlTmf;314 VIRTIOSCSI_CTRL_AN_T scsiCtrlAsyncNotify;312 VIRTIOSCSI_CTRL_T Type; 313 VIRTIOSCSI_CTRL_TMF_T Tmf; 314 VIRTIOSCSI_CTRL_AN_T AsyncNotify; 315 315 uint8_t ab[24]; 316 316 } VIRTIO_SCSI_CTRL_UNION_T, *PVIRTIO_SCSI_CTRL_UNION_T; … … 1337 1337 } 1338 1338 1339 AssertReturn( (ScsiCtrlUnion. scsiCtrl.uType == VIRTIOSCSI_T_TMF1339 AssertReturn( (ScsiCtrlUnion.Type.uType == VIRTIOSCSI_T_TMF 1340 1340 && pDescChain->cbPhysSend >= sizeof(VIRTIOSCSI_CTRL_TMF_T)) 1341 || ( ( ScsiCtrlUnion. scsiCtrl.uType == VIRTIOSCSI_T_AN_QUERY1342 || ScsiCtrlUnion. scsiCtrl.uType == VIRTIOSCSI_T_AN_SUBSCRIBE)1341 || ( ( ScsiCtrlUnion.Type.uType == VIRTIOSCSI_T_AN_QUERY 1342 || ScsiCtrlUnion.Type.uType == VIRTIOSCSI_T_AN_SUBSCRIBE) 1343 1343 && pDescChain->cbPhysSend >= sizeof(VIRTIOSCSI_CTRL_AN_T)), 1344 1344 0 /** @todo r=bird: what kind of status is '0' here? */); … … 1351 1351 uint8_t cSegs; 1352 1352 RTSGSEG aReqSegs[2]; 1353 switch (ScsiCtrlUnion. scsiCtrl.uType)1353 switch (ScsiCtrlUnion.Type.uType) 1354 1354 { 1355 1355 case VIRTIOSCSI_T_TMF: /* Task Management Functions */ 1356 1356 { 1357 uint8_t uTarget = ScsiCtrlUnion.scsiCtrlTmf.abScsiLun[1]; 1358 uint32_t uScsiLun = RT_MAKE_U16(ScsiCtrlUnion.scsiCtrlTmf.abScsiLun[3], 1359 ScsiCtrlUnion.scsiCtrlTmf.abScsiLun[2]) & 0x3fff; 1357 uint8_t uTarget = ScsiCtrlUnion.Tmf.abScsiLun[1]; 1358 uint32_t uScsiLun = RT_MAKE_U16(ScsiCtrlUnion.Tmf.abScsiLun[3], ScsiCtrlUnion.Tmf.abScsiLun[2]) & 0x3fff; 1360 1359 Log2Func(("[%s] (Target: %d LUN: %d) Task Mgt Function: %s\n", 1361 VIRTQNAME(qIdx), uTarget, uScsiLun, virtioGetTMFTypeText(ScsiCtrlUnion. scsiCtrlTmf.uSubtype)));1360 VIRTQNAME(qIdx), uTarget, uScsiLun, virtioGetTMFTypeText(ScsiCtrlUnion.Tmf.uSubtype))); 1362 1361 1363 1362 if (uTarget >= pThis->cTargets || !pThisCC->paTargetInstances[uTarget].fPresent) … … 1367 1366 bResponse = VIRTIOSCSI_S_INCORRECT_LUN; 1368 1367 else 1369 switch (ScsiCtrlUnion. scsiCtrlTmf.uSubtype)1368 switch (ScsiCtrlUnion.Tmf.uSubtype) 1370 1369 { 1371 1370 case VIRTIOSCSI_T_TMF_ABORT_TASK: … … 1402 1401 case VIRTIOSCSI_T_AN_QUERY: /* Guest SCSI driver is querying supported async event notifications */ 1403 1402 { 1404 PVIRTIOSCSI_CTRL_AN_T const pScsiCtrlAnQuery = &ScsiCtrlUnion.scsiCtrlAsyncNotify; 1405 1406 uint8_t uTarget = pScsiCtrlAnQuery->abScsiLun[1]; 1407 uint32_t uScsiLun = RT_MAKE_U16(pScsiCtrlAnQuery->abScsiLun[3], pScsiCtrlAnQuery->abScsiLun[2]) & 0x3fff; 1403 uint8_t uTarget = ScsiCtrlUnion.AsyncNotify.abScsiLun[1]; 1404 uint32_t uScsiLun = RT_MAKE_U16(ScsiCtrlUnion.AsyncNotify.abScsiLun[3], 1405 ScsiCtrlUnion.AsyncNotify.abScsiLun[2]) & 0x3fff; 1408 1406 1409 1407 if (uTarget >= pThis->cTargets || !pThisCC->paTargetInstances[uTarget].fPresent) … … 1419 1417 { 1420 1418 char szTypeText[128]; 1421 virtioGetControlAsyncMaskText(szTypeText, sizeof(szTypeText), pScsiCtrlAnQuery->fEventsRequested);1419 virtioGetControlAsyncMaskText(szTypeText, sizeof(szTypeText), ScsiCtrlUnion.AsyncNotify.fEventsRequested); 1422 1420 Log2Func(("[%s] (Target: %d LUN: %d) Async. Notification Query: %s\n", 1423 1421 VIRTQNAME(qIdx), uTarget, uScsiLun, szTypeText)); … … 1432 1430 case VIRTIOSCSI_T_AN_SUBSCRIBE: /* Guest SCSI driver is subscribing to async event notification(s) */ 1433 1431 { 1434 PVIRTIOSCSI_CTRL_AN_T const pScsiCtrlAnSubscribe = &ScsiCtrlUnion.scsiCtrlAsyncNotify; 1435 1436 if (pScsiCtrlAnSubscribe->fEventsRequested & ~SUBSCRIBABLE_EVENTS) 1432 if (ScsiCtrlUnion.AsyncNotify.fEventsRequested & ~SUBSCRIBABLE_EVENTS) 1437 1433 LogFunc(("Unsupported bits in event subscription event mask: %#x\n", 1438 pScsiCtrlAnSubscribe->fEventsRequested)); 1439 1440 uint8_t uTarget = pScsiCtrlAnSubscribe->abScsiLun[1]; 1441 uint32_t uScsiLun = RT_MAKE_U16(pScsiCtrlAnSubscribe->abScsiLun[3], pScsiCtrlAnSubscribe->abScsiLun[2]) & 0x3fff; 1434 ScsiCtrlUnion.AsyncNotify.fEventsRequested)); 1435 1436 uint8_t uTarget = ScsiCtrlUnion.AsyncNotify.abScsiLun[1]; 1437 uint32_t uScsiLun = RT_MAKE_U16(ScsiCtrlUnion.AsyncNotify.abScsiLun[3], 1438 ScsiCtrlUnion.AsyncNotify.abScsiLun[2]) & 0x3fff; 1442 1439 1443 1440 #ifdef LOG_ENABLED … … 1445 1442 { 1446 1443 char szTypeText[128]; 1447 virtioGetControlAsyncMaskText(szTypeText, sizeof(szTypeText), pScsiCtrlAnSubscribe->fEventsRequested);1444 virtioGetControlAsyncMaskText(szTypeText, sizeof(szTypeText), ScsiCtrlUnion.AsyncNotify.fEventsRequested); 1448 1445 Log2Func(("[%s] (Target: %d LUN: %d) Async. Notification Subscribe: %s\n", 1449 1446 VIRTQNAME(qIdx), uTarget, uScsiLun, szTypeText)); … … 1458 1455 { 1459 1456 bResponse = VIRTIOSCSI_S_FUNCTION_SUCCEEDED; /* or VIRTIOSCSI_S_FUNCTION_COMPLETE? */ 1460 pThis->fAsyncEvtsEnabled = SUPPORTED_EVENTS & pScsiCtrlAnSubscribe->fEventsRequested;1457 pThis->fAsyncEvtsEnabled = SUPPORTED_EVENTS & ScsiCtrlUnion.AsyncNotify.fEventsRequested; 1461 1458 } 1462 1459 … … 1468 1465 default: 1469 1466 { 1470 LogFunc(("Unknown control type extracted from %s: %u\n", VIRTQNAME(qIdx), ScsiCtrlUnion. scsiCtrl.uType));1467 LogFunc(("Unknown control type extracted from %s: %u\n", VIRTQNAME(qIdx), ScsiCtrlUnion.Type.uType)); 1471 1468 1472 1469 bResponse = VIRTIOSCSI_S_FAILURE;
Note:
See TracChangeset
for help on using the changeset viewer.