[libvirt] [PATCH 3/8] util: Convert virStoragePoolSourceAdapter to virStorageAdapter

Michal Privoznik mprivozn at redhat.com
Mon Feb 27 15:36:15 UTC 2017


On 20.02.2017 14:18, John Ferlan wrote:
> Introduce src/util/virstoragedevice.{c,h}. Rather than have virstoragefile
> be a repository for more things - create a new module to share the adapter
> definitions between the storage pool and eventually the domain. The devices
> will need device address functions (no need to pollute more code for that).
> 
> Move the virStoragePoolSourceAdapter from storage_conf into the new
> module and parcel out the the structure a bit more into 'fchost' and
> 'scsi_host' specific pieces creating virStoragePoolSourceAdapterSCSIHost
> and virStoragePoolSourceAdapterFCHost structures for easier access.
> 
> Modify code in the various places which formerly used the pool structure
> to use the new model. This includes some changes that will use the Ptr
> rather than just the struct (try to shorten the number of times one
> has to type adapter.data.fchost or adapter.data.scsi_host as well as
> [pool->]def->source.adapter.
> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  po/POTFILES.in                     |   1 +
>  src/Makefile.am                    |   1 +
>  src/conf/storage_conf.c            | 338 ++++++++-----------------------------
>  src/conf/storage_conf.h            |  35 +---
>  src/libvirt_private.syms           |  16 +-
>  src/libxl/libxl_conf.c             |   1 +
>  src/phyp/phyp_driver.c             |   3 +-
>  src/storage/storage_backend_scsi.c | 131 +++++++-------
>  src/test/test_driver.c             |   4 +-
>  src/util/virscsihost.c             |  28 +--
>  src/util/virscsihost.h             |   8 +-
>  src/util/virstoragedevice.c        | 292 ++++++++++++++++++++++++++++++++
>  src/util/virstoragedevice.h        |  89 ++++++++++
>  13 files changed, 548 insertions(+), 399 deletions(-)
>  create mode 100644 src/util/virstoragedevice.c
>  create mode 100644 src/util/virstoragedevice.h
> 

> diff --git a/src/util/virstoragedevice.c b/src/util/virstoragedevice.c
> new file mode 100644
> index 0000000..0d9db34
> --- /dev/null
> +++ b/src/util/virstoragedevice.c
> @@ -0,0 +1,292 @@
> +/*
> + * virstoragedevice.c: utility functions to share storage device mgmt
> + *                     between storage pools and domains
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library.  If not, see
> + * <http://www.gnu.org/licenses/>.
> + */
> +
> +#include <config.h>
> +
> +#include "device_conf.h"

After Peter's b4c73106333c0ede this will not fly. Initially I was going
to suggest:

  #include "conf/device_conf.h"

but that will not help either. IIUC you need device_conf just for
virPCIDeviceAddressParseXML(). Well, I guess we need to move that
ParseXML() into src/util/virpci.c so that we can re-use it in src/util/.
Or even better - why virstoragedevie needs to live in src/util if it is
really just a set of XML parse/format functions? I'd expect it to live
under src/conf.

Kudos for rolling up your sleeves and putting all these functions in one
place.

Michal




More information about the libvir-list mailing list