[lxc-devel] [PATCH 1/1] support lxc.mount.auto for get_config_item and clear_config_item

Stéphane Graber stgraber at ubuntu.com
Wed Mar 12 23:34:53 UTC 2014


On Wed, Mar 12, 2014 at 06:27:24PM -0500, Serge Hallyn wrote:
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

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

> ---
>  src/lxc/conf.c    |  6 ++++++
>  src/lxc/conf.h    |  1 +
>  src/lxc/confile.c | 38 ++++++++++++++++++++++++++++++++++++++
>  3 files changed, 45 insertions(+)
> 
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 4346585..710b961 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -4102,6 +4102,12 @@ int lxc_clear_mount_entries(struct lxc_conf *c)
>  	return 0;
>  }
>  
> +int lxc_clear_automounts(struct lxc_conf *c)
> +{
> +	c->auto_mounts = 0;
> +	return 0;
> +}
> +
>  int lxc_clear_hooks(struct lxc_conf *c, const char *key)
>  {
>  	struct lxc_list *it,*next;
> diff --git a/src/lxc/conf.h b/src/lxc/conf.h
> index 2804212..c370587 100644
> --- a/src/lxc/conf.h
> +++ b/src/lxc/conf.h
> @@ -358,6 +358,7 @@ extern int lxc_clear_config_caps(struct lxc_conf *c);
>  extern int lxc_clear_config_keepcaps(struct lxc_conf *c);
>  extern int lxc_clear_cgroups(struct lxc_conf *c, const char *key);
>  extern int lxc_clear_mount_entries(struct lxc_conf *c);
> +extern int lxc_clear_automounts(struct lxc_conf *c);
>  extern int lxc_clear_hooks(struct lxc_conf *c, const char *key);
>  extern int lxc_clear_idmaps(struct lxc_conf *c);
>  extern int lxc_clear_groups(struct lxc_conf *c);
> diff --git a/src/lxc/confile.c b/src/lxc/confile.c
> index 8b1c0b6..d6cf151 100644
> --- a/src/lxc/confile.c
> +++ b/src/lxc/confile.c
> @@ -1941,6 +1941,40 @@ static int lxc_get_mount_entries(struct lxc_conf *c, char *retv, int inlen)
>  	return fulllen;
>  }
>  
> +static int lxc_get_auto_mounts(struct lxc_conf *c, char *retv, int inlen)
> +{
> +	int len, fulllen = 0;
> +
> +	if (!retv)
> +		inlen = 0;
> +	else
> +		memset(retv, 0, inlen);
> +
> +	if (!(c->auto_mounts & LXC_AUTO_ALL_MASK))
> +		return 0;
> +
> +	switch (c->auto_mounts & LXC_AUTO_PROC_MASK) {
> +		case LXC_AUTO_PROC_MIXED:        strprint(retv, inlen, "proc:mixed\n"); break;
> +		case LXC_AUTO_PROC_RW:           strprint(retv, inlen, "proc:rw");      break;
> +		default: break;
> +	}
> +	switch (c->auto_mounts & LXC_AUTO_SYS_MASK) {
> +		case LXC_AUTO_SYS_RO:            strprint(retv, inlen, "sys:ro");            break;
> +		case LXC_AUTO_SYS_RW:            strprint(retv, inlen, "sys:rw");            break;
> +		default: break;
> +	}
> +	switch (c->auto_mounts & LXC_AUTO_CGROUP_MASK) {
> +		case LXC_AUTO_CGROUP_MIXED:      strprint(retv, inlen, "cgroup:mixed");      break;
> +		case LXC_AUTO_CGROUP_RO:         strprint(retv, inlen, "cgroup:ro");         break;
> +		case LXC_AUTO_CGROUP_RW:         strprint(retv, inlen, "cgroup:rw");         break;
> +		case LXC_AUTO_CGROUP_FULL_MIXED: strprint(retv, inlen, "cgroup-full:mixed"); break;
> +		case LXC_AUTO_CGROUP_FULL_RO:    strprint(retv, inlen, "cgroup-full:ro");    break;
> +		case LXC_AUTO_CGROUP_FULL_RW:    strprint(retv, inlen, "cgroup-full:rw");    break;
> +		default: break;
> +	}
> +	return fulllen;
> +}
> +
>  /*
>   * lxc.network.0.XXX, where XXX can be: name, type, link, flags, type,
>   * macvlan.mode, veth.pair, vlan, ipv4, ipv6, script.up, hwaddr, mtu,
> @@ -2074,6 +2108,8 @@ int lxc_get_config_item(struct lxc_conf *c, const char *key, char *retv,
>  
>  	if (strcmp(key, "lxc.mount.entry") == 0)
>  		return lxc_get_mount_entries(c, retv, inlen);
> +	else if (strcmp(key, "lxc.mount.auto") == 0)
> +		return lxc_get_auto_mounts(c, retv, inlen);
>  	else if (strcmp(key, "lxc.mount") == 0)
>  		v = c->fstab;
>  	else if (strcmp(key, "lxc.tty") == 0)
> @@ -2151,6 +2187,8 @@ int lxc_clear_config_item(struct lxc_conf *c, const char *key)
>  		return lxc_clear_cgroups(c, key);
>  	else if (strcmp(key, "lxc.mount.entries") == 0)
>  		return lxc_clear_mount_entries(c);
> +	else if (strcmp(key, "lxc.mount.auto") == 0)
> +		return lxc_clear_automounts(c);
>  	else if (strncmp(key, "lxc.hook", 8) == 0)
>  		return lxc_clear_hooks(c, key);
>  	else if (strncmp(key, "lxc.group", 9) == 0)
> -- 
> 1.9.0
> 
> _______________________________________________
> 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/20140312/d9fd52d2/attachment.pgp>


More information about the lxc-devel mailing list