Checklist

From Linux Checkpoint / Restart Wiki
(Difference between revisions)
Jump to: navigation, search
Line 43: Line 43:
 
(please make each a link to a page describing issues, a design for
 
(please make each a link to a page describing issues, a design for
 
solving, how we will detect it to refuse checkpoint if we will not
 
solving, how we will detect it to refuse checkpoint if we will not
support it, and "how ugly it will make the kernel")
+
support it, and "how ugly it will make the kernel". The table summarizes these details. )
 
+
{| border="1" cellspacing="0" cellpadding="8" width="100%" align="center"
* [[mounts]]
+
! '''Not Implemented''' !! '''Detect non-support <br/>during checkpoint''' <br/> ''(Yes/Planned/No)'' !!width="60%"| '''Solution Impact''' <br/> ''(e.g. "eew gross")''
* [[Checklist/NetworkDevices|network devices, time-wait inet sockets]]
+
|-
* [[Checklist/UnlinkedFiles|unlinked files and directories]]
+
!| [[mounts]] || ||
* [[Checklist/Inotify|inotify]]
+
|-
* [[Checklist/FUSE|FUSE]]
+
!| [[Checklist/NetworkDevices|network devices, time-wait inet sockets]] || ||
* [[Checklist/NetworkFilesystems|network and distributed filesystems]]
+
|-
* SYSV IPC: semaphore undo
+
!| [[Checklist/UnlinkedFiles|unlinked files and directories]] || Yes ||
* netlink
+
|-
* [[UncheckpointableProtocols|new, expiremental, and/or infrastructure-oriented network protocols]]
+
!| [[Checklist/Inotify|inotify]] || [[UncheckpointableFilesystems|Yes]] ||
* file locks
+
|-
* file leases
+
!| [[Checklist/FUSE|FUSE]] || [[UncheckpointableFilesystems|Yes]] ||
* fowner+sigio
+
|-
* ptraced tasks
+
!| [[Checklist/NetworkFilesystems|network and distributed filesystems]] || [[UncheckpointableFilesystems|Yes]] ||
* time namespace
+
|-
* restart of 64-bit task from 32-bit task and vice versa
+
!| SYSV IPC: semaphore undo || ||
* inet6 sockets (this has previously been supported, just need to add it back in.  minor)
+
|-
* Hardware devices other than those mentioned above
+
!| netlink || [[UncheckpointableProtocols|Yes]] ||
  * Includes mmap, /dev/foo, Infiniband devices
+
|-
* System-specific files in sysfs (things like UUID files)
+
!| [[UncheckpointableProtocols|new, expiremental, and/or <br/>infrastructure-oriented network protocols]] || [[UncheckpointableProtocols|Yes]] ||
 +
|-
 +
!| file locks || ||
 +
|-
 +
!| file leases || ||
 +
|-
 +
!| fowner+sigio || ||
 +
|-
 +
!| ptraced tasks || ||
 +
|-
 +
!| time namespace || No ||
 +
|-
 +
!| restart of 64-bit task from <br/> 32-bit task and vice versa || No ||
 +
|-
 +
!| inet6 sockets <br/> (previously supported, just need <br/> to add it back in.  minor) || ||
 +
|-
 +
!| Hardware devices <br/> other than those mentioned above. <br/> Includes mmap, /dev/foo, Infiniband devices || ||
 +
|-
 +
!| System-specific files in sysfs <br/> (things like UUID files) || [[UncheckpointableFilesystems|Yes]] ||
 +
|-
 +
|}

Revision as of 02:13, 9 December 2009

A feature being unsupported for checkpoint/restart could mean two things. It could mean that checkpoint on an application using the feature will fail. For instance, if an application has an open fd on an unsupported device or on a file of an unsupported fs, then checkpoint will fail with an informative error message. That is ok.

It could also mean that checkpoint will 'succeed', but restart will fail. Worse, it could mean that restart will 'succeed', but the application will misbehave after restart. For instance, we currently do not address mounts. So if an application has done 'mount(FILE1, FILE2, NULL, MS_BIND, 0)' before being checkpointed, then after restart FILE1 may no longer be bind-mounted onto FILE2.

What is implemented

* open regular files and directories:
  * ext2, ext3, ext4
* /dev/null, zero, random, urandom
* epoll fd's
* event fd's
* timer fd's
* signal fd's
* unix sockets
* ipv4 sockets (except time-wait sockets)
* SYSV IPC (message queues, semaphores, and shared memory)
  * except semaphore undo
* Unix98 ptys
* futexes
* process ids
* credentials (userid, group, and POSIX capabilities)
* Smack LSM labels
* pipes
* FIFOs
* signals
* multiple processes, threads
* nested namespaces of:
  * user
  * IPC
  * UTS (hostname)
  * IPC
  * (nested pid namespaces only require userspace support)

What is NOT implemented (please make each a link to a page describing issues, a design for solving, how we will detect it to refuse checkpoint if we will not support it, and "how ugly it will make the kernel". The table summarizes these details. )

Not Implemented Detect non-support
during checkpoint

(Yes/Planned/No)
Solution Impact
(e.g. "eew gross")
mounts
network devices, time-wait inet sockets
unlinked files and directories Yes
inotify Yes
FUSE Yes
network and distributed filesystems Yes
SYSV IPC: semaphore undo
netlink Yes
new, expiremental, and/or
infrastructure-oriented network protocols
Yes
file locks
file leases
fowner+sigio
ptraced tasks
time namespace No
restart of 64-bit task from
32-bit task and vice versa
No
inet6 sockets
(previously supported, just need
to add it back in. minor)
Hardware devices
other than those mentioned above.
Includes mmap, /dev/foo, Infiniband devices
System-specific files in sysfs
(things like UUID files)
Yes
Personal tools