Quoting Dwight Engen (dwight.en...@oracle.com):
> On Wed, 21 Aug 2013 10:47:20 -0500
> Serge Hallyn <serge.hal...@ubuntu.com> wrote:
> 
> > Quoting Dwight Engen (dwight.en...@oracle.com):
> > > On Tue, 20 Aug 2013 14:15:26 -0500
> > > Serge Hallyn <serge.hal...@ubuntu.com> wrote:
> > > 
> > > [...]
> > > > +static bool mod_rdep(struct lxc_container *c, bool inc)
> > > > +{
> > > > +       char path[MAXPATHLEN];
> > > > +       int ret, v = 0;
> > > > +       FILE *f;
> > > > +       bool bret = false;
> > > > +
> > > > +       if (container_disk_lock(c))
> > > > +               return false;
> > > > +       ret = snprintf(path, MAXPATHLEN, "%s/%s/lxc_snapshots",
> > > > c->config_path,
> > > > +                       c->name);
> > > > +       if (ret < 0 || ret > MAXPATHLEN)
> > > > +               goto out;
> > > > +       f = fopen(path, "r");
> > > > +       if (f) {
> > > > +               ret = fscanf(f, "%d", &v);
> > > > +               fclose(f);
> > > > +               if (ret != 1) {
> > > > +                       ERROR("Corrupted file %s", path);
> > > > +                       goto out;
> > > > +               }
> > > > +       }
> > > > +       v += inc ? 1 : -1;
> > > > +       f = fopen(path, "w");
> > > > +       if (!f)
> > > > +               goto out;
> > > > +       fprintf(f, "%d\n", v);
> > > > +       fclose(f);
> > > 
> > > Should we check the return value of fclose()? ie. it could fail
> > > ENOSPC?
> > 
> > I had thought about it, but note that the dependency tracking is
> > best-effort.  I don't want an lxc-clone to fail bc we couldn't
> > mark the dependency.  Maybe I'm wrong on that, and I should.
> > What do you think?
> 
> Ahh okay. Well I just saw that everything else in the routine was
> checking for errors and failing so it just looked like the fclose() was
> missed. I think errors from fclose() are a lot less likely than not
> being able to open the file in the first place so I guess we can
> ignore them.

No I have run into cases where I hadn't checked fclose() and that was
in fact where it was failing...

I'll go ahead and update :)

> This is only done for overlayfs right? And if something does go wrong

Yup

> it just means refcounts are off? If we fail to mark the dependency but
> let the clone go through, then the worst that can happen is the
> parent gets removed at some later date and the cloned container fails to
> work then?

Right, which is always the case right now.

Of course it can go the other way, where lxc-destroy refuses to destroy
the container bc we couldn't drop the refcount...  (would be weird, but
not impossible)  so maybe lxc-destroy -f should ignore the refcount...
my patch did not do that.

------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to