libvirt/src/vbox
Eric Blake cce2410a27 conf: track sizes directly in source struct
One of the features of qcow2 is that a wrapper file can have
more capacity than its backing file from the guest's perspective;
what's more, sparse files make tracking allocation of both
the active and backing file worthwhile.  As such, it makes
more sense to show allocation numbers for each file in a chain,
and not just the top-level file.  This sets up the fields for
the tracking, although it does not modify XML to display any
new information.

* src/util/virstoragefile.h (_virStorageSource): Add fields.
* src/conf/storage_conf.h (_virStorageVolDef): Drop redundant
fields.
* src/storage/storage_backend.c (virStorageBackendCreateBlockFrom)
(createRawFile, virStorageBackendCreateQemuImgCmd)
(virStorageBackendCreateQcowCreate): Update clients.
* src/storage/storage_driver.c (storageVolDelete)
(storageVolCreateXML, storageVolCreateXMLFrom, storageVolResize)
(storageVolWipeInternal, storageVolGetInfo): Likewise.
* src/storage/storage_backend_fs.c (virStorageBackendProbeTarget)
(virStorageBackendFileSystemRefresh)
(virStorageBackendFileSystemVolResize)
(virStorageBackendFileSystemVolRefresh): Likewise.
* src/storage/storage_backend_logical.c
(virStorageBackendLogicalMakeVol)
(virStorageBackendLogicalCreateVol): Likewise.
* src/storage/storage_backend_scsi.c
(virStorageBackendSCSINewLun): Likewise.
* src/storage/storage_backend_mpath.c
(virStorageBackendMpathNewVol): Likewise.
* src/storage/storage_backend_rbd.c
(volStorageBackendRBDRefreshVolInfo)
(virStorageBackendRBDCreateImage): Likewise.
* src/storage/storage_backend_disk.c
(virStorageBackendDiskMakeDataVol)
(virStorageBackendDiskCreateVol): Likewise.
* src/storage/storage_backend_sheepdog.c
(virStorageBackendSheepdogBuildVol)
(virStorageBackendSheepdogParseVdiList): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageBackendGlusterRefreshVol): Likewise.
* src/conf/storage_conf.c (virStorageVolDefFormat)
(virStorageVolDefParseXML): Likewise.
* src/test/test_driver.c (testOpenVolumesForPool)
(testStorageVolCreateXML, testStorageVolCreateXMLFrom)
(testStorageVolDelete, testStorageVolGetInfo): Likewise.
* src/esx/esx_storage_backend_iscsi.c (esxStorageVolGetXMLDesc):
Likewise.
* src/esx/esx_storage_backend_vmfs.c (esxStorageVolGetXMLDesc)
(esxStorageVolCreateXML): Likewise.
* src/parallels/parallels_driver.c (parallelsAddHddByVolume):
Likewise.
* src/parallels/parallels_storage.c (parallelsDiskDescParseNode)
(parallelsStorageVolDefineXML, parallelsStorageVolCreateXMLFrom)
(parallelsStorageVolDefRemove, parallelsStorageVolGetInfo):
Likewise.
* src/vbox/vbox_tmpl.c (vboxStorageVolCreateXML)
(vboxStorageVolGetXMLDesc): Likewise.
* tests/storagebackendsheepdogtest.c (test_vdi_list_parser):
Likewise.
* src/phyp/phyp_driver.c (phypStorageVolCreateXML): Likewise.
2014-04-02 06:03:00 -06:00
..
README
vbox_CAPI_v2_2.h
vbox_CAPI_v3_0.h
vbox_CAPI_v3_1.h
vbox_CAPI_v3_2.h
vbox_CAPI_v4_0.h
vbox_CAPI_v4_1.h
vbox_CAPI_v4_2_20.h vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_CAPI_v4_2.h
vbox_CAPI_v4_3_4.h vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_CAPI_v4_3.h vbox: import vbox_CAPI_v4_3.h from SDK 2013-11-25 13:25:12 +02:00
vbox_driver.c Use K&R style for curly braces in src/vbox/ 2014-03-20 17:16:39 +01:00
vbox_driver.h
vbox_glue.c Don't leave empty first line in C source files 2014-03-18 12:17:12 +01:00
vbox_glue.h Don't leave empty first line in C source files 2014-03-18 12:17:12 +01:00
vbox_MSCOMGlue.c Indent top-level labels by one space in src/vbox/ 2014-03-25 14:58:40 +01:00
vbox_MSCOMGlue.h Don't leave empty first line in C source files 2014-03-18 12:17:12 +01:00
vbox_tmpl.c conf: track sizes directly in source struct 2014-04-02 06:03:00 -06:00
vbox_V2_2.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V3_0.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V3_1.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V3_2.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V4_0.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V4_1.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V4_2_20.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V4_2.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V4_3_4.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_V4_3.c vbox: add support for v4.2.20+ and v4.3.4+ 2014-01-22 23:12:52 +01:00
vbox_XPCOMCGlue.c Indent top-level labels by one space in src/vbox/ 2014-03-25 14:58:40 +01:00
vbox_XPCOMCGlue.h

    Licensing

Note that much of the vbox in this directory is LGPLv2-only.  Thus, it
cannot be linked into any software that also wants to use GPLv3+ code.
This readme file is:

Copyright (C) 2009, 2013 Red Hat, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without warranty of any kind.

    Explanation about the how multi-version support
    for VirtualBox libvirt driver is implemented.

Since VirtualBox adds multiple new features for each release, it is but
natural that the C API which VirtualBox exposes is volatile across
versions and thus needs a good mechanism to handle multiple versions
during runtime. The solution was something like this:

Firstly the file structure is as below:

vbox_CAPI_v2_2.h
vbox_XPCOMCGlue.h
vbox_XPCOMCGlue.c
These files are C API/glue code files directly taken from the
VirtualBox OSE source and is needed for C API to work as expected.

vbox_driver.h
vbox_driver.c
These files have the main logic for registering the virtualbox driver
with libvirt.

vbox_V2_2.c
The file which has version dependent changes and includes the template
file for given below for all of its functionality.

vbox_tmpl.c
The file where all the real driver implementation code exists.

Now there would be a vbox_V*.c file (for eg: vbox_V2_2.c for V2.2) for
each major virtualbox version which would do some preprocessor magic
and include the template file (vbox_tmpl.c) in it for the functionality
it offers.