[lxc-devel] [PATCH 2/2] Support stopping containers concurrently
Serge Hallyn
serge.hallyn at ubuntu.com
Tue Apr 23 21:19:55 UTC 2013
Quoting Stéphane Graber (stgraber at ubuntu.com):
> On 04/23/2013 05:29 AM, S.Çağlar Onur wrote:
> > Hey Stéphane,
> >
> > On Wed, Apr 17, 2013 at 6:06 PM, Serge Hallyn <serge.hallyn at ubuntu.com
> > <mailto:serge.hallyn at ubuntu.com>> wrote:
> >
> > Quoting S.Çağlar Onur (caglar at 10ur.org <mailto:caglar at 10ur.org>):
> > > From: "S.Çağlar Onur" <caglar at 10ur.org <mailto:caglar at 10ur.org>>
> > >
> > > Trying to stop multiple containers concurrently ends up with
> > "cgroup is not mounted" errors as multiple threads corrupts the
> > shared variables.
> > > Fix that stack corruption and start to use getmntent_r to support
> > stopping multiple containers concurrently.
> > >
> > > Signed-off-by: S.Çağlar Onur <caglar at 10ur.org
> > <mailto:caglar at 10ur.org>>
> > > ---
> > > src/lxc/cgroup.c | 152
> > +++++++++++++++++++++++++++++++++++------------------
> > > src/lxc/freezer.c | 18 +++++--
> > > src/lxc/state.c | 15 ++++--
> > > 3 files changed, 126 insertions(+), 59 deletions(-)
> > >
> > > diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c
> > > index 368214f..0739477 100644
> > > --- a/src/lxc/cgroup.c
> > > +++ b/src/lxc/cgroup.c
> > > @@ -54,6 +54,11 @@ lxc_log_define(lxc_cgroup, lxc);
> > >
> > > #define MTAB "/proc/mounts"
> > >
> > > +/* In the case of a bind mount, there could be two long pathnames
> > in the
> > > + * mntent plus options so use large enough buffer size
> > > + */
> > > +#define LARGE_MAXPATHLEN 4 * MAXPATHLEN
> > > +
> > > /* Check if a mount is a cgroup hierarchy for any subsystem.
> > > * Return the first subsystem found (or NULL if none).
> > > */
> > > @@ -100,29 +105,31 @@ static char *mount_has_subsystem(const
> > struct mntent *mntent)
> > > */
> > > static int get_cgroup_mount(const char *subsystem, char *mnt)
> > > {
> > > - struct mntent *mntent;
> > > + struct mntent *mntent, mntent_r;
> > > FILE *file = NULL;
> > > int ret, err = -1;
> > >
> > > + char buf[LARGE_MAXPATHLEN] = {0};
> >
> > Ah yes, this must be what I thought we were waiting on - a response
> > from Stéphane on this.
> >
> > I'm still worried about this stack usage, especially in something
> > which is rather commonly called. Stéphane, is this a non-issue
> > for arm?
>
> So I had a quick look on an Android device. The stack size is the same
> as a desktop machine (8192KB), so the 16KB used by that variable won't
> be a problem.
thanks, Stéphane. Then
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
More information about the lxc-devel
mailing list