Quoting Stéphane Graber (stgra...@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.hal...@ubuntu.com
> > <mailto:serge.hal...@ubuntu.com>> wrote:
> > 
> >     Quoting S.Çağlar Onur (cag...@10ur.org <mailto:cag...@10ur.org>):
> >     > From: "S.Çağlar Onur" <cag...@10ur.org <mailto:cag...@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 <cag...@10ur.org
> >     <mailto:cag...@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.hal...@ubuntu.com>


------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to