Compare commits
6 Commits
b9cbb08e0a
...
f56a9cbf9c
Author | SHA1 | Date |
---|---|---|
Yu Watanabe | f56a9cbf9c | |
igo95862 | 0e577869f3 | |
Zbigniew Jędrzejewski-Szmek | e0300086ba | |
Vito Caputo | e3500e9d21 | |
Yu Watanabe | 273d76f4f8 | |
Yu Watanabe | 10f3484950 |
4
NEWS
4
NEWS
|
@ -493,8 +493,8 @@ CHANGES WITH 247 in spe:
|
||||||
|
|
||||||
* The SystemCallErrorNumber= unit file setting now accepts the new
|
* The SystemCallErrorNumber= unit file setting now accepts the new
|
||||||
"kill" and "log" actions, in addition to arbitrary error number
|
"kill" and "log" actions, in addition to arbitrary error number
|
||||||
specifications as before. If "kill" the the processes are killed on
|
specifications as before. If "kill" the processes are killed on the
|
||||||
the event, if "log" the offending system call is audit logged.
|
event, if "log" the offending system call is audit logged.
|
||||||
|
|
||||||
* A new SystemCallLog= unit file setting has been added that accepts a
|
* A new SystemCallLog= unit file setting has been added that accepts a
|
||||||
list of system calls that shall be logged about (audit).
|
list of system calls that shall be logged about (audit).
|
||||||
|
|
|
@ -77,7 +77,7 @@ manager, please consider supporting the following interfaces.
|
||||||
container instance) or creating one scope unit for each container instance
|
container instance) or creating one scope unit for each container instance
|
||||||
via systemd's transient unit API (in case you have one container manager
|
via systemd's transient unit API (in case you have one container manager
|
||||||
that manages all instances. Either way, make sure to set `Delegate=yes` in
|
that manages all instances. Either way, make sure to set `Delegate=yes` in
|
||||||
it. This ensures that that the unit you created will be part of all cgroup
|
it. This ensures that the unit you created will be part of all cgroup
|
||||||
controllers (or at least the ones systemd understands). The latter may also
|
controllers (or at least the ones systemd understands). The latter may also
|
||||||
be done via `systemd-machined`'s `CreateMachine()` API. Make sure to use the
|
be done via `systemd-machined`'s `CreateMachine()` API. Make sure to use the
|
||||||
cgroup path systemd put your process in for all operations of the container.
|
cgroup path systemd put your process in for all operations of the container.
|
||||||
|
@ -364,7 +364,7 @@ If you write software that wants to detect whether it is run in a container,
|
||||||
please check `/proc/1/environ` and look for the `container=` environment
|
please check `/proc/1/environ` and look for the `container=` environment
|
||||||
variable. Do not assume the environment variable is inherited down the process
|
variable. Do not assume the environment variable is inherited down the process
|
||||||
tree. It generally is not. Hence check the environment block of PID 1, not your
|
tree. It generally is not. Hence check the environment block of PID 1, not your
|
||||||
own. Note though that that file is only accessible to root. systemd hence early
|
own. Note though that this file is only accessible to root. systemd hence early
|
||||||
on also copies the value into `/run/systemd/container`, which is readable for
|
on also copies the value into `/run/systemd/container`, which is readable for
|
||||||
everybody. However, that's a systemd-specific interface and other init systems
|
everybody. However, that's a systemd-specific interface and other init systems
|
||||||
are unlikely to do the same.
|
are unlikely to do the same.
|
||||||
|
|
|
@ -517,7 +517,7 @@ _packed_ struct HashTableObject {
|
||||||
```
|
```
|
||||||
|
|
||||||
The structure of both DATA_HASH_TABLE and FIELD_HASH_TABLE objects are
|
The structure of both DATA_HASH_TABLE and FIELD_HASH_TABLE objects are
|
||||||
identical. They implement a simple hash table, which each cell containing
|
identical. They implement a simple hash table, with each cell containing
|
||||||
offsets to the head and tail of the singly linked list of the DATA and FIELD
|
offsets to the head and tail of the singly linked list of the DATA and FIELD
|
||||||
objects, respectively. DATA's and FIELD's next_hash_offset field are used to
|
objects, respectively. DATA's and FIELD's next_hash_offset field are used to
|
||||||
chain up the objects. Empty cells have both offsets set to 0.
|
chain up the objects. Empty cells have both offsets set to 0.
|
||||||
|
@ -651,15 +651,15 @@ look up the FIELD object and follow the chain of links to all DATA it includes.
|
||||||
|
|
||||||
### Writing
|
### Writing
|
||||||
|
|
||||||
When an entry is appended to the journal for each of its data fields the data
|
When an entry is appended to the journal, for each of its data fields the data
|
||||||
hash table should be checked. If the data field does not yet exist in the file
|
hash table should be checked. If the data field does not yet exist in the file,
|
||||||
it should be appended and added to the data hash table. When a field data
|
it should be appended and added to the data hash table. When a data field's data
|
||||||
object is added the field hash table should be checked for the field name of
|
object is added, the field hash table should be checked for the field name of
|
||||||
the data field, and a field object be added if necessary. After all data fields
|
the data field, and a field object be added if necessary. After all data fields
|
||||||
(and recursively all field names) of the new entry are appended and linked up
|
(and recursively all field names) of the new entry are appended and linked up
|
||||||
in the hashtables the entry object should be appended and linked up too.
|
in the hashtables, the entry object should be appended and linked up too.
|
||||||
|
|
||||||
In regular intervals a tag object should be written if sealing is enabled (see
|
At regular intervals a tag object should be written if sealing is enabled (see
|
||||||
above). Before the file is closed a tag should be written too, to seal it off.
|
above). Before the file is closed a tag should be written too, to seal it off.
|
||||||
|
|
||||||
Before writing an object, time and disk space limits should be checked and
|
Before writing an object, time and disk space limits should be checked and
|
||||||
|
|
|
@ -301,8 +301,8 @@ s - Service VLAN, m - Two-port MAC Relay (TPMR)
|
||||||
</term>
|
</term>
|
||||||
<listitem><para>Reconfigure network interfaces. Takes interface name or index number. Note that
|
<listitem><para>Reconfigure network interfaces. Takes interface name or index number. Note that
|
||||||
this does not reload <filename>.netdev</filename> or <filename>.network</filename>
|
this does not reload <filename>.netdev</filename> or <filename>.network</filename>
|
||||||
corresponding to the the specified interface. So, if you edit config files, it is necessary to
|
corresponding to the specified interface. So, if you edit config files, it is necessary to call
|
||||||
call <command>networkctl reload</command> first to apply new settings.</para></listitem>
|
<command>networkctl reload</command> first to apply new settings.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
|
|
||||||
<funcprototype>
|
<funcprototype>
|
||||||
<funcdef>int sd_bus_message_append_array_space</funcdef>
|
<funcdef>int sd_bus_message_append_array_space</funcdef>
|
||||||
|
<paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
|
||||||
<paramdef>char <parameter>type</parameter></paramdef>
|
<paramdef>char <parameter>type</parameter></paramdef>
|
||||||
<paramdef>size_t <parameter>size</parameter></paramdef>
|
<paramdef>size_t <parameter>size</parameter></paramdef>
|
||||||
<paramdef>void **<parameter>ptr</parameter></paramdef>
|
<paramdef>void **<parameter>ptr</parameter></paramdef>
|
||||||
|
|
|
@ -1103,7 +1103,7 @@ int copy_file_atomic_full(
|
||||||
assert(from);
|
assert(from);
|
||||||
assert(to);
|
assert(to);
|
||||||
|
|
||||||
/* We try to use O_TMPFILE here to create the file if we can. Note that that only works if COPY_REPLACE is not
|
/* We try to use O_TMPFILE here to create the file if we can. Note that this only works if COPY_REPLACE is not
|
||||||
* set though as we need to use linkat() for linking the O_TMPFILE file into the file system but that system
|
* set though as we need to use linkat() for linking the O_TMPFILE file into the file system but that system
|
||||||
* call can't replace existing files. Hence, if COPY_REPLACE is set we create a temporary name in the file
|
* call can't replace existing files. Hence, if COPY_REPLACE is set we create a temporary name in the file
|
||||||
* system right-away and unconditionally which we then can renameat() to the right name after we completed
|
* system right-away and unconditionally which we then can renameat() to the right name after we completed
|
||||||
|
|
|
@ -248,8 +248,8 @@ int khash_put(khash *h, const void *buffer, size_t size) {
|
||||||
|
|
||||||
int khash_put_iovec(khash *h, const struct iovec *iovec, size_t n) {
|
int khash_put_iovec(khash *h, const struct iovec *iovec, size_t n) {
|
||||||
struct msghdr mh = {
|
struct msghdr mh = {
|
||||||
mh.msg_iov = (struct iovec*) iovec,
|
.msg_iov = (struct iovec*) iovec,
|
||||||
mh.msg_iovlen = n,
|
.msg_iovlen = n,
|
||||||
};
|
};
|
||||||
ssize_t k;
|
ssize_t k;
|
||||||
|
|
||||||
|
|
|
@ -232,7 +232,7 @@ static int loop_configure(
|
||||||
* ioctl can return EAGAIN in case we change the lo_offset field, if someone else is accessing the
|
* ioctl can return EAGAIN in case we change the lo_offset field, if someone else is accessing the
|
||||||
* block device while we try to reconfigure it. This is a pretty common case, since udev might
|
* block device while we try to reconfigure it. This is a pretty common case, since udev might
|
||||||
* instantly start probing the device as soon as we attach an fd to it. Hence handle it in two ways:
|
* instantly start probing the device as soon as we attach an fd to it. Hence handle it in two ways:
|
||||||
* first, let's take the BSD lock that that ensures that udev will not step in between the point in
|
* first, let's take the BSD lock to ensure that udev will not step in between the point in
|
||||||
* time where we attach the fd and where we reconfigure the device. Secondly, let's wait 50ms on
|
* time where we attach the fd and where we reconfigure the device. Secondly, let's wait 50ms on
|
||||||
* EAGAIN and retry. The former should be an efficient mechanism to avoid we have to wait 50ms
|
* EAGAIN and retry. The former should be an efficient mechanism to avoid we have to wait 50ms
|
||||||
* needlessly if we are just racing against udev. The latter is protection against all other cases,
|
* needlessly if we are just racing against udev. The latter is protection against all other cases,
|
||||||
|
|
|
@ -232,8 +232,8 @@ static void sync_with_progress(void) {
|
||||||
|
|
||||||
BLOCK_SIGNALS(SIGCHLD);
|
BLOCK_SIGNALS(SIGCHLD);
|
||||||
|
|
||||||
/* Due to the possibility of the sync operation hanging, we fork a child process and monitor the progress. If
|
/* Due to the possibility of the sync operation hanging, we fork a child process and monitor
|
||||||
* the timeout lapses, the assumption is that that particular sync stalled. */
|
* the progress. If the timeout lapses, the assumption is that the particular sync stalled. */
|
||||||
|
|
||||||
r = asynchronous_sync(&pid);
|
r = asynchronous_sync(&pid);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
|
|
|
@ -514,10 +514,8 @@ static int remount_with_timeout(MountPoint *m, int umount_log_level) {
|
||||||
|
|
||||||
assert(m);
|
assert(m);
|
||||||
|
|
||||||
/* Due to the possibility of a remount operation hanging, we
|
/* Due to the possibility of a remount operation hanging, we fork a child process and set a
|
||||||
* fork a child process and set a timeout. If the timeout
|
* timeout. If the timeout lapses, the assumption is that the particular remount failed. */
|
||||||
* lapses, the assumption is that that particular remount
|
|
||||||
* failed. */
|
|
||||||
r = safe_fork("(sd-remount)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_LOG|FORK_REOPEN_LOG, &pid);
|
r = safe_fork("(sd-remount)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_LOG|FORK_REOPEN_LOG, &pid);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
@ -552,10 +550,8 @@ static int umount_with_timeout(MountPoint *m, int umount_log_level) {
|
||||||
|
|
||||||
assert(m);
|
assert(m);
|
||||||
|
|
||||||
/* Due to the possibility of a umount operation hanging, we
|
/* Due to the possibility of a umount operation hanging, we fork a child process and set a
|
||||||
* fork a child process and set a timeout. If the timeout
|
* timeout. If the timeout lapses, the assumption is that the particular umount failed. */
|
||||||
* lapses, the assumption is that that particular umount
|
|
||||||
* failed. */
|
|
||||||
r = safe_fork("(sd-umount)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_LOG|FORK_REOPEN_LOG, &pid);
|
r = safe_fork("(sd-umount)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_LOG|FORK_REOPEN_LOG, &pid);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
Loading…
Reference in New Issue