Difference between revisions of "Deprecation"
(16 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | This page collects stuff that is considered to be deprecated (and is about to be removed) | + | This page collects stuff that is considered to be deprecated (and is about to be removed) and how to use older CRIU versions |
− | == | + | == Problem == |
− | + | ||
− | : | + | Sometimes we reconsider the way CRIU works and rewrite some functionality. In order not to break backward compatibility at once, the old code is kept in CRIU for a while, but is declared as deprecated. After some time the old code is just removed and only the newer version of it stays. |
+ | |||
+ | So, for a deprecated functionality there are two versions of CRIU -- D and R -- that work differently with it. Before version D the old functionality exists. Between D and R both -- old and new ways of doing things work, after R only new code works, old behavior is not longer supported. | ||
+ | |||
+ | When old functionality is deprecated (and eventually removed) we try to encourage people to upgrade CRIU-s and the way they use. So, if one starts CRIU of version between D and R and the deprecated functionality is requested, the message | ||
+ | |||
+ | <pre> | ||
+ | Deprecated functionality (...) rejected. | ||
+ | Use the --deprecated option or set CRIU_DEPRECATED environment. | ||
+ | For details visit https://criu.org/Deprecation. | ||
+ | </pre> | ||
+ | |||
+ | appears in logs and criu exits. To continue working "the old way" w/o upgrading CRIU one may use the --deprecated option in CLI or set the CRIU_DEPRECATED environment variable. | ||
+ | |||
+ | But (!) it's important to upgrade anyway, since after some time the old functionality will still be removed and even the --deprecated/CRIU_DEPRECATED won't help. | ||
+ | |||
+ | Below is the list of stuff we deprecate with explanations. | ||
− | + | == Deprecated stuff == | |
− | |||
; Per-pid rlimits, itimers and posix_timers image file | ; Per-pid rlimits, itimers and posix_timers image file | ||
− | : Now all this stuff sit in the core entry | + | : Deprecated in [[Download/criu/2.6|2.6]]. Now all this stuff sit in the core entry (all since 1.3) |
− | ; | + | ; Separate image file for epoll tfds |
− | : | + | : Deprecated in [[Download/criu/2.6|2.6]]. It's now merged into epoll image since 1.4 |
− | ; | + | ; No-file records for ttys |
− | : | + | : Deprecated in [[Download/criu/2.7|2.7]]. See [[TTYs]] and <code>collect_one_tty()</code> routine in sources. Older versions of criu (before [[Download/criu/1.4|1.4]] commit caa64d97) didn't have reg_file_entry for ttys. |
− | ; | + | ; Dedicated options for external resources |
− | : | + | : Deprecated in [[Download/criu/2.8|2.8]]. {{Opt|--external}} is to be used instead of {{OptD|--ext-unix-sk}}, {{OptD|--veth-pair}}, {{OptD|--ext-mount-map}} and some more. |
− | ; | + | ; Separate image file for fsnotify marks |
− | : | + | : Deprecated in [[Download/criu/3.2|3.2]]. |
− | == | + | == Removed stuff == |
; The <code>criu show</code> action | ; The <code>criu show</code> action | ||
− | : | + | : Removed in [[Download/criu/2.0|2.0]]. Use [[CRIT]] instead |
; No ids.img files | ; No ids.img files | ||
− | : We've been writing these files since at least v0.4, | + | : Removed in [[Download/criu/2.1|2.1]]. We've been writing these files since at least v0.4, no deprecation period. |
; The <code>--namespaces</code> option | ; The <code>--namespaces</code> option | ||
− | : It was used when we didn't have /proc/pid/ns stuff, now it's useless, | + | : Removed in [[Download/criu/2.2|2.2]]. It was used when we didn't have /proc/pid/ns stuff, now it's useless, no deprecation period. |
+ | |||
+ | ; Per-pid fdinfo.img file | ||
+ | : Removed in [[Download/criu/2.4|2.4]]. The new layout (marked with respective bit in inventory) is per-fdtable-id, no deprecation period. | ||
+ | |||
+ | ; Per-pid file locks | ||
+ | : Removed in [[Download/criu/2.4|2.4]]. Now all locks sit in the file-locks.img file, no deprecation period. | ||
+ | |||
+ | ; Old page-read | ||
+ | : Removed in [[Download/criu/2.4|2.4]]. Used at ancient times when no pagemaps existed, no deprecation period. | ||
+ | |||
+ | == Plans == | ||
+ | |||
+ | === The <code>criu exec</code> action === | ||
+ | Should be deprecated with [[Compel]] | ||
+ | |||
+ | === Per-PID logs === | ||
+ | |||
+ | See [[logging]]. Not sure whether anybody is using it. | ||
== See also == | == See also == |
Latest revision as of 10:08, 16 June 2017
This page collects stuff that is considered to be deprecated (and is about to be removed) and how to use older CRIU versions
Problem[edit]
Sometimes we reconsider the way CRIU works and rewrite some functionality. In order not to break backward compatibility at once, the old code is kept in CRIU for a while, but is declared as deprecated. After some time the old code is just removed and only the newer version of it stays.
So, for a deprecated functionality there are two versions of CRIU -- D and R -- that work differently with it. Before version D the old functionality exists. Between D and R both -- old and new ways of doing things work, after R only new code works, old behavior is not longer supported.
When old functionality is deprecated (and eventually removed) we try to encourage people to upgrade CRIU-s and the way they use. So, if one starts CRIU of version between D and R and the deprecated functionality is requested, the message
Deprecated functionality (...) rejected. Use the --deprecated option or set CRIU_DEPRECATED environment. For details visit https://criu.org/Deprecation.
appears in logs and criu exits. To continue working "the old way" w/o upgrading CRIU one may use the --deprecated option in CLI or set the CRIU_DEPRECATED environment variable.
But (!) it's important to upgrade anyway, since after some time the old functionality will still be removed and even the --deprecated/CRIU_DEPRECATED won't help.
Below is the list of stuff we deprecate with explanations.
Deprecated stuff[edit]
- Per-pid rlimits, itimers and posix_timers image file
- Deprecated in 2.6. Now all this stuff sit in the core entry (all since 1.3)
- Separate image file for epoll tfds
- Deprecated in 2.6. It's now merged into epoll image since 1.4
- No-file records for ttys
- Deprecated in 2.7. See TTYs and
collect_one_tty()
routine in sources. Older versions of criu (before 1.4 commit caa64d97) didn't have reg_file_entry for ttys.
- Dedicated options for external resources
- Deprecated in 2.8.
--external
is to be used instead of--ext-unix-sk
,--veth-pair
,--ext-mount-map
and some more.
- Separate image file for fsnotify marks
- Deprecated in 3.2.
Removed stuff[edit]
- No ids.img files
- Removed in 2.1. We've been writing these files since at least v0.4, no deprecation period.
- The
--namespaces
option - Removed in 2.2. It was used when we didn't have /proc/pid/ns stuff, now it's useless, no deprecation period.
- Per-pid fdinfo.img file
- Removed in 2.4. The new layout (marked with respective bit in inventory) is per-fdtable-id, no deprecation period.
- Per-pid file locks
- Removed in 2.4. Now all locks sit in the file-locks.img file, no deprecation period.
- Old page-read
- Removed in 2.4. Used at ancient times when no pagemaps existed, no deprecation period.
Plans[edit]
The criu exec
action[edit]
Should be deprecated with Compel
Per-PID logs[edit]
See logging. Not sure whether anybody is using it.