Quoting Dan Smith (danms@xxxxxxxxxx): > SH> rw_lockt is effectively a spinlock, so I don't think you can sleep > SH> here. > > Yep, thanks. > > >> + for_each_netdev(net, dev) { > >> + if (!dev->netdev_ops->ndo_checkpoint) > >> + continue; > > SH> Won't the checkpoint_obj() call checkpoint_netdev(), which will return > SH> -EINVAL if ndo_checkpoint is not defined? > > Yes, but this isn't the only place that checkpoint_netdev() could be > called (dev->peer in the veth example) so I figured that it would be > best to test it there too before I blindly call a NULL function > pointer. It should never happen, but seemed prudent. > > SH> But here you skip the checkpoint_obj() call (which seems wrong to > SH> me). Which do you want to have happen? > > What the code is doing is "skipping any interfaces in a netns that > don't have a checkpoint operation" but would fail if you called > checkpoint_obj() on a veth peer that happened to be missing that > operation for some reason. > > I suppose you could argue that we should fail in the netns case > instead, which will make this a bit messier for things we get for > "free" in a new netns, like sit0. If preferable, I can just add an > ndo_checkpoint() to sit0 as well and simply checkpoint the presence of > it until later when we decide if we care about it. I think that's be better. Right now if we checkpoint a container with macvlan restart will be bogus, right? We're trying to avoid any cases where we can't tell, at checkpoint, that restart won't be right. > SH> By hard-coding veth stuff into generic-sounding functions in > SH> net/checkpoint_dev.c you seem to be assuming that only veth will > SH> ever be supported for checkpoint/restart? what about macvlan? > SH> (Not to mention that eventually we intend to support moving > SH> physical nics into containers) > > No, that's not what I'm assuming. The only interface type I need to > control with RTNL is veth right now. So, if you'd prefer a > single-case of: > > if (type == veth) > do_veth_message(); > else > fail(); > > to record the goal of having more types later I'll happily add that > unreachable code to the patch :) What I was asking is should do_veth_message() be in drivers/net/veth.c? -serge _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers