[lxc-devel] [PATCH 2/3] execute: bind init.lxc.static into container

S.Çağlar Onur caglar at 10ur.org
Tue May 13 23:07:21 UTC 2014


On Tue, May 13, 2014 at 6:39 PM, Dwight Engen <dwight.engen at oracle.com> wrote:
> On Tue, 13 May 2014 11:46:00 +0000
> Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
>
>> Quoting Serge Hallyn (serge.hallyn at ubuntu.com):
>> > Quoting Dwight Engen (dwight.engen at oracle.com):
>> > > On Mon, 12 May 2014 18:04:00 +0000
>> > > Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
>> > >
>> > > > Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
>> > > > ---
>> > > >  src/lxc/conf.c | 58
>> > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1
>> > > > file changed, 58 insertions(+)
>> > > >
>> > > > diff --git a/src/lxc/conf.c b/src/lxc/conf.c
>> > > > index 7427a94..0580f46 100644
>> > > > --- a/src/lxc/conf.c
>> > > > +++ b/src/lxc/conf.c
>> > > > @@ -3811,6 +3811,61 @@ static void remount_all_slave(void)
>> > > >                 free(line);
>> > > >  }
>> > > >
>> > > > +void lxc_execute_bind_init(struct lxc_conf *conf)
>> > > > +{
>> > > > +       int ret;
>> > > > +       char path[PATH_MAX], destpath[PATH_MAX];
>> > > > +
>> > > > +       ret = snprintf(path, PATH_MAX, SBINDIR
>> > > > "/init.lxc.static");
>> > > > +       if (ret < 0 || ret >= PATH_MAX) {
>> > > > +               WARN("Path name too long searching for
>> > > > lxc.init.static");
>> > > > +               return;
>> > > > +       }
>> > > > +
>> > > > +       if (!file_exists(path)) {
>> > > > +               INFO("%s does not exist on host", path);
>> > > > +               return;
>> > > > +       }
>> > > > +
>> > > > +       ret = snprintf(destpath, PATH_MAX, "%s%s",
>> > > > conf->rootfs.mount, path);
>> > > > +       if (ret < 0 || ret >= PATH_MAX) {
>> > > > +               WARN("Path name too long for container's
>> > > > lxc.init.static");
>> > > > +               return;
>> > > > +       }
>> > > > +
>> > > > +       if (!file_exists(destpath)) {
>> > > > +               FILE *pathfile;
>> > > > +               char *pathdirname = strdup(path);
>> > > > +
>> > > > +               if (!pathdirname) {
>> > > > +                       SYSERROR("Out of memory binding
>> > > > lxc.init.static into container");
>> > > > +                       return;
>> > > > +               }
>> > > > +               pathdirname = dirname(pathdirname);
>> > > > +               ret = mkdir_p(pathdirname, 0755);
>> > > > +               free(pathdirname);
>> > > > +               if (ret < 0) {
>> > > > +                       /*
>> > > > +                        * this can fail just due to read-only
>> > > > bind mounts.  Trust
>> > > > +                        * that the user knows what they want,
>> > > > log and proceed
>> > > > +                        */
>> > > > +                       WARN("Failed to create %s in
>> > > > container", SBINDIR);
>> > > > +                       return;
>> > > > +               }
>> > > > +               pathfile = fopen(destpath, "wb");
>> >
>> > Thanks for taking a look,
>> >
>> > > Hi Serge, are you sure you want to truncate destpath in case it
>> > > exists? Maybe you want "ab"?
>> >
>> > This only happens in the !file_exists(destpath) case though, so it
>> > really shouldn't be possible absent a weird race.
>>
>> I guess it might be worth changing.  I copy/pasted this code from the
>> file=create case in conf.c, so I think we should fix it in both places
>> with one separate patch.
>
> Hey, when I try to build this I get:
>
> conf.c: In function 'lxc_execute_bind_init':
> conf.c:3824:2: error: implicit declaration of function 'file_exists' [-Werror=implicit-function-declaration]
>   if (!file_exists(path)) {
>
> it looks like file_exists() isn't declared in any header and is static to lxccontainer.c?

I think Serge's local tree has "[PATCH] add support for qcow2"

>> _______________________________________________
>> lxc-devel mailing list
>> lxc-devel at lists.linuxcontainers.org
>> http://lists.linuxcontainers.org/listinfo/lxc-devel
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel

-- 
S.Çağlar Onur <caglar at 10ur.org>


More information about the lxc-devel mailing list