[libvirt] [PATCH 1/6 v2] Prerequisite Patch. virDomainDevicePCIAddress and respective functions moved to a new file called conf/device_conf.ch

Laine Stump laine at laine.org
Wed Jun 27 23:06:19 UTC 2012


On 06/27/2012 09:18 AM, Osier Yang wrote:
> On 2012年06月25日 19:35, Shradha Shah wrote:
>> Refactoring existing code without causing any functional changes to
>> prepare for new code.
>> This patch makes the code reusable.
>>
>> Signed-off-by: Shradha Shah<sshah at solarflare.com>
>> ---
>>   src/Makefile.am              |    7 ++-
>>   src/conf/device_conf.c       |  135
>> ++++++++++++++++++++++++++++++++++++++++++
>>   src/conf/device_conf.h       |   65 ++++++++++++++++++++
>>   src/conf/domain_conf.c       |  114
>> ++++-------------------------------
>>   src/conf/domain_conf.h       |   25 +-------
>>   src/libvirt_private.syms     |   10 ++-
>>   src/qemu/qemu_command.c      |   13 ++--
>>   src/qemu/qemu_hotplug.c      |    7 +-
>>   src/qemu/qemu_monitor.c      |   14 ++--
>>   src/qemu/qemu_monitor.h      |   17 +++---
>>   src/qemu/qemu_monitor_json.c |   14 ++--
>>   src/qemu/qemu_monitor_json.h |   14 ++--
>>   src/qemu/qemu_monitor_text.c |   16 +++---
>>   src/qemu/qemu_monitor_text.h |   14 ++--
>>   src/xen/xend_internal.c      |    3 +-
>>   15 files changed, 288 insertions(+), 180 deletions(-)
>>
>> diff --git a/src/Makefile.am b/src/Makefile.am
>> index e40909b..009c4e5 100644
>> --- a/src/Makefile.am
>> +++ b/src/Makefile.am
>> @@ -199,6 +199,9 @@ CONSOLE_CONF_SOURCES =                        \
>>   DOMAIN_LIST_SOURCES =                        \
>>           conf/virdomainlist.c conf/virdomainlist.h
>>
>> +DEVICE_CONF_SOURCES =                                           \
>> +        conf/device_conf.c conf/device_conf.h
>> +
>>   CONF_SOURCES =                            \
>>           $(NETDEV_CONF_SOURCES)                \
>>           $(DOMAIN_CONF_SOURCES)                \
>> @@ -212,7 +215,8 @@ CONF_SOURCES =                            \
>>           $(SECRET_CONF_SOURCES)                \
>>           $(CPU_CONF_SOURCES)                \
>>           $(CONSOLE_CONF_SOURCES)                \
>> -        $(DOMAIN_LIST_SOURCES)
>> +        $(DOMAIN_LIST_SOURCES)                \
>> +        $(DEVICE_CONF_SOURCES)
>>
>>   # The remote RPC driver, covering domains, storage, networks, etc
>>   REMOTE_DRIVER_GENERATED = \
>> @@ -1525,6 +1529,7 @@ libvirt_lxc_SOURCES =                        \
>>           $(ENCRYPTION_CONF_SOURCES)            \
>>           $(NETDEV_CONF_SOURCES)                \
>>           $(DOMAIN_CONF_SOURCES)                \
>> +        $(DEVICE_CONF_SOURCES)                \
>>           $(SECRET_CONF_SOURCES)                \
>>           $(CPU_CONF_SOURCES)                \
>>           $(SECURITY_DRIVER_SOURCES)            \
>> diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
>> new file mode 100644
>> index 0000000..af21aad
>> --- /dev/null
>> +++ b/src/conf/device_conf.c
>> @@ -0,0 +1,135 @@
>> +/*
>> + * device_conf.h: device XML handling
>> + *
>> + * Copyright (C) 2006-2012 Red Hat, Inc.
>> + *
>> + * 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, write to the Free Software
>> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
>> 02111-1307  USA
>> + *
>> + * Author: Shradha Shah<sshah at solarflare.com>
>> + */
>> +
>> +#include<config.h>
>> +#include "virterror_internal.h"
>> +#include "datatypes.h"
>> +#include "memory.h"
>> +#include "xml.h"
>> +#include "uuid.h"
>> +#include "util.h"
>> +#include "buf.h"
>> +#include "conf/device_conf.h"
>> +
>> +#define VIR_FROM_THIS VIR_FROM_DEVICE
>
> VIR_FROM_DEVICE is not defined, and isn't it too big to
> use 'device'? I see only pci device address parsing and
> formating code actually. And most of the device conf codes
> are in domain_conf.[ch].

I think I suggested "device_conf.[ch]" in my review of Shradha's
previous series. The reason is that we may need to break out the
parsing/formatting of other types of devices in the future.


>
>> +
>> +#define virDeviceReportError(code, ...)                              \
>> +    virReportErrorHelper(VIR_FROM_DOMAIN, code, __FILE__,            \
>
> Copy & Paste mistake (VIR_DOMAIN_DOMAIN)
>
> I'm wondering if it's neccessary to refactor the codes like this.
> As it just split the codes from domain_conf.[ch] into new files,
> no more reusability as far as I can see. The only exception is the
> new virDevicePCIAddressFormat, but it can be in domain_conf.[ch]
> too. Any special reason you want to have 2 new files?

The immediate use is that the data structures will also be used in
network_conf.h, and some of the functions will be called from
network_conf.c, and I don't think it's clean to have network_conf.c
calling into domain_conf.c, or to have network_conf.h #including
domain_conf.h.

The alternative mode of operation (just use the functions in their
current location) could lead to a jumbled mess - consider if someone in
the future decided that (in a move mirroring what's happened here) an
object defined in network_conf.h was also useful in domain_conf.[hc] -
you would then have a situation where domain_conf.h needed to #include
network_conf.h, but network_conf.h needed to #include domain_conf.h.
Better to keep a hierarchical organization and avoid circular references.





More information about the libvir-list mailing list