[libvirt] [PATCH v2 03/10] conf: store disk source as pointer, for easier manipulation

Peter Krempa pkrempa at redhat.com
Fri Jun 6 08:59:52 UTC 2014


On 06/06/14 00:52, Eric Blake wrote:
> As part of the work on backing chains, I'm finding that it would
> be easier to directly manipulate chains of pointers (adding a
> snapshot merely adjusts pointers to form the correct list) rather
> than copy data from one struct to another.  This patch converts
> domain disk source to be a pointer.
> 
> In this patch, the pointer is ALWAYS allocated (thanks in part to
> the previous patch forwarding all disk def allocation through a
> common point), and all other changse are just mechanical fallout of
> the new type; there should be no functional change.  It is possible
> that we may want to leave the pointer NULL for a cdrom with no
> medium in a later patch, but as that requires a closer audit of the
> source to ensure we don't fault on a null dereference, I didn't do
> it here.
> 
> * src/conf/domain_conf.h (_virDomainDiskDef): Change type of src.
> * src/conf/domain_conf.c: Adjust all clients.
> * src/security/security_selinux.c: Likewise.
> * src/qemu/qemu_domain.c: Likewise.
> * src/qemu/qemu_command.c: Likewise.
> * src/qemu/qemu_conf.c: Likewise.
> * src/qemu/qemu_process.c: Likewise.
> * src/qemu/qemu_migration.c: Likewise.
> * src/qemu/qemu_driver.c: Likewise.
> * src/lxc/lxc_driver.c: Likewise.
> * src/lxc/lxc_controller.c: Likewise.
> * tests/securityselinuxlabeltest.c: Likewise.
> 
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>  src/conf/domain_conf.c           | 141 +++++++++----------
>  src/conf/domain_conf.h           |   2 +-
>  src/lxc/lxc_controller.c         |   8 +-
>  src/lxc/lxc_driver.c             |   8 +-
>  src/qemu/qemu_command.c          | 286 ++++++++++++++++++++-------------------
>  src/qemu/qemu_conf.c             |  86 ++++++------
>  src/qemu/qemu_domain.c           |  14 +-
>  src/qemu/qemu_driver.c           | 232 +++++++++++++++----------------
>  src/qemu/qemu_migration.c        |   4 +-
>  src/qemu/qemu_process.c          |   8 +-
>  src/security/security_selinux.c  |   4 +-
>  tests/securityselinuxlabeltest.c |   6 +-
>  12 files changed, 403 insertions(+), 396 deletions(-)
> 

Missing change in src/security/virt-aa-helper.c which breaks the build:

diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index bf540b4..1d246c7 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -951,9 +951,9 @@ get_files(vahControl * ctl)
         /* XXX - if we knew the qemu user:group here we could send it in
          *        so that the open could be re-tried as that user:group.
          */
-        if (!disk->src.backingStore) {
+        if (!disk->src->backingStore) {
             bool probe = ctl->allowDiskFormatProbing;
-            virStorageFileGetMetadata(&disk->src, -1, -1, probe);
+            virStorageFileGetMetadata(disk->src, -1, -1, probe);
         }

         /* XXX passing ignoreOpenFailure = true to get back to the behavior

> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index ffe3583..3585537 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -598,7 +598,7 @@ typedef virDomainBlockIoTuneInfo *virDomainBlockIoTuneInfoPtr;
> 
>  /* Stores the virtual disk configuration */
>  struct _virDomainDiskDef {
> -    virStorageSource src;
> +    virStorageSourcePtr src;

Maybe we should mention here that src is currently guaranteed to be non-NULL.

> 
>      int device; /* enum virDomainDiskDevice */
>      int bus; /* enum virDomainDiskBus */

ACK with the nits addressed.

Peter

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140606/53208fad/attachment-0001.sig>


More information about the libvir-list mailing list