[lxc-devel] [PATCH] allow all iX86 strings for lxc.arch
Serge Hallyn
serge.hallyn at ubuntu.com
Mon Apr 28 17:54:46 UTC 2014
Quoting Dwight Engen (dwight.engen at oracle.com):
> This change accepts the same strings for lxc.arch that setarch(8) does.
>
> When outputting the setting, use i386 instead of x86 since the later is not
> a valid input to setarch, nor will the kernel output UTS_MACHINE as x86. The
> kernel sets utsname.machine to i[3456]86, which are all map to PER_LINUX32.
>
> Note that we continue to parse plain x86 as PER_LINUX32 so as not to break
> existing lxc configuration files.
>
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Hi,
the first part (expanding the list of allowed inputs) seems fine, but
the second part seems like it could break existing callers.
> ---
> src/lxc/confile.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/src/lxc/confile.c b/src/lxc/confile.c
> index 90fb344..f03c191 100644
> --- a/src/lxc/confile.c
> +++ b/src/lxc/confile.c
> @@ -1723,9 +1723,15 @@ signed long lxc_config_parse_arch(const char *arch)
> struct per_name {
> char *name;
> unsigned long per;
> - } pername[4] = {
> + } pername[] = {
> { "x86", PER_LINUX32 },
> + { "linux32", PER_LINUX32 },
> + { "i386", PER_LINUX32 },
> + { "i486", PER_LINUX32 },
> + { "i586", PER_LINUX32 },
> { "i686", PER_LINUX32 },
> + { "athlon", PER_LINUX32 },
> + { "linux64", PER_LINUX },
> { "x86_64", PER_LINUX },
> { "amd64", PER_LINUX },
> };
> @@ -1801,7 +1807,7 @@ static int lxc_get_arch_entry(struct lxc_conf *c, char *retv, int inlen)
> int len = 0;
>
> switch(c->personality) {
> - case PER_LINUX32: strprint(retv, inlen, "x86"); break;
> + case PER_LINUX32: strprint(retv, inlen, "i386"); break;
> case PER_LINUX: strprint(retv, inlen, "x86_64"); break;
> default: break;
> }
> @@ -2253,7 +2259,7 @@ void write_config(FILE *fout, struct lxc_conf *c)
> fprintf(fout, "lxc.stopsignal = SIG%s\n", sig_name(c->stopsignal));
> #if HAVE_SYS_PERSONALITY_H
> switch(c->personality) {
> - case PER_LINUX32: fprintf(fout, "lxc.arch = x86\n"); break;
> + case PER_LINUX32: fprintf(fout, "lxc.arch = i386\n"); break;
> case PER_LINUX: fprintf(fout, "lxc.arch = x86_64\n"); break;
> default: break;
> }
> --
> 1.9.0
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list