VirtualBox

Changeset 60627 in vbox


Ignore:
Timestamp:
Apr 21, 2016 1:47:37 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106776
Message:

Main/Medium: When creating a medium lock list, explicitly state which object should be locked for writing (in some case it isn't the object for which the lock list is requested). This is especially important for backward medium merge operation, where the target isn't that object for backward merging. All other changes are simply adjusting code to the changed method parameter list.

Location:
trunk/src/VBox/Main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/MediumImpl.h

    r59621 r60627  
    55
    66/*
    7  * Copyright (C) 2008-2015 Oracle Corporation
     7 * Copyright (C) 2008-2016 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    158158
    159159    HRESULT i_createMediumLockList(bool fFailIfInaccessible,
    160                                    bool fMediumLockWrite,
     160                                   Medium *pToLock,
    161161                                   bool fMediumLockWriteAll,
    162162                                   Medium *pToBeParent,
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r60410 r60627  
    55
    66/*
    7  * Copyright (C) 2004-2015 Oracle Corporation
     7 * Copyright (C) 2004-2016 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    39233923
    39243924                        rc = medium->i_createMediumLockList(true /* fFailIfInaccessible */,
    3925                                                             true /* fMediumLockWrite */,
     3925                                                            medium /* pToLockWrite */,
    39263926                                                            false /* fMediumLockWriteAll */,
    39273927                                                            NULL,
     
    40214021
    40224022                                rc = medium->i_createMediumLockList(true /* fFailIfInaccessible */,
    4023                                                                     true /* fMediumLockWrite */,
     4023                                                                    medium /* pToLockWrite */,
    40244024                                                                    false /* fMediumLockWriteAll */,
    40254025                                                                    NULL,
     
    41884188        treeLock.release();
    41894189        rc = diff->i_createMediumLockList(true /* fFailIfInaccessible */,
    4190                                           true /* fMediumLockWrite */,
     4190                                          diff /* pToLockWrite */,
    41914191                                          false /* fMediumLockWriteAll */,
    41924192                                          medium,
     
    42924292
    42934293            rc = medium->i_createMediumLockList(true /* fFailIfInaccessible */,
    4294                                                 true /* fMediumLockWrite */,
     4294                                                medium /* pToLockWrite */,
    42954295                                                false /* fMediumLockWriteAll */,
    42964296                                                NULL,
     
    1074010740                    alock.release();
    1074110741                    rc = pMedium->i_createMediumLockList(true /* fFailIfInaccessible */,
    10742                                                          false /* fMediumLockWrite */,
     10742                                                         NULL /* pToLockWrite */,
    1074310743                                                         false /* fMediumLockWriteAll */,
    1074410744                                                         NULL,
     
    1099410994                    alock.release();
    1099510995                    rc = pMedium->i_createMediumLockList(true /* fFailIfInaccessible */,
    10996                                                          false /* fMediumLockWrite */,
     10996                                                         NULL /* pToLockWrite */,
    1099710997                                                         false /* fMediumLockWriteAll */,
    1099810998                                                         NULL,
     
    1440414404            alock.release();
    1440514405            mrc = pMedium->i_createMediumLockList(fIsVitalImage /* fFailIfInaccessible */,
    14406                                                   !fIsReadOnlyLock /* fMediumLockWrite */,
     14406                                                  !fIsReadOnlyLock ? pMedium : NULL /* pToLockWrite */,
    1440714407                                                  false /* fMediumLockWriteAll */,
    1440814408                                                  NULL,
  • trunk/src/VBox/Main/src-server/MachineImplCloneVM.cpp

    r58484 r60627  
    55
    66/*
    7  * Copyright (C) 2011-2015 Oracle Corporation
     7 * Copyright (C) 2011-2016 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    716716        MediumLockList *pMediumLockList(new MediumLockList());
    717717        rc = diff->i_createMediumLockList(true /* fFailIfInaccessible */,
    718                                           true /* fMediumLockWrite */,
     718                                          diff /* pToLockWrite */,
    719719                                          false /* fMediumLockWriteAll */,
    720720                                          pParent,
  • trunk/src/VBox/Main/src-server/MediumImpl.cpp

    r60288 r60627  
    26152615    alock.release();
    26162616    HRESULT rc = diff->i_createMediumLockList(true /* fFailIfInaccessible */,
    2617                                               true /* fMediumLockWrite */,
     2617                                              diff /* pToLockWrite */,
    26182618                                              false /* fMediumLockWriteAll */,
    26192619                                              this,
     
    27552755        alock.release();
    27562756        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    2757                                     false /* fMediumLockWrite */,
     2757                                    NULL /* pToLockWrite */,
    27582758                                    false /* fMediumLockWriteAll */,
    27592759                                    NULL,
     
    27702770        alock.release();
    27712771        rc = pTarget->i_createMediumLockList(true /* fFailIfInaccessible */,
    2772                                              true /* fMediumLockWrite */,
     2772                                             pTarget /* pToLockWrite */,
    27732773                                             false /* fMediumLockWriteAll */,
    27742774                                             pParent,
     
    28852885        alock.release();
    28862886        rc = i_createMediumLockList(true /* fFailIfInaccessible */ ,
    2887                                     true /* fMediumLockWrite */,
     2887                                    this /* pToLockWrite */,
    28882888                                    false /* fMediumLockWriteAll */,
    28892889                                    NULL,
     
    29552955        alock.release();
    29562956        rc = i_createMediumLockList(true /* fFailIfInaccessible */ ,
    2957                                     true /* fMediumLockWrite */,
     2957                                    this /* pToLockWrite */,
    29582958                                    false /* fMediumLockWriteAll */,
    29592959                                    NULL,
     
    30383038        multilock.release();
    30393039        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    3040                                     true /* fMediumLockWrite */,
     3040                                    this /* pToLockWrite */,
    30413041                                    false /* fMediumLockWriteAll */,
    30423042                                    NULL,
     
    31273127        alock.release();
    31283128        rc = i_createMediumLockList(true /* fFailIfInaccessible */ ,
    3129                                     true /* fMediumLockWrite */,
     3129                                    this /* pToLockWrite */,
    31303130                                    true /* fMediumLockAllWrite */,
    31313131                                    NULL,
     
    42724272 *          inaccessible media are silently skipped and not locked (i.e. their state remains "Inaccessible");
    42734273 *          this is necessary for a VM's removable media VM startup for which we do not want to fail.
    4274  * @param fMediumLockWrite     Whether to associate a write lock with this medium.
     4274 * @param pToLockWrite         If not NULL, associate a write lock with this medium object.
    42754275 * @param fMediumLockWriteAll  Whether to associate a write lock to all other media too.
    42764276 * @param pToBeParent          Medium which will become the parent of this medium.
     
    42784278 */
    42794279HRESULT Medium::i_createMediumLockList(bool fFailIfInaccessible,
    4280                                        bool fMediumLockWrite,
     4280                                       Medium *pToLockWrite,
    42814281                                       bool fMediumLockWriteAll,
    42824282                                       Medium *pToBeParent,
     
    43444344        }
    43454345
    4346         if (pMedium == this)
    4347             mediumLockList.Prepend(pMedium, fMediumLockWrite);
     4346        if (pMedium == pToLockWrite)
     4347            mediumLockList.Prepend(pMedium, true);
    43484348        else
    43494349            mediumLockList.Prepend(pMedium, fMediumLockWriteAll);
     
    47504750        multilock.release();
    47514751        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    4752                                     true /* fMediumLockWrite */,
     4752                                    this /* pToLockWrite */,
    47534753                                    false /* fMediumLockWriteAll */,
    47544754                                    NULL,
     
    51135113        if (fMergeForward)
    51145114            rc = pTarget->i_createMediumLockList(true /* fFailIfInaccessible */,
    5115                                                  true /* fMediumLockWrite */,
     5115                                                 pTarget /* pToLockWrite */,
    51165116                                                 false /* fMediumLockWriteAll */,
    51175117                                                 NULL,
     
    51195119        else
    51205120            rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    5121                                         true /* fMediumLockWrite */,
     5121                                        pTarget /* pToLockWrite */,
    51225122                                        false /* fMediumLockWriteAll */,
    51235123                                        NULL,
     
    55675567    MediumLockList mediumLockList;
    55685568    HRESULT rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    5569                                         false /* fMediumLockWrite */,
     5569                                        NULL /* pToLockWrite */,
    55705570                                        false /* fMediumLockWriteAll */,
    55715571                                        this,
     
    56845684        MediumLockList *pSourceMediumLockList(new MediumLockList());
    56855685        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    5686                                     false /* fMediumLockWrite */,
     5686                                    NULL /* pToLockWrite */,
    56875687                                    false /* fMediumLockWriteAll */,
    56885688                                    NULL,
     
    57745774        alock.release();
    57755775        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    5776                                     true /* fMediumLockWrite */,
     5776                                    this /* pToLockWrite */,
    57775777                                    false /* fMediumLockWriteAll */,
    57785778                                    aParent,
     
    58725872        alock.release();
    58735873        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
    5874                                     false /* fMediumLockWrite */,
     5874                                    NULL /* pToLockWrite */,
    58755875                                    false /* fMediumLockWriteAll */,
    58765876                                    NULL,
     
    58875887        alock.release();
    58885888        rc = aTarget->i_createMediumLockList(true /* fFailIfInaccessible */,
    5889                                              true /* fMediumLockWrite */,
     5889                                             aTarget /* pToLockWrite */,
    58905890                                             false /* fMediumLockWriteAll */,
    58915891                                             aParent,
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