Changeset 1015 in vbox for trunk/src/VBox/Main
- Timestamp:
- Feb 21, 2007 7:47:10 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 18872
- Location:
- trunk/src/VBox/Main
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/ConsoleImpl.cpp
r903 r1015 4836 4836 if (hddType == HardDiskStorageType_VirtualDiskImage) 4837 4837 { 4838 ComPtr<IVirtualDiskImage> vdiDisk = hardDisk; 4839 AssertBreak (!vdiDisk.isNull(), hrc = E_FAIL); 4840 4838 4841 rc = CFGMR3InsertNode(pLunL0, "AttachedDriver", &pLunL1); RC_CHECK(); 4839 rc = CFGMR3InsertString(pLunL1, "Driver", "VBoxHDD");RC_CHECK();4842 rc = CFGMR3InsertString(pLunL1, "Driver", "VBoxHDD"); RC_CHECK(); 4840 4843 rc = CFGMR3InsertNode(pLunL1, "Config", &pCfg); RC_CHECK(); 4841 /// @todo (dmik) we temporarily use the location property to 4842 // determine the image file name. This is subject to change 4843 // when iSCSI disks are here (we should either query a 4844 // storage-specific interface from IHardDisk, or "standardize" 4845 // the location property) 4846 hrc = hardDisk->COMGETTER(Location)(&str); H(); 4844 hrc = vdiDisk->COMGETTER(FilePath)(&str); H(); 4847 4845 STR_CONV(); 4848 4846 rc = CFGMR3InsertString(pCfg, "Path", psz); RC_CHECK(); … … 4858 4856 break; 4859 4857 4858 vdiDisk = curHardDisk; 4859 AssertBreak (!vdiDisk.isNull(), hrc = E_FAIL); 4860 4860 4861 PCFGMNODE pCur; 4861 4862 rc = CFGMR3InsertNode(pParent, "Parent", &pCur); RC_CHECK(); 4862 /// @todo (dmik) we temporarily use the location property to 4863 // determine the image file name. This is subject to change 4864 // when iSCSI disks are here (we should either query a 4865 // storage-specific interface from IHardDisk, or "standardize" 4866 // the location property) 4867 hrc = curHardDisk->COMGETTER(Location)(&str); H(); 4863 hrc = vdiDisk->COMGETTER(FilePath)(&str); H(); 4868 4864 STR_CONV(); 4869 4865 rc = CFGMR3InsertString(pCur, "Path", psz); RC_CHECK(); … … 4878 4874 { 4879 4875 ComPtr<IISCSIHardDisk> iSCSIDisk = hardDisk; 4876 AssertBreak (!iSCSIDisk.isNull(), hrc = E_FAIL); 4880 4877 4881 4878 rc = CFGMR3InsertNode(pLunL0, "AttachedDriver", &pLunL1); RC_CHECK(); 4882 rc = CFGMR3InsertString(pLunL1, "Driver", "iSCSI");RC_CHECK();4879 rc = CFGMR3InsertString(pLunL1, "Driver", "iSCSI"); RC_CHECK(); 4883 4880 rc = CFGMR3InsertNode(pLunL1, "Config", &pCfg); RC_CHECK(); 4884 4881 … … 4940 4937 rc = CFGMR3InsertString(pLunL2, "Driver", "iSCSITCP"); RC_CHECK(); 4941 4938 /* Currently the transport driver has no config options. */ 4939 } 4940 else if (hddType == HardDiskStorageType_VMDKImage) 4941 { 4942 ComPtr<IVMDKImage> vmdkDisk = hardDisk; 4943 AssertBreak (!vmdkDisk.isNull(), hrc = E_FAIL); 4944 4945 rc = CFGMR3InsertNode(pLunL0, "AttachedDriver", &pLunL1); RC_CHECK(); 4946 rc = CFGMR3InsertString(pLunL1, "Driver", "VmdkHDD"); RC_CHECK(); 4947 rc = CFGMR3InsertNode(pLunL1, "Config", &pCfg); RC_CHECK(); 4948 hrc = vmdkDisk->COMGETTER(FilePath)(&str); H(); 4949 STR_CONV(); 4950 rc = CFGMR3InsertString(pCfg, "Path", psz); RC_CHECK(); 4951 STR_FREE(); 4942 4952 } 4943 4953 else -
trunk/src/VBox/Main/HardDiskImpl.cpp
r953 r1015 1026 1026 ComObjPtr <HardDisk> &hardDisk) 1027 1027 { 1028 LogFlowFunc (("aLocation=\"%ls\"\n", aLocation)); 1029 1028 1030 AssertReturn (aVirtualBox, E_POINTER); 1029 1031 … … 1040 1042 HardDiskStorageType_T order [2]; 1041 1043 1042 if (RTPathCompare (ext, " vmdk") == 0)1044 if (RTPathCompare (ext, ".vmdk") == 0) 1043 1045 { 1044 1046 order [0] = HardDiskStorageType_VMDKImage; … … 1051 1053 } 1052 1054 1053 for (size_t i = 0; i < ELEMENTS (order) && SUCCEEDED (rc); ++ i)1055 for (size_t i = 0; i < ELEMENTS (order); ++ i) 1054 1056 { 1055 1057 switch (order [i]) … … 1083 1085 default: 1084 1086 { 1085 rc = E_FAIL; 1086 ComAssertComRCBreak (E_FAIL, rc = rc); 1087 ComAssertComRCRetRC (E_FAIL); 1087 1088 } 1088 1089 } … … 2811 2812 /* we have to generate a new UUID */ 2812 2813 mId.create(); 2814 /* currently, all iSCSI hard disks are writethrough */ 2813 2815 mType = HardDiskType_WritethroughHardDisk; 2814 2816 mRegistered = FALSE; … … 3333 3335 CheckComRCBreakRC (rc); 3334 3336 3337 if (mType != HardDiskType_WritethroughHardDisk) 3338 { 3339 rc = setError (E_FAIL, 3340 tr ("Currently, non-Writethrough VMDK images are not " 3341 "allowed ('%ls')"), 3342 toString().raw()); 3343 break; 3344 } 3345 3335 3346 mState = Created; 3336 3347 mRegistered = TRUE; … … 3363 3374 const BSTR aFilePath, BOOL aRegistered /* = FALSE */) 3364 3375 { 3365 LogFlowMember (("HV irtualDiskImage::init (aFilePath='%ls', aRegistered=%d)\n",3376 LogFlowMember (("HVMDKImage::init (aFilePath='%ls', aRegistered=%d)\n", 3366 3377 aFilePath, aRegistered)); 3367 3378 … … 3371 3382 ComAssertRet (!isReady(), E_UNEXPECTED); 3372 3383 3373 mStorageType = HardDiskStorageType_V irtualDiskImage;3384 mStorageType = HardDiskStorageType_VMDKImage; 3374 3385 3375 3386 HRESULT rc = S_OK; … … 3385 3396 rc = setFilePath (aFilePath); 3386 3397 CheckComRCBreakRC (rc); 3398 3399 /* currently, all VMDK hard disks are writethrough */ 3400 mType = HardDiskType_WritethroughHardDisk; 3387 3401 3388 3402 Assert (mId.isEmpty()); … … 3466 3480 3467 3481 /// @todo (r=dmik) implement 3468 3482 // 3469 3483 // if (mState >= Created) 3470 3484 // { … … 3476 3490 // toString().raw(), vrc); 3477 3491 // } 3478 3492 // 3479 3493 // mDescription = aDescription; 3480 3494 // return S_OK; … … 3489 3503 CHECK_READY(); 3490 3504 3491 /// @todo (r=dmik) later3492 3505 /// @todo (r=dmik) will need this if we add suppord for differencing VMDKs 3506 // 3493 3507 // /* only a non-differencing image knows the logical size */ 3494 3508 // if (isDifferencing()) … … 3599 3613 CHECK_BUSY_AND_READERS(); 3600 3614 3601 if (mRegistered) 3602 return setError (E_ACCESSDENIED, 3603 tr ("Cannot delete an image of the registered hard disk image '%ls"), 3604 mFilePathFull.raw()); 3605 if (mState == NotCreated) 3606 return setError (E_FAIL, 3607 tr ("Hard disk image has been already deleted or never created")); 3608 3609 int vrc = RTFileDelete (Utf8Str (mFilePathFull)); 3610 if (VBOX_FAILURE (vrc)) 3611 return setError (E_FAIL, tr ("Could not delete the image file '%ls' (%Vrc)"), 3612 mFilePathFull.raw(), vrc); 3613 3614 mState = NotCreated; 3615 3616 /* reset the fields */ 3617 mSize = 0; 3618 mActualSize = 0; 3619 3620 return S_OK; 3615 return E_NOTIMPL; 3616 3617 /// @todo (r=dmik) later 3618 // We will need to parse the file in order to delete all related delta and 3619 // sparse images etc. We may also want to obey the .vmdk.lck file 3620 // which is (as far as I understood) created when the VMware VM is 3621 // running or saved etc. 3622 // 3623 // if (mRegistered) 3624 // return setError (E_ACCESSDENIED, 3625 // tr ("Cannot delete an image of the registered hard disk image '%ls"), 3626 // mFilePathFull.raw()); 3627 // if (mState == NotCreated) 3628 // return setError (E_FAIL, 3629 // tr ("Hard disk image has been already deleted or never created")); 3630 // 3631 // int vrc = RTFileDelete (Utf8Str (mFilePathFull)); 3632 // if (VBOX_FAILURE (vrc)) 3633 // return setError (E_FAIL, tr ("Could not delete the image file '%ls' (%Vrc)"), 3634 // mFilePathFull.raw(), vrc); 3635 // 3636 // mState = NotCreated; 3637 // 3638 // /* reset the fields */ 3639 // mSize = 0; 3640 // mActualSize = 0; 3641 // 3642 // return S_OK; 3621 3643 } 3622 3644 … … 3639 3661 tr ("Image file '%ls' is not yet created for this hard disk"), 3640 3662 mFilePathFull.raw()); 3641 /// @todo (r=dmik) later? 3663 3664 /// @todo (r=dmik) will need this if we add suppord for differencing VMDKs 3642 3665 // if (isDifferencing()) 3643 3666 // return setError (E_FAIL, … … 3802 3825 return E_NOTIMPL; 3803 3826 3804 /// @todo (r=dmik) later?3827 /// @todo (r=dmik) will need this if we add suppord for differencing VMDKs 3805 3828 // Use code from HVirtualDiskImage::cloneToImage as an example. 3806 3829 } … … 3822 3845 return E_NOTIMPL; 3823 3846 3824 /// @todo (r=dmik) later?3847 /// @todo (r=dmik) will need this if we add suppord for differencing VMDKs 3825 3848 // Use code from HVirtualDiskImage::createDiffImage as an example. 3826 3849 } … … 3901 3924 do 3902 3925 { 3903 /// @todo (r=dmik) implement 3926 /// @todo remove when the code below is implemented 3927 if (mId.isEmpty()) 3928 mId.create(); 3929 3930 /// @todo implement 3904 3931 // 3905 3932 // /* check the image file */ … … 4051 4078 return E_NOTIMPL; 4052 4079 4053 /// @todo (r=dmik) later ?4080 /// @todo (r=dmik) later 4054 4081 // Use code from HVirtualDiskImage::createImage as an example. 4055 4082 } … … 4061 4088 return VERR_GENERAL_FAILURE; 4062 4089 4063 /// @todo (r=dmik) later ?4090 /// @todo (r=dmik) later 4064 4091 // Use code from HVirtualDiskImage::vdiTaskThread as an example. 4065 4092 } -
trunk/src/VBox/Main/MachineImpl.cpp
r815 r1015 4589 4589 bool aInformCallbacksAnyway /* = false */) 4590 4590 { 4591 LogFlowThisFuncEnter(); 4592 4591 4593 /// @todo (dmik) I guess we should lock all our child objects here 4592 4594 // (such as mVRDPServer etc.) to ensure they are not changed … … 4803 4805 } 4804 4806 4807 LogFlowThisFunc (("rc=%08X\n", rc)); 4808 LogFlowThisFuncLeave(); 4805 4809 return rc; 4806 4810 } -
trunk/src/VBox/Main/VirtualBoxImpl.cpp
r975 r1015 3492 3492 } 3493 3493 3494 CFGLDRGetChildNode (hdNode, "VMDKImage", 0, &storageNode); 3495 if (storageNode) 3496 { 3497 ComObjPtr <HVMDKImage> vmdk; 3498 vmdk.createObject(); 3499 rc = vmdk->init (this, NULL, hdNode, storageNode); 3500 break; 3501 } 3502 3494 3503 /// @todo (dmik) later 3495 3504 // CFGLDRGetChildNode (hdNode, "PhysicalVolume", 0, &storageNode); … … 3499 3508 // } 3500 3509 3501 3502 3510 ComAssertMsgFailedBreak (("No valid hard disk storage node!\n"), 3511 rc = E_FAIL); 3503 3512 } 3504 3513 while (0); … … 3739 3748 { 3740 3749 CFGLDRAppendChildNode (hdNode, "ISCSIHardDisk", &storageNode); 3750 ComAssertBreak (storageNode, rc = E_FAIL); 3751 rc = hd->saveSettings (hdNode, storageNode); 3752 break; 3753 } 3754 3755 case HardDiskStorageType_VMDKImage: 3756 { 3757 CFGLDRAppendChildNode (hdNode, "VMDKImage", &storageNode); 3741 3758 ComAssertBreak (storageNode, rc = E_FAIL); 3742 3759 rc = hd->saveSettings (hdNode, storageNode); -
trunk/src/VBox/Main/xml/VirtualBox-settings-common.xsd
r922 r1015 212 212 </xsd:complexType> 213 213 </xsd:element> 214 <xsd:element name="VMDKImage"> 215 <xsd:complexType> 216 <xsd:attribute name="filePath" type="TLocalFile" use="required"/> 217 </xsd:complexType> 218 </xsd:element> 214 219 <xsd:element name="PhysicalVolume"> 215 220 <xsd:complexType>
Note:
See TracChangeset
for help on using the changeset viewer.