On Thu, Apr 29, 2010 at 10:28:48AM -0500, Serge E. Hallyn wrote: > We don't support multiple devpts mounts in a container. So > bail on checkpoint if a container has them. This will cause > checkpoint to fail of a container which still has a pty from > parent container in use. > > Note one issue with this is the register_checkpoint_obj(&&ckpt_obj_ptsns_ops) > done from module_init(). We either need to add a matching unregister, That's a rather significant problem. We need a matching unregister_checkpoint_obj() and we need to be sure that none of the functions specified in the ckpt_obj_ops are executing when the module is finally removed. Is there a way to do that without holding any locks during ckpt_obj_op calls? I've been thinking about how to do it with RCU: struct ckpt_obj_ops *ops; rcu_read_lock(); ops = ckpt_obj_ops[type]; get_module(ops->owner); /* try_module_get() */ rcu_read_unlock(); ops->op(...); put_module(ops->owner); That should also ensure that the module won't be removed until the operation is complete. However it seems quite absurd to grab a reference to a module just to use its grab and drop ops. We'll probably spend more time in the module code... Regardless, the register side requires a spinlock to protect writes to the ckpt_obj_ops array (inside register_checkpoint_obj()). Cheers, -Matt _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers