[lxc-devel] [PATCH -stable] add lxc.console.logpath

Stéphane Graber stgraber at ubuntu.com
Fri Aug 8 18:37:13 UTC 2014


On Fri, Aug 08, 2014 at 06:34:38PM +0000, Serge Hallyn wrote:
> logpath has been supported through lxc-start command line, but not
> through the API.  Since the lxc.console is now required to be a device,
> support lxc.console.logfile to be a simple file to which console output
> will be logged.
> 
> clear_config_item is not supported, as it isn't for lxc.console, bc
> you can do 'lxc.console.logfile =' to clear it.
> 
> (This patch is for stable-1.0)
> 
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

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

> ---
>  doc/lxc.container.conf.sgml.in | 17 ++++++++++++++---
>  src/lxc/conf.c                 |  2 ++
>  src/lxc/confile.c              | 12 ++++++++++++
>  3 files changed, 28 insertions(+), 3 deletions(-)
> 
> diff --git a/doc/lxc.container.conf.sgml.in b/doc/lxc.container.conf.sgml.in
> index 0cf1639..88a5f05 100644
> --- a/doc/lxc.container.conf.sgml.in
> +++ b/doc/lxc.container.conf.sgml.in
> @@ -536,13 +536,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>        <variablelist>
>  	<varlistentry>
>  	  <term>
> -	    <option>lxc.console</option>
> +	    <option>lxc.console.logfile</option>
>  	  </term>
>  	  <listitem>
>  	    <para>
>  	      Specify a path to a file where the console output will
> -	      be written. The keyword 'none' will simply disable the
> -	      console. This is dangerous once if have a rootfs with a
> +	      be written.
> +	    </para>
> +	  </listitem>
> +	</varlistentry>
> +	<varlistentry>
> +	  <term>
> +	    <option>lxc.console</option>
> +	  </term>
> +	  <listitem>
> +	    <para>
> +	      Specify a path to a device to which the console will be
> +	      attached.  The keyword 'none' will simply disable the
> +	      console.  This is dangerous once if have a rootfs with a
>  	      console device file where the application can write, the
>  	      messages will fall in the host.
>  	    </para>
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index a90c57c..7fb6e6f 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -4390,6 +4390,8 @@ void lxc_conf_free(struct lxc_conf *conf)
>  {
>  	if (!conf)
>  		return;
> +	if (conf->console.log_path)
> +		free(conf->console.log_path);
>  	if (conf->console.path)
>  		free(conf->console.path);
>  	if (conf->rootfs.mount)
> diff --git a/src/lxc/confile.c b/src/lxc/confile.c
> index 4c3338d..dcd9518 100644
> --- a/src/lxc/confile.c
> +++ b/src/lxc/confile.c
> @@ -88,6 +88,7 @@ static int config_network_ipv6_gateway(const char *, const char *, struct lxc_co
>  static int config_cap_drop(const char *, const char *, struct lxc_conf *);
>  static int config_cap_keep(const char *, const char *, struct lxc_conf *);
>  static int config_console(const char *, const char *, struct lxc_conf *);
> +static int config_console_logfile(const char *, const char *, struct lxc_conf *);
>  static int config_seccomp(const char *, const char *, struct lxc_conf *);
>  static int config_includefile(const char *, const char *, struct lxc_conf *);
>  static int config_network_nic(const char *, const char *, struct lxc_conf *);
> @@ -142,6 +143,7 @@ static struct lxc_config_t config[] = {
>  	{ "lxc.network.",             config_network_nic          },
>  	{ "lxc.cap.drop",             config_cap_drop             },
>  	{ "lxc.cap.keep",             config_cap_keep             },
> +	{ "lxc.console.logfile",      config_console_logfile      },
>  	{ "lxc.console",              config_console              },
>  	{ "lxc.seccomp",              config_seccomp              },
>  	{ "lxc.include",              config_includefile          },
> @@ -1564,6 +1566,12 @@ static int config_console(const char *key, const char *value,
>  	return config_path_item(&lxc_conf->console.path, value);
>  }
>  
> +static int config_console_logfile(const char *key, const char *value,
> +			  struct lxc_conf *lxc_conf)
> +{
> +	return config_path_item(&lxc_conf->console.log_path, value);
> +}
> +
>  static int config_includefile(const char *key, const char *value,
>  			  struct lxc_conf *lxc_conf)
>  {
> @@ -2160,6 +2168,8 @@ int lxc_get_config_item(struct lxc_conf *c, const char *key, char *retv,
>  		return lxc_get_cgroup_entry(c, retv, inlen, key + 11);
>  	else if (strcmp(key, "lxc.utsname") == 0)
>  		v = c->utsname ? c->utsname->nodename : NULL;
> +	else if (strcmp(key, "lxc.console.logfile") == 0)
> +		v = c->console.log_path;
>  	else if (strcmp(key, "lxc.console") == 0)
>  		v = c->console.path;
>  	else if (strcmp(key, "lxc.rootfs.mount") == 0)
> @@ -2410,6 +2420,8 @@ void write_config(FILE *fout, struct lxc_conf *c)
>  	}
>  	if (c->console.path)
>  		fprintf(fout, "lxc.console = %s\n", c->console.path);
> +	if (c->console.log_path)
> +		fprintf(fout, "lxc.console.logfile = %s\n", c->console.log_path);
>  	if (c->rootfs.path)
>  		fprintf(fout, "lxc.rootfs = %s\n", c->rootfs.path);
>  	if (c->rootfs.mount && strcmp(c->rootfs.mount, LXCROOTFSMOUNT) != 0)
> -- 
> 2.1.0.rc1
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/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: 819 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20140808/3369fc63/attachment.sig>


More information about the lxc-devel mailing list