Changeset 47829 in vbox for trunk/src/VBox/Devices/Storage/VSCSI
- Timestamp:
- Aug 18, 2013 12:30:02 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 88090
- Location:
- trunk/src/VBox/Devices/Storage/VSCSI
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/VSCSI/VSCSIInternal.h
r44889 r47829 364 364 365 365 /** 366 * Wrapper for the get medium sector size I/O callback. 367 * 368 * @returns VBox status code. 369 * @param pVScsiLun The LUN. 370 * @param pcbSectorSize Where to store the sector size on success. 371 */ 372 DECLINLINE(int) vscsiLunMediumGetSectorSize(PVSCSILUNINT pVScsiLun, uint32_t *pcbSectorSize) 373 { 374 return pVScsiLun->pVScsiLunIoCallbacks->pfnVScsiLunMediumGetSectorSize(pVScsiLun, 375 pVScsiLun->pvVScsiLunUser, 376 pcbSectorSize); 377 } 378 379 /** 366 380 * Wrapper for the get medium lock/unlock I/O callback. 367 381 * -
trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunSbc.cpp
r46598 r47829 33 33 34 34 /** Maximum of amount of LBAs to unmap with one command. */ 35 #define VSCSI_UNMAP_LBAS_MAX ((10*_1M) / 512)35 #define VSCSI_UNMAP_LBAS_MAX(a_cbSector) ((10*_1M) / a_cbSector) 36 36 37 37 /** … … 42 42 /** Core LUN structure */ 43 43 VSCSILUNINT Core; 44 /** Sector size of the medium. */ 45 uint32_t cbSector; 44 46 /** Size of the virtual disk. */ 45 47 uint64_t cSectors; … … 57 59 int cVpdPages = 0; 58 60 59 rc = vscsiLunMediumGetS ize(pVScsiLun, &cbDisk);61 rc = vscsiLunMediumGetSectorSize(pVScsiLun, &pVScsiLunSbc->cbSector); 60 62 if (RT_SUCCESS(rc)) 61 pVScsiLunSbc->cSectors = cbDisk / 512; /* Fixed sector size */ 63 { 64 rc = vscsiLunMediumGetSize(pVScsiLun, &cbDisk); 65 if (RT_SUCCESS(rc)) 66 pVScsiLunSbc->cSectors = cbDisk / pVScsiLunSbc->cbSector; 67 } 62 68 63 69 if (RT_SUCCESS(rc)) … … 100 106 pBlkPage->u32OptTrfLength = 0; 101 107 pBlkPage->u32MaxPreXdTrfLength = 0; 102 pBlkPage->u32MaxUnmapLbaCount = RT_H2BE_U32(VSCSI_UNMAP_LBAS_MAX );108 pBlkPage->u32MaxUnmapLbaCount = RT_H2BE_U32(VSCSI_UNMAP_LBAS_MAX(pVScsiLunSbc->cbSector)); 103 109 pBlkPage->u32MaxUnmapBlkDescCount = UINT32_C(0xffffffff); 104 110 pBlkPage->u32OptUnmapGranularity = 0; … … 246 252 else 247 253 vscsiH2BEU32(aReply, pVScsiLunSbc->cSectors - 1); 248 vscsiH2BEU32(&aReply[4], 512);254 vscsiH2BEU32(&aReply[4], pVScsiLunSbc->cbSector); 249 255 RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply)); 250 256 rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
Note:
See TracChangeset
for help on using the changeset viewer.