VirtualBox

Changeset 63905 in vbox for trunk/src


Ignore:
Timestamp:
Sep 20, 2016 8:31:05 AM (8 years ago)
Author:
vboxsync
Message:

Storage/VD: Add proper versioning of the backend structures instead of just relying on the structure size to make changing callback signatures possible in the future and still being able to reject incompatible plugins

Location:
trunk/src/VBox/Storage
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Storage/DMG.cpp

    r63802 r63905  
    24062406const VDIMAGEBACKEND g_DmgBackend =
    24072407{
     2408    /* u32Version */
     2409    VD_IMGBACKEND_VERSION,
    24082410    /* pszBackendName */
    24092411    "DMG",
    2410     /* cbSize */
    2411     sizeof(VDIMAGEBACKEND),
    24122412    /* uBackendCaps */
    24132413    VD_CAP_FILE | VD_CAP_VFS,
     
    24992499    NULL,
    25002500    /* pfnTraverseMetadata */
    2501     NULL
     2501    NULL,
     2502    /* u32VersionEnd */
     2503    VD_IMGBACKEND_VERSION
    25022504};
    25032505
  • trunk/src/VBox/Storage/ISCSI.cpp

    r63880 r63905  
    54975497const VDIMAGEBACKEND g_ISCSIBackend =
    54985498{
     5499    /* u32Version */
     5500    VD_IMGBACKEND_VERSION,
    54995501    /* pszBackendName */
    55005502    "iSCSI",
    5501     /* cbSize */
    5502     sizeof(VDIMAGEBACKEND),
    55035503    /* uBackendCaps */
    55045504    VD_CAP_CONFIG | VD_CAP_TCPNET | VD_CAP_ASYNC,
     
    55905590    NULL,
    55915591    /* pfnTraverseMetadata */
    5592     NULL
     5592    NULL,
     5593    /* u32VersionEnd */
     5594    VD_IMGBACKEND_VERSION
    55935595};
  • trunk/src/VBox/Storage/Parallels.cpp

    r63802 r63905  
    10691069const VDIMAGEBACKEND g_ParallelsBackend =
    10701070{
     1071    /* u32Version */
     1072    VD_IMGBACKEND_VERSION,
    10711073    /* pszBackendName */
    10721074    "Parallels",
    1073     /* cbSize */
    1074     sizeof(VDIMAGEBACKEND),
    10751075    /* uBackendCaps */
    10761076    VD_CAP_FILE | VD_CAP_ASYNC | VD_CAP_VFS | VD_CAP_CREATE_DYNAMIC | VD_CAP_DIFF,
     
    11621162    NULL,
    11631163    /* pfnTraverseMetadata */
    1164     NULL
     1164    NULL,
     1165    /* u32VersionEnd */
     1166    VD_IMGBACKEND_VERSION
    11651167};
  • trunk/src/VBox/Storage/QCOW.cpp

    r63802 r63905  
    23172317const VDIMAGEBACKEND g_QCowBackend =
    23182318{
     2319    /* u32Version */
     2320    VD_IMGBACKEND_VERSION,
    23192321    /* pszBackendName */
    23202322    "QCOW",
    2321     /* cbSize */
    2322     sizeof(VDIMAGEBACKEND),
    23232323    /* uBackendCaps */
    23242324    VD_CAP_FILE | VD_CAP_VFS | VD_CAP_CREATE_DYNAMIC | VD_CAP_DIFF | VD_CAP_ASYNC,
     
    24102410    NULL,
    24112411    /* pfnTraverseMetadata */
    2412     NULL
     2412    NULL,
     2413    /* u32VersionEnd */
     2414    VD_IMGBACKEND_VERSION
    24132415};
  • trunk/src/VBox/Storage/QED.cpp

    r63811 r63905  
    23732373const VDIMAGEBACKEND g_QedBackend =
    23742374{
     2375    /* u32Version */
     2376    VD_IMGBACKEND_VERSION,
    23752377    /* pszBackendName */
    23762378    "QED",
    2377     /* cbSize */
    2378     sizeof(VDIMAGEBACKEND),
    23792379    /* uBackendCaps */
    23802380    VD_CAP_FILE | VD_CAP_VFS | VD_CAP_CREATE_DYNAMIC | VD_CAP_DIFF | VD_CAP_ASYNC,
     
    24662466    NULL,
    24672467    /* pfnTraverseMetadata */
    2468     NULL
     2468    NULL,
     2469    /* u32Version */
     2470    VD_IMGBACKEND_VERSION
    24692471};
  • trunk/src/VBox/Storage/RAW.cpp

    r63811 r63905  
    957957const VDIMAGEBACKEND g_RawBackend =
    958958{
     959    /* u32Version */
     960    VD_IMGBACKEND_VERSION,
    959961    /* pszBackendName */
    960962    "RAW",
    961     /* cbSize */
    962     sizeof(VDIMAGEBACKEND),
    963963    /* uBackendCaps */
    964964    VD_CAP_CREATE_FIXED | VD_CAP_FILE | VD_CAP_ASYNC | VD_CAP_VFS,
     
    10501050    NULL,
    10511051    /* pfnTraverseMetadata */
    1052     NULL
     1052    NULL,
     1053    /* u32VersionEnd */
     1054    VD_IMGBACKEND_VERSION
    10531055};
  • trunk/src/VBox/Storage/VCICache.cpp

    r63567 r63905  
    19831983const VDCACHEBACKEND g_VciCacheBackend =
    19841984{
     1985    /* u32Version */
     1986    VD_CACHEBACKEND_VERSION,
    19851987    /* pszBackendName */
    19861988    "vci",
    1987     /* cbSize */
    1988     sizeof(VDCACHEBACKEND),
    19891989    /* uBackendCaps */
    19901990    VD_CAP_CREATE_FIXED | VD_CAP_CREATE_DYNAMIC | VD_CAP_FILE | VD_CAP_VFS,
     
    20382038    NULL,
    20392039    /* pfnComposeName */
    2040     NULL
     2040    NULL,
     2041    /* u32VersionEnd */
     2042    VD_CACHEBACKEND_VERSION
    20412043};
    20422044
  • trunk/src/VBox/Storage/VD.cpp

    r63830 r63905  
    35473547    int rc = VINF_SUCCESS;
    35483548
    3549     if (pBackend->cbSize == sizeof(VDIMAGEBACKEND))
     3549    if (VD_VERSION_ARE_COMPATIBLE(VD_IMGBACKEND_VERSION, pBackend->u32Version))
    35503550        vdAddBackend((RTLDRMOD)pvUser, pBackend);
    35513551    else
    35523552    {
    3553         LogFunc(("ignored plugin: pBackend->cbSize=%d rc=%Rrc\n", pBackend->cbSize, rc));
     3553        LogFunc(("ignored plugin: pBackend->u32Version=%u rc=%Rrc\n", pBackend->u32Version, rc));
    35543554        rc = VERR_IGNORED;
    35553555    }
     
    35653565    int rc = VINF_SUCCESS;
    35663566
    3567     if (pBackend->cbSize == sizeof(VDCACHEBACKEND))
     3567    if (VD_VERSION_ARE_COMPATIBLE(VD_CACHEBACKEND_VERSION, pBackend->u32Version))
    35683568        vdAddCacheBackend((RTLDRMOD)pvUser, pBackend);
    35693569    else
    35703570    {
    3571         LogFunc(("ignored plugin: pBackend->cbSize=%d rc=%Rrc\n", pBackend->cbSize, rc));
     3571        LogFunc(("ignored plugin: pBackend->u32Version=%u rc=%Rrc\n", pBackend->u32Version, rc));
    35723572        rc = VERR_IGNORED;
    35733573    }
     
    35833583    int rc = VINF_SUCCESS;
    35843584
    3585     if (pBackend->cbSize == sizeof(VDFILTERBACKEND))
     3585    if (VD_VERSION_ARE_COMPATIBLE(VD_FLTBACKEND_VERSION, pBackend->u32Version))
    35863586        vdAddFilterBackend((RTLDRMOD)pvUser, pBackend);
    35873587    else
    35883588    {
    3589         LogFunc(("ignored plugin: pBackend->cbSize=%d rc=%Rrc\n", pBackend->cbSize, rc));
     3589        LogFunc(("ignored plugin: pBackend->u32Version=%u rc=%Rrc\n", pBackend->u32Version, rc));
    35903590        rc = VERR_IGNORED;
    35913591    }
     
    37203720        PFNVDPLUGINLOAD pfnVDPluginLoad = NULL;
    37213721
     3722        BackendRegister.u32Version        = VD_BACKENDREG_CB_VERSION;
    37223723        BackendRegister.pfnRegisterImage  = vdPluginRegisterImage;
    37233724        BackendRegister.pfnRegisterCache  = vdPluginRegisterCache;
  • trunk/src/VBox/Storage/VDI.cpp

    r63887 r63905  
    30003000const VDIMAGEBACKEND g_VDIBackend =
    30013001{
     3002    /* u32Version */
     3003    VD_IMGBACKEND_VERSION,
    30023004    /* pszBackendName */
    30033005    "VDI",
    3004     /* cbSize */
    3005     sizeof(VDIMAGEBACKEND),
    30063006    /* uBackendCaps */
    30073007      VD_CAP_UUID | VD_CAP_CREATE_FIXED | VD_CAP_CREATE_DYNAMIC
     
    30953095    vdiRepair,
    30963096    /* pfnTraverseMetadata */
    3097     NULL
     3097    NULL,
     3098    /* u32VersionEnd */
     3099    VD_IMGBACKEND_VERSION
    30983100};
  • trunk/src/VBox/Storage/VHD.cpp

    r63811 r63905  
    30113011const VDIMAGEBACKEND g_VhdBackend =
    30123012{
     3013    /* u32Version */
     3014    VD_IMGBACKEND_VERSION,
    30133015    /* pszBackendName */
    30143016    "VHD",
    3015     /* cbSize */
    3016     sizeof(VDIMAGEBACKEND),
    30173017    /* uBackendCaps */
    30183018    VD_CAP_UUID | VD_CAP_DIFF | VD_CAP_FILE |
     
    31063106    vhdRepair,
    31073107    /* pfnTraverseMetadata */
    3108     NULL
     3108    NULL,
     3109    /* u32VersionEnd */
     3110    VD_IMGBACKEND_VERSION
    31093111};
  • trunk/src/VBox/Storage/VHDX.cpp

    r63802 r63905  
    24892489const VDIMAGEBACKEND g_VhdxBackend =
    24902490{
     2491    /* u32Version */
     2492    VD_IMGBACKEND_VERSION,
    24912493    /* pszBackendName */
    24922494    "VHDX",
    2493     /* cbSize */
    2494     sizeof(VDIMAGEBACKEND),
    24952495    /* uBackendCaps */
    24962496    VD_CAP_FILE | VD_CAP_VFS,
     
    25822582    NULL,
    25832583    /* pfnTraverseMetadata */
    2584     NULL
     2584    NULL,
     2585    /* u32VersionEnd */
     2586    VD_IMGBACKEND_VERSION
    25852587};
  • trunk/src/VBox/Storage/VMDK.cpp

    r63840 r63905  
    63476347const VDIMAGEBACKEND g_VmdkBackend =
    63486348{
     6349    /* u32Version */
     6350    VD_IMGBACKEND_VERSION,
    63496351    /* pszBackendName */
    63506352    "VMDK",
    6351     /* cbSize */
    6352     sizeof(VDIMAGEBACKEND),
    63536353    /* uBackendCaps */
    63546354      VD_CAP_UUID | VD_CAP_CREATE_FIXED | VD_CAP_CREATE_DYNAMIC
     
    64426442    NULL,
    64436443    /* pfnTraverseMetadata */
    6444     NULL
     6444    NULL,
     6445    /* u32VersionEnd */
     6446    VD_IMGBACKEND_VERSION
    64456447};
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