VirtualBox

Changeset 37603 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Jun 23, 2011 8:18:49 AM (13 years ago)
Author:
vboxsync
Message:

Main-CloneVM: register new mediums; use global default disk format

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/MachineImplCloneVM.cpp

    r37590 r37603  
    580580                    if (FAILED(rc)) throw rc;
    581581
    582                     Bstr bstrSrcFormat = "VDI";
     582                    /* Default format? */
     583                    Utf8Str strDefaultFormat;
     584                    p->mParent->getDefaultHardDiskFormat(strDefaultFormat);
     585                    Bstr bstrSrcFormat(strDefaultFormat);
    583586                    ULONG srcVar = MediumVariant_Standard;
    584587                    /* Is the source file based? */
     
    614617                                       Utf8Str(bstrSrcFormat),
    615618                                       strFile,
    616                                        Guid(),  /* empty media registry */
    617                                        NULL     /* llRegistriesThatNeedSaving */);
     619                                       Guid::Empty,  /* empty media registry */
     620                                       NULL          /* llRegistriesThatNeedSaving */);
    618621                    if (FAILED(rc)) throw rc;
    619622
     
    643646                        throw p->setError(iRc, Utf8Str(info.getText()).c_str());
    644647                    }
    645 
     648                    /* Remember created medias. */
     649                    newMedias.append(pTarget);
    646650                    /* Get the medium type from the source and set it to the
    647651                     * new medium. */
     
    652656                    if (FAILED(rc)) throw rc;
    653657                    map.insert(TStrMediumPair(Utf8Str(bstrSrcId), pTarget));
    654 
    655                     /* Remember created medias. */
    656                     newMedias.append(pTarget);
     658                    /* Global register the new harddisk */
     659                    rc = p->mParent->registerHardDisk(pTarget, NULL /* pllRegistriesThatNeedSaving */);
     660                    if (FAILED(rc)) return rc;
    657661                    /* This medium becomes the parent of the next medium in the
    658662                     * chain. */
     
    672676                                pNewParent->getPreferredDiffFormat(),
    673677                                Utf8StrFmt("%s%c", strTrgSnapshotFolder.c_str(), RTPATH_DELIMITER),
    674                                 Guid(), /* empty media registry */
    675                                 NULL);  /* pllRegistriesThatNeedSaving */
     678                                Guid::Empty, /* empty media registry */
     679                                NULL);       /* pllRegistriesThatNeedSaving */
    676680                if (FAILED(rc)) throw rc;
    677681                MediumLockList *pMediumLockList(new MediumLockList());
     
    690694                delete pMediumLockList;
    691695                if (FAILED(rc)) throw rc;
     696                /* Remember created medias. */
     697                newMedias.append(diff);
     698                /* Global register the new harddisk */
     699                rc = p->mParent->registerHardDisk(diff, NULL /* pllRegistriesThatNeedSaving */);
     700                if (FAILED(rc)) return rc;
     701                /* This medium becomes the parent of the next medium in the
     702                 * chain. */
    692703                pNewParent = diff;
    693                 newMedias.append(diff);
    694704            }
    695705            Bstr bstrSrcId;
     
    703713            d->updateStorageLists(trgMCF.storageMachine.llStorageControllers, bstrSrcId, bstrTrgId);
    704714            d->updateSnapshotStorageLists(trgMCF.llFirstSnapshot, bstrSrcId, bstrTrgId);
    705             /* Make sure all disks know of the new machine uuid. We do this
    706              * last to be able to change the medium type above. */
    707             rc = pNewParent->addRegistry(d->pTrgMachine->mData->mUuid, true /* fRecursive */);
     715            /* Make sure all parent disks know of the new machine uuid. We do
     716             * this last to be able to change the medium type above. */
     717            rc = pNewParent->addRegistry(d->pTrgMachine->mData->mUuid, false /* fRecursive */);
    708718            if (FAILED(rc)) throw rc;
    709719        }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette