VirtualBox

Changeset 33218 in vbox for trunk/src/VBox/Devices/Storage


Ignore:
Timestamp:
Oct 18, 2010 7:54:10 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
66762
Message:

AsyncCompletion: Move bandwidth groups to the generic code and support arbitrary grouping of endpoints into bandwidth groups.

To add a new bandwidth group use setextradata (this adds a group called Test and sets the maximum to 2 MB/s):

VBoxInternal/PDM/AsyncCompletion/File/BwGroups/Test/Max 2097152
VBoxInternal/PDM/AsyncCompletion/File/BwGroups/Test/Start 2097152
VBoxInternal/PDM/AsyncCompletion/File/BwGroups/Test/Step 0

To assign a disk to the group add:

VBoxInternal/Devices/ahci/0/LUN#0/AttachedDriver/Config/BwGroup Test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DrvVD.cpp

    r32818 r33218  
    186186    /** The disk buffer. */
    187187    uint8_t            *pbData;
     188    /** Bandwidth group the disk is assigned to. */
     189    char               *pszBwGroup;
    188190} VBOXDISK, *PVBOXDISK;
    189191
     
    364366                                                         pszLocation, fFlags,
    365367                                                         pStorageBackend->pTemplate);
     368
    366369                if (RT_SUCCESS(rc))
    367370                {
    368                     *ppStorage = pStorageBackend;
    369                     return VINF_SUCCESS;
     371                    if (pThis->pszBwGroup)
     372                        rc = PDMR3AsyncCompletionEpSetBwMgr(pStorageBackend->pEndpoint, pThis->pszBwGroup);
     373
     374                    if (RT_SUCCESS(rc))
     375                    {
     376                        *ppStorage = pStorageBackend;
     377                        return VINF_SUCCESS;
     378                    }
     379
     380                    PDMR3AsyncCompletionEpClose(pStorageBackend->pEndpoint);
    370381                }
    371382
     
    19011912    if (pThis->pbData)
    19021913        RTMemFree(pThis->pbData);
     1914    if (pThis->pszBwGroup)
     1915    {
     1916        MMR3HeapFree(pThis->pszBwGroup);
     1917        pThis->pszBwGroup = NULL;
     1918    }
    19031919}
    19041920
     
    20012017                                          "ReadOnly\0MaybeReadOnly\0TempReadOnly\0Shareable\0HonorZeroWrites\0"
    20022018                                          "HostIPStack\0UseNewIo\0BootAcceleration\0BootAccelerationBuffer\0"
    2003                                           "SetupMerge\0MergeSource\0MergeTarget\0");
     2019                                          "SetupMerge\0MergeSource\0MergeTarget\0BwGroup\0");
    20042020        }
    20052021        else
     
    21072123                break;
    21082124            }
     2125            rc = CFGMR3QueryStringAlloc(pCurNode, "BwGroup", &pThis->pszBwGroup);
     2126            if (RT_FAILURE(rc) && rc != VERR_CFGM_VALUE_NOT_FOUND)
     2127            {
     2128                rc = PDMDRV_SET_ERROR(pDrvIns, rc,
     2129                                      N_("DrvVD: Configuration error: Querying \"BwGroup\" as string failed"));
     2130                break;
     2131            }
     2132            else
     2133                rc = VINF_SUCCESS;
    21092134        }
    21102135
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