[libvirt] [PATCH 3/8] util: Convert virStoragePoolSourceAdapter to virStorageAdapter
John Ferlan
jferlan at redhat.com
Mon Feb 27 23:13:07 UTC 2017
On 02/27/2017 10:36 AM, Michal Privoznik wrote:
> 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.
>
Yes, virPCIDeviceAddressParseXML and also virPCIDeviceAddressFormat
The "thought process" is/was similarity with virstoragefile and
virstorageencryption... Then yes, that pesky PCI address stuff got in
the way. Much easier to include *conf than move it.
If storagedevice moves to conf, then theory would say that parts of the
others should follow (auth and encryption Parse/Format) - essentially
things that were shared between storage and domain definitions
Let's see what I can come up with for this. Of course my long term
vision had a second reason - to be able to share the <adapter> parsing
with the domain code which was going to get a vHBA, but that may not
become a reality now based on Daniel's feelings over the event mechanism
between qemu and nodedev.
John
> Kudos for rolling up your sleeves and putting all these functions in one
> place.
>
> Michal
>
More information about the libvir-list
mailing list