- Timestamp:
- Aug 23, 2021 8:21:07 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Storage/VD.cpp
r90815 r90816 8512 8512 VBOXDDU_DECL(uint64_t) VDGetSize(PVDISK pDisk, unsigned nImage) 8513 8513 { 8514 LogFlowFunc(("pDisk=%#p nImage=%u\n", pDisk, nImage)); 8515 /* sanity check */ 8516 AssertPtrReturn(pDisk, VERR_INVALID_POINTER); 8517 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature)); 8518 8519 /* Do the job. */ 8520 int rc2 = vdThreadStartRead(pDisk); 8521 AssertRC(rc2); 8522 8523 uint64_t cbSize; 8524 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage); 8525 AssertPtr(pImage); 8526 if (pImage) 8527 cbSize = vdImageGetSize(pImage); 8528 else 8529 cbSize = 0; 8530 8531 rc2 = vdThreadFinishRead(pDisk); 8532 AssertRC(rc2); 8533 8534 LogFlowFunc(("returns %llu (%#RX64)\n", cbSize, cbSize)); 8535 return cbSize; 8536 } 8537 8538 8539 VBOXDDU_DECL(uint64_t) VDGetFileSize(PVDISK pDisk, unsigned nImage) 8540 { 8514 8541 uint64_t cbSize; 8515 8542 int rc2; 8516 bool fLockRead = false;8517 8543 8518 8544 LogFlowFunc(("pDisk=%#p nImage=%u\n", pDisk, nImage)); … … 8525 8551 rc2 = vdThreadStartRead(pDisk); 8526 8552 AssertRC(rc2); 8527 fLockRead = true;8528 8529 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage);8530 AssertPtrBreakStmt(pImage, cbSize = 0);8531 8532 cbSize = vdImageGetSize(pImage);8533 } while (0);8534 8535 if (RT_UNLIKELY(fLockRead))8536 {8537 rc2 = vdThreadFinishRead(pDisk);8538 AssertRC(rc2);8539 }8540 8541 LogFlowFunc(("returns %llu\n", cbSize));8542 return cbSize;8543 }8544 8545 8546 VBOXDDU_DECL(uint64_t) VDGetFileSize(PVDISK pDisk, unsigned nImage)8547 {8548 uint64_t cbSize;8549 int rc2;8550 bool fLockRead = false;8551 8552 LogFlowFunc(("pDisk=%#p nImage=%u\n", pDisk, nImage));8553 do8554 {8555 /* sanity check */8556 AssertPtrBreakStmt(pDisk, cbSize = 0);8557 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature));8558 8559 rc2 = vdThreadStartRead(pDisk);8560 AssertRC(rc2);8561 fLockRead = true;8562 8553 8563 8554 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage); … … 8566 8557 } while (0); 8567 8558 8568 if (RT_UNLIKELY(fLockRead)) 8569 { 8570 rc2 = vdThreadFinishRead(pDisk); 8571 AssertRC(rc2); 8572 } 8559 rc2 = vdThreadFinishRead(pDisk); 8560 AssertRC(rc2); 8573 8561 8574 8562 LogFlowFunc(("returns %llu\n", cbSize)); … … 8582 8570 int rc = VINF_SUCCESS; 8583 8571 int rc2; 8584 bool fLockRead = false;8585 8572 8586 8573 LogFlowFunc(("pDisk=%#p nImage=%u pPCHSGeometry=%#p\n", … … 8597 8584 rc2 = vdThreadStartRead(pDisk); 8598 8585 AssertRC(rc2); 8599 fLockRead = true;8600 8586 8601 8587 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage); … … 8615 8601 } while (0); 8616 8602 8617 if (RT_UNLIKELY(fLockRead)) 8618 { 8619 rc2 = vdThreadFinishRead(pDisk); 8620 AssertRC(rc2); 8621 } 8603 rc2 = vdThreadFinishRead(pDisk); 8604 AssertRC(rc2); 8622 8605 8623 8606 LogFlowFunc(("%Rrc (PCHS=%u/%u/%u)\n", rc, … … 8725 8708 int rc = VINF_SUCCESS; 8726 8709 int rc2; 8727 bool fLockRead = false;8728 8710 8729 8711 LogFlowFunc(("pDisk=%#p nImage=%u pLCHSGeometry=%#p\n", … … 8738 8720 do 8739 8721 { 8740 8741 8722 rc2 = vdThreadStartRead(pDisk); 8742 8723 AssertRC(rc2); 8743 fLockRead = true;8744 8724 8745 8725 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage); … … 8759 8739 } while (0); 8760 8740 8761 if (RT_UNLIKELY(fLockRead)) 8762 { 8763 rc2 = vdThreadFinishRead(pDisk); 8764 AssertRC(rc2); 8765 } 8741 rc2 = vdThreadFinishRead(pDisk); 8742 AssertRC(rc2); 8766 8743 8767 8744 LogFlowFunc((": %Rrc (LCHS=%u/%u/%u)\n", rc, … … 8870 8847 int rc = VINF_SUCCESS; 8871 8848 int rc2; 8872 bool fLockRead = false;8873 8849 8874 8850 LogFlowFunc(("pDisk=%#p nImage=%u fFlags=%#x ppRegionList=%#p\n", … … 8885 8861 rc2 = vdThreadStartRead(pDisk); 8886 8862 AssertRC(rc2); 8887 fLockRead = true;8888 8863 8889 8864 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage); … … 8901 8876 } while (0); 8902 8877 8903 if (RT_UNLIKELY(fLockRead)) 8904 { 8905 rc2 = vdThreadFinishRead(pDisk); 8906 AssertRC(rc2); 8907 } 8878 rc2 = vdThreadFinishRead(pDisk); 8879 AssertRC(rc2); 8908 8880 8909 8881 LogFlowFunc((": %Rrc\n", rc)); … … 8923 8895 int rc = VINF_SUCCESS; 8924 8896 int rc2; 8925 bool fLockRead = false;8926 8897 8927 8898 LogFlowFunc(("pDisk=%#p nImage=%u puVersion=%#p\n", … … 8938 8909 rc2 = vdThreadStartRead(pDisk); 8939 8910 AssertRC(rc2); 8940 fLockRead = true;8941 8911 8942 8912 PVDIMAGE pImage = vdGetImageByNumber(pDisk, nImage); … … 8946 8916 } while (0); 8947 8917 8948 if (RT_UNLIKELY(fLockRead)) /** @todo r=bird: This prediction is utter rubbish! Good example why avoid them... */ 8949 { 8950 rc2 = vdThreadFinishRead(pDisk); 8951 AssertRC(rc2); 8952 } 8918 rc2 = vdThreadFinishRead(pDisk); 8919 AssertRC(rc2); 8953 8920 8954 8921 LogFlowFunc(("returns %Rrc uVersion=%#x\n", rc, *puVersion)); … … 9730 9697 LogFlowFunc(("pszFilename=\"%s\"\n", pszFilename)); 9731 9698 /* Check arguments. */ 9732 AssertMsgReturn(VALID_PTR(pszFilename) && *pszFilename, 9733 ("pszFilename=%#p \"%s\"\n", pszFilename, pszFilename), 9734 VERR_INVALID_PARAMETER); 9699 AssertPtrReturn(pszFilename, VERR_INVALID_POINTER); 9700 AssertReturn(*pszFilename != '\0', VERR_INVALID_PARAMETER); 9735 9701 AssertPtrReturn(pszBackend, VERR_INVALID_POINTER); 9736 AssertMsgReturn((fFlags & ~VD_REPAIR_FLAGS_MASK) == 0, 9737 ("fFlags=%#x\n", fFlags), 9702 AssertMsgReturn((fFlags & ~VD_REPAIR_FLAGS_MASK) == 0, ("fFlags=%#x\n", fFlags), 9738 9703 VERR_INVALID_PARAMETER); 9739 9704
Note:
See TracChangeset
for help on using the changeset viewer.