[libvirt] [PATCH 2/3] Support loading a configuration file for sanlock plugin
Daniel Veillard
veillard at redhat.com
Mon Jun 20 05:49:39 UTC 2011
On Fri, Jun 17, 2011 at 01:38:20PM +0100, Daniel P. Berrange wrote:
> Introduce a configuration file with a single parameter
> 'require_lease_for_disks', which is used to decide whether
> it is allowed to start a guest which has read/write disks,
> but without any leases.
[...]
> @@ -62,22 +72,76 @@ struct _virLockManagerSanlockPrivate {
> /*
> * sanlock plugin for the libvirt virLockManager API
> */
> +static int virLockManagerSanlockLoadConfig(const char *configFile)
[...]
> + if (!(conf = virConfReadFile(configFile, 0)))
> + return -1;
> +
> +#define CHECK_TYPE(name,typ) if (p && p->type != (typ)) { \
> + virLockError(VIR_ERR_INTERNAL_ERROR, \
> + "%s: %s: expected type " #typ, \
> + configFile, (name)); \
> + virConfFree(conf); \
> + return -1; \
> + }
> +
> + p = virConfGetValue(conf, "require_lease_for_disks");
> + CHECK_TYPE("require_lease_for_disks", VIR_CONF_LONG);
> + if (p)
> + driver->requireLeaseForDisks = p->l;
> +
> + virConfFree(conf);
> + return 0;
> +}
Hum, defining a complex macro in a function body is fine if you tend
to reuse that macro a lot, but for a single use it makes the code
harder to read. So unless you really expect extensions or reuse (in
which case it should be defined somewhere else) I'm not sure it's
a good idea here :-)
[...]
> diff --git a/src/locking/sanlock.conf b/src/locking/sanlock.conf
> new file mode 100644
> index 0000000..818b529
> --- /dev/null
> +++ b/src/locking/sanlock.conf
> @@ -0,0 +1,6 @@
> +#
> +# Flag to determine whether we allow starting of guests
> +# which do not have any <lease> elements defined in their
> +# configuration.
> +#
> +#require_lease_for_disks = 1
> diff --git a/src/locking/test_libvirt_sanlock.aug b/src/locking/test_libvirt_sanlock.aug
> new file mode 100644
> index 0000000..2f1f57a
> --- /dev/null
> +++ b/src/locking/test_libvirt_sanlock.aug
> @@ -0,0 +1,7 @@
> +module Test_libvirt_sanlock =
> +
> + let conf = "require_lease_for_disks = 1
> +"
> +
> + test Libvirt_sanlock.lns get conf =
> +{ "require_lease_for_disks" = "1" }
Okay, ACK, but look again at this macro, do your really want this in ?
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list