[libvirt] [PATCH 2/9] Introduce a virLXCDriverConfigPtr object
Daniel P. Berrange
berrange at redhat.com
Thu Jul 18 10:10:21 UTC 2013
On Wed, Jul 17, 2013 at 03:04:19PM +0200, Michal Privoznik wrote:
> Currently the virLXCDriverPtr struct contains an wide variety
> of data with varying access needs. Move all the static config
> data into a dedicated virLXCDriverConfigPtr object. The only
> locking requirement is to hold the driver lock, while obtaining
> an instance of virLXCDriverConfigPtr. Once a reference is held
> on the config object, it can be used completely lockless since
> it is immutable.
>
> NB, not all APIs correctly hold the driver lock while getting
> a reference to the config object in this patch. This is safe
> for now since the config is never updated on the fly. Later
> patches will address this fully.
> ---
> src/lxc/lxc_conf.c | 81 +++++++++++++++++++++-------
> src/lxc/lxc_conf.h | 41 +++++++++-----
> src/lxc/lxc_driver.c | 145 ++++++++++++++++++++++++++++++++++----------------
> src/lxc/lxc_process.c | 39 +++++++++-----
> 4 files changed, 214 insertions(+), 92 deletions(-)
> diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h
> index 5a5b9aa..6ca6198 100644
> --- a/src/lxc/lxc_conf.h
> +++ b/src/lxc/lxc_conf.h
> @@ -46,44 +46,57 @@
> typedef struct _virLXCDriver virLXCDriver;
> typedef virLXCDriver *virLXCDriverPtr;
>
> +typedef struct _virLXCDriverConfig virLXCDriverConfig;
> +typedef virLXCDriverConfig *virLXCDriverConfigPtr;
> +
> +struct _virLXCDriverConfig {
> + virObject parent;
> +
> + char *configDir;
> + char *autostartDir;
> + char *stateDir;
> + char *logDir;
> + int log_libvirtd;
> + int have_netns;
> +
> + char *securityDriverName;
> + bool securityDefaultConfined;
> + bool securityRequireConfined;
> +};
> +
> struct _virLXCDriver {
> virMutex lock;
>
> + virLXCDriverConfigPtr config;
> +
> virCapsPtr caps;
> - virDomainXMLOptionPtr xmlopt;
>
> virCgroupPtr cgroup;
>
> + virDomainXMLOptionPtr xmlopt;
> +
If I'm being fussy I'd say you shouldn't be moving the 'xmlopt'
field in this patch.
> virSysinfoDefPtr hostsysinfo;
>
> size_t nactive;
> +
> virStateInhibitCallback inhibitCallback;
> void *inhibitOpaque;
>
> virDomainObjListPtr domains;
> - char *configDir;
> - char *autostartDir;
> - char *stateDir;
> - char *logDir;
> - int log_libvirtd;
> - int have_netns;
>
> virUSBDeviceListPtr activeUsbHostdevs;
>
> virDomainEventStatePtr domainEventState;
>
> - char *securityDriverName;
> - bool securityDefaultConfined;
> - bool securityRequireConfined;
> virSecurityManagerPtr securityManager;
>
> - /* Mapping of 'char *uuidstr' -> virConnectPtr
> - * of guests which will be automatically killed
> - * when the virConnectPtr is closed*/
Nor removing this comment, until the later patch which
changes this field to use the generic callbacks.
> virHashTablePtr autodestroy;
> };
ACK anyway. This code pattern matches what was done in the QEMU driver
which has proved itself succesful.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list