Checklist
m |
m (→What is NOT implemented) |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 17: | Line 17: | ||
* PowerPC | * PowerPC | ||
* s390x | * s390x | ||
+ | * ARM | ||
Click [[Architecture|here]] for information about architecture specific. | Click [[Architecture|here]] for information about architecture specific. | ||
− | |||
== What is Implemented == | == What is Implemented == | ||
Line 27: | Line 27: | ||
* zombie processes | * zombie processes | ||
* process ids (pid, pgid, sid) | * process ids (pid, pgid, sid) | ||
− | * futexes | + | * [[Futexes|futexes (pi, robust, plain)]] |
* signals (signal handling, pending signals) | * signals (signal handling, pending signals) | ||
* credentials (userid, group, POSIX capabilities) | * credentials (userid, group, POSIX capabilities) | ||
Line 33: | Line 33: | ||
'''Namespaces''' | '''Namespaces''' | ||
<br> | <br> | ||
− | * user-ns, ipc-ns, uts-ns: multiple namespaces | + | * user-ns, ipc-ns, uts-ns, net-ns: multiple namespaces |
* pid-ns: a single namespace is supported (extension for nested pid-ns will be done in user-space). | * pid-ns: a single namespace is supported (extension for nested pid-ns will be done in user-space). | ||
− | |||
'''File descriptors''' | '''File descriptors''' | ||
Line 48: | Line 47: | ||
** epoll fd | ** epoll fd | ||
** event fd | ** event fd | ||
− | |||
− | |||
'''Networking''' | '''Networking''' | ||
* unix sockets | * unix sockets | ||
− | * ipv4 sockets (except time-wait sockets) | + | * ipv4, ipv6 sockets (except time-wait sockets) |
+ | * veth, macvlan, loopback devices and addresses | ||
IPv4 supports live migration between hosts. | IPv4 supports live migration between hosts. | ||
Line 60: | Line 58: | ||
* SYSV IPC | * SYSV IPC | ||
** message queues | ** message queues | ||
− | ** semaphores ( | + | ** semaphores (patches for 'undo' queued) |
** shared memory | ** shared memory | ||
'''Security''' | '''Security''' | ||
* Smack and SELinux LSM labels | * Smack and SELinux LSM labels | ||
− | |||
== What is NOT implemented == | == What is NOT implemented == | ||
Line 76: | Line 73: | ||
!| mounts namespaces || Yes || Clean (the dirty work will be in mounts themselves) | !| mounts namespaces || Yes || Clean (the dirty work will be in mounts themselves) | ||
|- | |- | ||
− | !| mounts || No || [[mounts | postponed | + | !| mounts || No || [[mounts | postponed]] |
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
!| time-wait inet sockets || No || | !| time-wait inet sockets || No || | ||
− | [[ Checklist/NetworkDevices| Clean, | + | [[ Checklist/NetworkDevices| Clean, not high priority. ]] |
|- | |- | ||
!| unlinked files and directories || Yes || | !| unlinked files and directories || Yes || | ||
Line 97: | Line 91: | ||
!| [[Checklist/NetworkFilesystems|network and distributed filesystems]] || [[UncheckpointableFilesystems|Yes]] || | !| [[Checklist/NetworkFilesystems|network and distributed filesystems]] || [[UncheckpointableFilesystems|Yes]] || | ||
|- | |- | ||
− | !| [[Checklist/SemUndo|SYSV IPC: semaphore undo]] || No || | + | !| [[Checklist/SemUndo|SYSV IPC: semaphore undo]] || No || Patches on the list already. |
|- | |- | ||
!| netlink || [[UncheckpointableProtocols|Yes]] || Clean, low priority. | !| netlink || [[UncheckpointableProtocols|Yes]] || Clean, low priority. | ||
Line 103: | Line 97: | ||
!| [[UncheckpointableProtocols|new, expiremental, and/or <br/>infrastructure-oriented network protocols]] || [[UncheckpointableProtocols|Yes]] || Ignore | !| [[UncheckpointableProtocols|new, expiremental, and/or <br/>infrastructure-oriented network protocols]] || [[UncheckpointableProtocols|Yes]] || Ignore | ||
|- | |- | ||
− | !| file locks || Yes || | + | !| file locks || Yes || Patches on the list already |
|- | |- | ||
− | !| file leases || Yes || | + | !| file leases || Yes || Patches on the list already |
|- | |- | ||
− | !| fowner+sigio || Yes || Trivial and clean | + | !| fowner+sigio || Yes || Trivial and clean. |
|- | |- | ||
!| ptraced tasks || Yes || Expect small impact on kernel code. | !| ptraced tasks || Yes || Expect small impact on kernel code. | ||
Line 117: | Line 111: | ||
!| inet6 sockets || [[UncheckpointableProtocols|Yes]] || Previously supported, just need <br/> to add it back in. minor. | !| inet6 sockets || [[UncheckpointableProtocols|Yes]] || 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 || [[HardwareCheckpointable|Yes (mostly)]] || [[Checklist/RFC_HotPluggableDevices|One idea]] | + | !| Hardware devices <br/> other than those mentioned above. <br/> Includes mmap, /dev/foo, Infiniband devices || [[HardwareCheckpointable|Yes (mostly)]] || [[Checklist/RFC_HotPluggableDevices|One idea]], very low priority |
|- | |- | ||
!| System-specific files in sysfs <br/> (things like UUID files) || [[UncheckpointableFilesystems|Yes]] || | !| System-specific files in sysfs <br/> (things like UUID files) || [[UncheckpointableFilesystems|Yes]] || |
Latest revision as of 15:46, 17 August 2010
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.
[edit] Supported Architectures
- x86-32, x86-64
- PowerPC
- s390x
- ARM
Click here for information about architecture specific.
[edit] What is Implemented
Task and processess
- multiple processes and threads
- zombie processes
- process ids (pid, pgid, sid)
- futexes (pi, robust, plain)
- signals (signal handling, pending signals)
- credentials (userid, group, POSIX capabilities)
Namespaces
- user-ns, ipc-ns, uts-ns, net-ns: multiple namespaces
- pid-ns: a single namespace is supported (extension for nested pid-ns will be done in user-space).
File descriptors
- regular files and directories:
- ext2, ext3, ext4
- affs, befs, bfs, btrfs, cramfs, ecryptfs, fat, freevxfs, hfs, hfsplus, hpfs, hppfs, iso, jffs2, jfs, regular, ntfs, openromfs, qnx4, reiserfs, romfs, squashfs, sysv, ubifs, udf, xfs
- pipes, FIFOs
- open devices:
- /dev/null, zero, random, urandom
- Unix98 ptys
- special file descriptors:
- epoll fd
- event fd
Networking
- unix sockets
- ipv4, ipv6 sockets (except time-wait sockets)
- veth, macvlan, loopback devices and addresses
IPv4 supports live migration between hosts.
Miscellaneous
- SYSV IPC
- message queues
- semaphores (patches for 'undo' queued)
- shared memory
Security
- Smack and SELinux LSM labels
[edit] 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 | Refuses to Checkpoint (Yes/No) |
Anticipated Solution Impact |
---|---|---|
mounts namespaces | Yes | Clean (the dirty work will be in mounts themselves) |
mounts | No | postponed |
time-wait inet sockets | No | |
unlinked files and directories | Yes | |
inotify | Yes | Probably gross due to watches attaching to inodes |
fanotify | Yes | |
dnotify | Yes | |
FUSE | Yes | Clean but requires per-FUSE-filesystem support |
network and distributed filesystems | Yes | |
SYSV IPC: semaphore undo | No | Patches on the list already. |
netlink | Yes | Clean, low priority. |
new, expiremental, and/or infrastructure-oriented network protocols |
Yes | Ignore |
file locks | Yes | Patches on the list already |
file leases | Yes | Patches on the list already |
fowner+sigio | Yes | Trivial and clean. |
ptraced tasks | Yes | Expect small impact on kernel code. |
async-io | Yes | |
restart of 64-bit task from 32-bit task and vice versa |
Yes | Probably in userspace |
inet6 sockets | Yes | Previously supported, just need to add it back in. minor. |
Hardware devices other than those mentioned above. Includes mmap, /dev/foo, Infiniband devices |
Yes (mostly) | One idea, very low priority |
System-specific files in sysfs (things like UUID files) |
Yes | |
time namespace | N/A |