[Devel] Re: [RFC v14-rc2][PATCH 02/29] Checkpoint/restart: initial documentation
Sukadev Bhattiprolu
sukadev at linux.vnet.ibm.com
Mon Apr 6 20:22:53 PDT 2009
Just a nit:
Oren Laadan [orenl at cs.columbia.edu] wrote:
| From 6f5483b085b1fb675a8445c65ddbeb7b38187865 Mon Sep 17 00:00:00 2001
| From: Oren Laadan <orenl at cs.columbia.edu>
| Date: Mon, 30 Mar 2009 10:45:53 -0400
| Subject: [PATCH 02/29] Checkpoint/restart: initial documentation
|
| Covers application checkpoint/restart, overall design, interfaces,
| usage, shared objects, and and checkpoint image format.
|
| Changelog[v14]:
| - Discard the 'h.parent' field
|
| Changelog[v8]:
| - Split into multiple files in Documentation/checkpoint/...
| - Extend documentation, fix typos and comments from feedback
|
| Signed-off-by: Oren Laadan <orenl at cs.columbia.edu>
| Acked-by: Serge Hallyn <serue at us.ibm.com>
| Signed-off-by: Dave Hansen <dave at linux.vnet.ibm.com>
| ---
| Documentation/checkpoint/ckpt.c | 32 ++++++
| Documentation/checkpoint/internals.txt | 127 +++++++++++++++++++++++
| Documentation/checkpoint/readme.txt | 105 +++++++++++++++++++
| Documentation/checkpoint/rstr.c | 20 ++++
| Documentation/checkpoint/security.txt | 38 +++++++
| Documentation/checkpoint/self.c | 57 +++++++++++
| Documentation/checkpoint/test.c | 48 +++++++++
| Documentation/checkpoint/usage.txt | 171 ++++++++++++++++++++++++++++++++
| 8 files changed, 598 insertions(+), 0 deletions(-)
| create mode 100644 Documentation/checkpoint/ckpt.c
| create mode 100644 Documentation/checkpoint/internals.txt
| create mode 100644 Documentation/checkpoint/readme.txt
| create mode 100644 Documentation/checkpoint/rstr.c
| create mode 100644 Documentation/checkpoint/security.txt
| create mode 100644 Documentation/checkpoint/self.c
| create mode 100644 Documentation/checkpoint/test.c
| create mode 100644 Documentation/checkpoint/usage.txt
|
| diff --git a/Documentation/checkpoint/ckpt.c b/Documentation/checkpoint/ckpt.c
| new file mode 100644
| index 0000000..094408c
| --- /dev/null
| +++ b/Documentation/checkpoint/ckpt.c
| @@ -0,0 +1,32 @@
| +#include <stdio.h>
| +#include <stdlib.h>
| +#include <errno.h>
| +#include <unistd.h>
| +#include <sys/syscall.h>
| +
| +int main(int argc, char *argv[])
| +{
| + pid_t pid;
| + int ret;
| +
| + if (argc != 2) {
| + printf("usage: ckpt PID\n");
| + exit(1);
| + }
| +
| + pid = atoi(argv[1]);
| + if (pid <= 0) {
| + printf("invalid pid\n");
| + exit(1);
| + }
| +
| + ret = syscall(__NR_checkpoint, pid, STDOUT_FILENO, 0);
| +
| + if (ret < 0)
| + perror("checkpoint");
| + else
| + printf("checkpoint id %d\n", ret);
| +
| + return (ret > 0 ? 0 : 1);
| +}
| +
| diff --git a/Documentation/checkpoint/internals.txt b/Documentation/checkpoint/internals.txt
| new file mode 100644
| index 0000000..c741b6c
| --- /dev/null
| +++ b/Documentation/checkpoint/internals.txt
| @@ -0,0 +1,127 @@
| +
| + ===== Internals of Checkpoint-Restart =====
| +
| +
| +(1) Order of state dump
| +
| +The order of operations, both save and restore, is as follows:
| +
| +* Header section: header, container information, etc.
| +
| +* Global section: [TBD] global resources such as IPC, UTS, etc.
| +
| +* Process forest: [TBD] tasks and their relationships
| +
| +* Per task data (for each task):
| + -> task state: elements of task_struct
| + -> thread state: elements of thread_struct and thread_info
| + -> CPU state: registers etc, including FPU
| + -> memory state: memory address space layout and contents
| + -> filesystem state: [TBD] filesystem namespace state, chroot, cwd, etc
| + -> files state: open file descriptors and their state
| + -> signals state: [TBD] pending signals and signal handling state
| + -> credentials state: [TBD] user and group state, statistics
| +
| +
| +(2) Checkpoint image format
| +
| +The checkpoint image format is composed of records consisting of a
| +pre-header that identifies its contents, followed by a payload. (The
| +idea here is to enable parallel checkpointing in the future in which
| +multiple threads interleave data from multiple processes into a single
| +stream).
| +
| +The pre-header is defined by "struct cr_hdr" as follows:
| +
| +struct cr_hdr {
| + __s16 type;
| + __s16 len;
| +};
| +
| +'type' identifies the type of the payload, 'len' tells its length in
| +bytes, and 'parent' identifies the owner object instance.
Nit: Remove reference to 'parent'.
Suka
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list