[lxc-devel] [PATCH 1/1] lxc-start: if we pass in a config file, then don't use any loaded config

Stéphane Graber stgraber at ubuntu.com
Thu Nov 14 19:17:12 UTC 2013


On Thu, Nov 14, 2013 at 12:48:41PM -0600, Serge Hallyn wrote:
> To do this, add a c->clear_config() helper to the api.
> 
> (this fixes the bug https://bugs.launchpad.net/bugs/1251352)
> 
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

Acked-by: Stéphane Graber <stgraber at ubuntu.com>

> ---
>  src/lxc/lxc_start.c    |  1 +
>  src/lxc/lxccontainer.c | 16 +++++++++++-----
>  src/lxc/lxccontainer.h |  2 ++
>  3 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
> index add2542..fe859db 100644
> --- a/src/lxc/lxc_start.c
> +++ b/src/lxc/lxc_start.c
> @@ -187,6 +187,7 @@ int main(int argc, char *argv[])
>  			ERROR("Failed to create lxc_container");
>  			return err;
>  		}
> +		c->clear_config(c);
>  		if (!c->load_config(c, rcfile)) {
>  			ERROR("Failed to load rcfile");
>  			lxc_container_put(c);
> diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
> index 2a70bc7..3cabf0d 100644
> --- a/src/lxc/lxccontainer.c
> +++ b/src/lxc/lxccontainer.c
> @@ -1151,6 +1151,14 @@ out_error:
>  	return true;
>  }
>  
> +static void lxcapi_clear_config(struct lxc_container *c)
> +{
> +	if (c && c->lxc_conf) {
> +		lxc_conf_free(c->lxc_conf);
> +		c->lxc_conf = NULL;
> +	}
> +}
> +
>  static bool lxcapi_destroy(struct lxc_container *c);
>  /*
>   * lxcapi_create:
> @@ -1280,9 +1288,7 @@ static bool lxcapi_create(struct lxc_container *c, const char *t,
>  
>  	// now clear out the lxc_conf we have, reload from the created
>  	// container
> -	if (c->lxc_conf)
> -		lxc_conf_free(c->lxc_conf);
> -	c->lxc_conf = NULL;
> +	lxcapi_clear_config(c);
>  
>  	if (t) {
>  		if (!prepend_lxc_header(c->configfile, tpath, argv)) {
> @@ -3093,8 +3099,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath
>  	if (ongoing_create(c) == 2) {
>  		ERROR("Error: %s creation was not completed", c->name);
>  		lxcapi_destroy(c);
> -		lxc_conf_free(c->lxc_conf);
> -		c->lxc_conf = NULL;
> +		lxcapi_clear_config(c);
>  	}
>  
>  	// assign the member functions
> @@ -3122,6 +3127,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath
>  	c->createl = lxcapi_createl;
>  	c->shutdown = lxcapi_shutdown;
>  	c->reboot = lxcapi_reboot;
> +	c->clear_config = lxcapi_clear_config;
>  	c->clear_config_item = lxcapi_clear_config_item;
>  	c->get_config_item = lxcapi_get_config_item;
>  	c->get_cgroup_item = lxcapi_get_cgroup_item;
> diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h
> index 3a12372..57b8e78 100644
> --- a/src/lxc/lxccontainer.h
> +++ b/src/lxc/lxccontainer.h
> @@ -85,6 +85,8 @@ struct lxc_container {
>  	bool (*reboot)(struct lxc_container *c);
>  	/* send SIGPWR.  if timeout is not 0 or -1, do a hard stop after timeout seconds */
>  	bool (*shutdown)(struct lxc_container *c, int timeout);
> +	/* completely clear a configuration */
> +	void (*clear_config)(struct lxc_container *c);
>  	/* clear all network or capability items in the in-memory configuration */
>  	bool (*clear_config_item)(struct lxc_container *c, const char *key);
>  	/* print a config item to a in-memory string allocated by the caller.  Return
> -- 
> 1.8.3.2
> 
> 
> ------------------------------------------------------------------------------
> DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
> OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
> Free app hosting. Or install the open source package on any LAMP server.
> Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
> http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20131114/51652d82/attachment.pgp>


More information about the lxc-devel mailing list