checkpoint/restart
Matthew Dillon
dillon at apollo.backplane.com
Fri Oct 10 15:41:33 PDT 2003
:..
:code now uses the above suggested semantics. Instead of directly calling
:ckpt_checkpoint the code registers handle_ckpt for SIGCKPT (arbitrarily
:defined as 42) and then sends itself SIGCKPT. The function handle_ckpt is
:defined as follows:
Patch set 6 works like a charm! If you get stuck on the file handle
issue I would be pleased to help out there. Also note that you should
not need to use any ELF/EXEC code at all except for the saved register
state once you record the file descriptor state and (if not already
recorded) related descriptor mappings, the restore code would be
image based.
If you want to get the kernel hook in for the default signal / module
support and add the SIGCKPT and SIGCKPTEXIT signals to sys/signal.h,
We can commit that early so people doing ongoing testing of the module
do not have to patch their kernels.
FreeBSD-5 has added signal 32, so I recommend we add this to sys/signal.h:
#if __BSD_VISIBLE
#define SIGTHR 32 /* Thread interrupt (FreeBSD-5 reserved) */
#define SIGCKPT 33 /* check point and continue */
#define SIGCKPTEXIT 34 /* check point and exit */
#endif
I also recommend that your ckpt_checkpoint() syscall be given an
additional flags argument for future augmentation. e.g. for
'pushed' migrations to virtual targets: ckpt_checkpoint(-1, CKPT_CPU|...),
or telling it to ignore certain failure cases like sockets and tty's
(CKPT_NO_SOCKETS, CKPT_NO_PGRP_TTYS), or to request future retention of
detached files through their link counters (CKPT_HOLD_LINKCNT), and
other things.
The retval from ckpt_checkpoint and the flags argument to ckpt_restore()
could all use the same flag set (e.g. so in the restore code you would
pass CKPT_RETURN instead of THAW_RETURN, and ckpt_checkpoint() would
return a set of CKPT_ flags (and still return -1 on failure)), etc.
Just brainstorming here!
-Matt
More information about the Kernel
mailing list