[lxc-devel] [PATCH] Add remove_snapshots_entry() (rebased - v2)

Serge Hallyn serge.hallyn at ubuntu.com
Tue Sep 15 00:31:17 UTC 2015


Quoting Serge Hallyn (serge.hallyn at ubuntu.com):
> Quoting Christian Brauner (christianvanbrauner at gmail.com):
> > On Mon, Sep 14, 2015 at 10:54:34PM +0000, Serge Hallyn wrote:
> > > Does it help if we simply define c->delete_with_snapshot_clones(), and have
> > > src/lxc/destroy.c use that?  Then we can contain mod_all_rdeps to being a
> > > static function in src/lxc/lxccontainer.c  If not, remind me where else we
> > > would've needed the mod_all_rdeps?
> > 
> > lxc_destroy.c does not call mod_all_rdeps() directly at all. It reads in the
> > lxc_snapshots file from the container all at once and finds each container
> > listed in it and passes it to c->destroy(c). So we should be good regarding
> > locks on this side. Here is the relevant bit from lxc_destroy.c (omitting the
> > reading in part of the lxc_snapshots file):
> > 
> > 		while ((lxcpath = strtok_r(!counter ? buf : NULL, "\n", &scratch))) {
> > 			if (!(lxcname = strtok_r(NULL, "\n", &scratch)))
> > 				break;
> > 			c1 = lxc_container_new(lxcname, lxcpath);
> > 			if (!c1)
> > 				goto next;
> > 			if (!c1->destroy(c1)) {
> > 				fprintf(stderr, "Destroying snapshot %s of %s failed\n", lxcname, my_args.name);
> > 				lxc_container_put(c1);
> > 				free(buf);
> > 				return -1;
> > 			}
> > 			lxc_container_put(c1);
> > next:
> > 			counter++;
> > 		}
> > 
> > What I was worried about is the implementation in start.c:
> 
> Oh, right.
> 
> All right let's go back to your original patch.  I'd like to avoid,
> if we end up changing the file format again, having to chase down
> all the places where lxc_depends and rdepends are updated.  So let's
> come up with a small internal api for getting and updating those.
> We don't have to do that immediately, so I'll go ahead and re-review
> your patch (and presumably ack it).

Sigh.  The race.

Yeah, please just add a helper in lxcontainer.h which takes lxcname
and lxcpath and does the mod_all_rdeps.

thanks :)

-serge


More information about the lxc-devel mailing list