Eli Schwartz [Thu, 19 May 2022 10:50:35 +0000 (06:50 -0400)]
meson: fix type for many build options
Integers and booleans are supposed to be actual integers and booleans,
not strings describing their value, but Meson silently accepted either
one. It's still wrong to do it though, and other implementations of
Meson such as muon choke on it.
Yu Watanabe [Sat, 30 Jul 2022 04:44:11 +0000 (13:44 +0900)]
meson: use 0 for default uids, gids, and time epoch
0 UID and GID are special, and should not be acceptable for the settings.
Hence, we can handle 0 as unset.
Strictly speaking, time epoch with 0 is valid, but I guess no one use
0 as a valid value.
Cristian Rodríguez [Tue, 26 Jul 2022 18:24:12 +0000 (18:24 +0000)]
gcrypt: prefer the OS RNG
by default, gcrypt defaults to an userspace RNG, this is
the wrong thing (tm) to do on linux.
Switch to the SYSTEM rng instead.
Fei Li [Fri, 17 Jun 2022 11:26:28 +0000 (19:26 +0800)]
virt: detect KubeVirt instance
Kubevirt is currently technically based on KVM (but not xen yet[1]).
The systemd-detect-virt command, used to differentiate the current
virtualization environment, works fine on x86 relying on CPUID, while
fails to get the correct value (none instead of kvm) on aarch64.
Let's fix this by adding a new 'vendor[KubeVirt] = kvm' classification
considering the sys_vendor is always KubeVirt.
[1] https://groups.google.com/g/kubevirt-dev/c/C6cUgzTOsVg
Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
James Hilliard [Wed, 27 Jul 2022 21:28:09 +0000 (15:28 -0600)]
journalctl: allow statically linked build
The journalctl tool may be needed on cross compilation hosts in order
to run --update-catalog against a target rootfs.
To avoid reliability issues caused by shared linking allow journalctl
to be linked statically.
Daan De Meyer [Tue, 19 Jul 2022 08:37:05 +0000 (10:37 +0200)]
units: Simplify container getty handling
Let's remove the baud settings for the container getty units since
they don't have any effect there anyway. On top of that, when we're
dealing with container TTYs, we can handle all the setup involved
ourselves so let's prevent agetty/login from touching the container
tty at all.
One example where this helps is that it actually makes disabling
TTYVHangup have an effect since before, login would unconditionally
call vhangup() on the tty.
Daan De Meyer [Thu, 28 Jul 2022 12:15:33 +0000 (14:15 +0200)]
Merge pull request #24080 from rdtscp/feature/machinectl/copy-force-flag
Add --force flag to machinectl copy-[to|from]
Lennart Poettering [Thu, 28 Jul 2022 09:25:26 +0000 (11:25 +0200)]
update TODO
Luca Boccassi [Wed, 27 Jul 2022 21:57:31 +0000 (22:57 +0100)]
Merge pull request #23875 from yuwata/resolve-mdns-fix-use-after-free
resolve: mdns: fix use-after-free
Janis Goldschmidt [Wed, 27 Jul 2022 09:23:20 +0000 (11:23 +0200)]
Use correct option name in error message
Alexander Wilson [Fri, 22 Jul 2022 11:08:11 +0000 (04:08 -0700)]
machinectl: Add plumbing for a `--force` flag for file copy
machine: Add APIs CopyTo[Machine]WithFlags + CopyFrom[Machine]WithFlags
- Same API to those without `WithFlags` (except this can take flags)
- Initially, only a flag to allow replacing a file if it already exists
Alexander Wilson [Fri, 22 Jul 2022 11:13:31 +0000 (04:13 -0700)]
copy: Respect COPY_REPLACE flag for copy_tree
- Add a test that asserts that copy_tree on an existing file will fail without COPY_REPLACE
- Add a test that asserts that copy_tree with COPY_MERGE and COPY_REPLACE on an existing directory will overwrite files that already exist.
Alexander Wilson [Fri, 22 Jul 2022 11:15:08 +0000 (04:15 -0700)]
copy.[ch]: Refactor
- Refactor: Move HardlinkContext to header file
- Refactor: Create `fd_copy_tree_generic` which isolates the functionality to check stat type and appropriately copy.
- Refactor: Create `fd_copy_leaf` which handles copying leaf nodes of a file tree.
Lennart Poettering [Mon, 25 Jul 2022 15:40:32 +0000 (17:40 +0200)]
stub: override StubInfo EFI variable unconditionally, since *we* own it
The other variables are owned by the boot menu (i.e. sd-boot), we only
fill those in if it didn't do so for us (to support cases where our stub
kernel is directly invoked by UEFI). But StubInfo is genuinely about the
stub, hence let's simplify things and unconditionally set it from the
stub.
Lennart Poettering [Tue, 26 Jul 2022 16:23:49 +0000 (18:23 +0200)]
boot: introduce common shortcut exit path in pack_cpio()
THis will be useful in a later commit, when we add more stuff to the
common exit path. But even without that, it's a nice simplification,
removing redundant lines.
Luca Boccassi [Tue, 26 Jul 2022 16:41:51 +0000 (17:41 +0100)]
portable: set PrivateTmp=yes in trusted profile too
When running on images you don't want to modify the /tmp
directory even if it's writable, and often it will just
be read-only. Set PrivateTmp=yes.
Fixes https://github.com/systemd/systemd/issues/23592
Luca Boccassi [Tue, 26 Jul 2022 22:17:23 +0000 (23:17 +0100)]
Merge pull request #24122 from yuwata/core-mount-bind-mount-on-nfs
core/mount: ignore -EACCES from mkdir_p_label() on NFS
Daan De Meyer [Tue, 26 Jul 2022 18:40:01 +0000 (20:40 +0200)]
mkosi: Update to latest commit
Fixes an issue with Arch builds failing by updating the archlinux
keyring package.
Lennart Poettering [Mon, 25 Jul 2022 15:42:54 +0000 (17:42 +0200)]
efi: update measure.h comments a bit
Lennart Poettering [Mon, 25 Jul 2022 15:33:53 +0000 (17:33 +0200)]
update TODO
(this basically just copies a coment from src/boot/efi/measure.h into
the TODO)
asavah [Tue, 26 Jul 2022 14:48:24 +0000 (17:48 +0300)]
meson: fix math flags check
Yu Watanabe [Tue, 26 Jul 2022 14:23:01 +0000 (23:23 +0900)]
core/mount: downgrade log level about several mkdir failures
Yu Watanabe [Tue, 26 Jul 2022 14:15:01 +0000 (23:15 +0900)]
Revert "core/mount: fail early if directory cannot be created"
This reverts commit
e4de58c8231e47509ffeb3aa47620ca42f22d7f6.
If mkdir() fails and the path does exist, then the later mount
command fails anyway. Hence, it is not necessary to fail here.
Fixes #24120.
Daan De Meyer [Tue, 26 Jul 2022 12:53:16 +0000 (14:53 +0200)]
mkosi: Build against Fedora rawhide as well
Yu Watanabe [Tue, 26 Jul 2022 11:03:12 +0000 (20:03 +0900)]
home: drop conflicted headers
Fixes #24117.
Yu Watanabe [Tue, 26 Jul 2022 10:31:31 +0000 (19:31 +0900)]
homed: fix dbus node enumerator
Fixes #24114.
Lennart Poettering [Tue, 26 Jul 2022 09:24:02 +0000 (11:24 +0200)]
Merge pull request #23702 from igo95862/fix-object-manager-interface-in-wrong-places
Fix ObjectManager interfaces for `GetManagedObjects`, `InerfacesAdded` and `InterfacesRemoved`
igo95862 [Sun, 3 Jul 2022 16:24:15 +0000 (19:24 +0300)]
Fix ObjectManager interface emitted for non-manager objects
igo95862 [Sun, 3 Jul 2022 15:40:10 +0000 (18:40 +0300)]
test-bus-objects: Test interfaces added/removed signal interfaces
`org.freedesktop.DBus.ObjectManager` should only be emitted if
object in question has ObjectManager attached.
igo95862 [Sun, 3 Jul 2022 14:11:46 +0000 (17:11 +0300)]
Fix GetManagedObjects returning ObjectManager interface for non-manager objects
igo95862 [Fri, 10 Jun 2022 17:51:04 +0000 (20:51 +0300)]
test-bus-objects: Test GetManagedObjects interfaces are correct
Objects without ObjectManager should not have
`org.freedesktop.DBus.ObjectManager` interface.
Object with ObjectManager should do.
Also added ASSERT_SE_NONNEG and ASSERT_NONNEG macros.
Luca Boccassi [Mon, 25 Jul 2022 20:28:11 +0000 (21:28 +0100)]
Merge pull request #24033 from dtardon/list-automounts
Add `systemctl list-automounts`
Lennart Poettering [Mon, 25 Jul 2022 09:31:05 +0000 (11:31 +0200)]
localed: don't fail if we cannot copy an xattr
We ignore xattr copy failures on all other cases, and we should do so
here too.
Fixes: #24106
Lennart Poettering [Mon, 25 Jul 2022 14:08:10 +0000 (16:08 +0200)]
update TODO
Lennart Poettering [Mon, 25 Jul 2022 13:01:37 +0000 (15:01 +0200)]
update TODO
Lennart Poettering [Mon, 25 Jul 2022 12:59:35 +0000 (14:59 +0200)]
update TODO
Lennart Poettering [Mon, 25 Jul 2022 12:55:48 +0000 (14:55 +0200)]
TODO: add new 'deprecations and removals' section
Daan De Meyer [Fri, 22 Jul 2022 12:49:42 +0000 (14:49 +0200)]
journal: Move more pattern matching logic into pcre2-util
To avoid having "#if HAVE_PCRE2" all throughout the code, let's
confine the pcre2 header specific stuff to pcre2-util.c. Instead of
exposing all the individual symbols from pcre2, let's only expose
three high level functions that do all we need:
- pcre2_pattern_compile(): Compile the regex
- pcre2_pattern_matches(): Check if the compiled regex matches a message
- pcre2_pattern_free(): Free the compiled regex
We expose the compiled pcre2 pattern (which is of type pcre2_code *) as
a void pointer to avoid having to include pcre2.h in all code where we
work with compiled pcre2 patterns. For readability, we typedef void
to pcre2_pattern and use that as the type specifier for compiled pcre2
patterns.
David Tardon [Fri, 22 Jul 2022 15:07:56 +0000 (17:07 +0200)]
shell-completion: add systemctl list-automounts
David Tardon [Fri, 15 Jul 2022 14:07:31 +0000 (16:07 +0200)]
man: document systemctl list-automounts
David Tardon [Fri, 15 Jul 2022 13:58:06 +0000 (15:58 +0200)]
systemctl: add list-automounts verb
Fixes: #6056
David Tardon [Mon, 25 Jul 2022 07:32:16 +0000 (09:32 +0200)]
systemctl: simplify var. definition a bit
David Tardon [Mon, 25 Jul 2022 07:23:49 +0000 (09:23 +0200)]
systemctl: extract output of legend to a function
David Tardon [Mon, 25 Jul 2022 07:28:31 +0000 (09:28 +0200)]
systemctl: drop unneeded condition
David Tardon [Sat, 23 Jul 2022 15:07:52 +0000 (17:07 +0200)]
systemctl: reduce var. scope and shorten the code a bit
Frantisek Sumsal [Mon, 25 Jul 2022 07:49:39 +0000 (09:49 +0200)]
boot: a couple of tweaks recommended by Coccinelle
Lennart Poettering [Mon, 25 Jul 2022 08:40:32 +0000 (10:40 +0200)]
systemctl: fix type used for array sizes to size_t
We always should use size_t for sizes of arrays (and any size of memory,
in fact), unless there's a strong reason to use something else. Hence,
let's fix these cases where we sloppily used "unsigned" or "int"
instead.
No change in behaviour, this is just to make things less surprising for
the random reader.
Lennart Poettering [Mon, 25 Jul 2022 09:20:08 +0000 (11:20 +0200)]
Merge pull request #23991 from yuwata/udev-reload
udev: reload rules and builtins only when mtime of a config changed
Quentin Deslandes [Fri, 22 Jul 2022 15:18:15 +0000 (17:18 +0200)]
sysctl: add --strict option to fail if sysctl does not exists
systemd-sysctl currently fails silently under any of these conditions:
- Missing permission to write a sysctl.
- Invalid sysctl (path doesn't exists).
- Ignore failure flag ('-' in front of the sysctl name).
Because of this behaviour, configuration issues can go unnoticed as
there is no way to detect those unless going through the logs.
--strict option forces systemd-sysctl to fail if a sysctl is invalid or
if permission are insufficient. Errors on sysctl marked as "ignore
failure" will still be ignored.
Rudi Heitbaum [Sat, 23 Jul 2022 10:38:49 +0000 (10:38 +0000)]
glibc: Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36
Yu Watanabe [Sat, 23 Jul 2022 03:48:35 +0000 (12:48 +0900)]
unit-file: avoid (null) in debugging logs
The variable `inst` was set to NULL by TAKE_PTR().
This fixes the following log message:
```
systemd[1]: Unit getty@tty2.service has alias (null).
```
Yu Watanabe [Sun, 24 Jul 2022 04:01:50 +0000 (13:01 +0900)]
Merge pull request #24020 from yuwata/network-rfkill
network: fix wlan interface handling when its RF is killed
Yu Watanabe [Sun, 24 Jul 2022 04:01:28 +0000 (13:01 +0900)]
Merge pull request #23828 from yuwata/nfnl-cleanups
sd-netlink: several cleanups for netfilter
Yu Watanabe [Sat, 25 Jun 2022 18:52:59 +0000 (03:52 +0900)]
sd-netlink: introduce sd_nfnl_{send,call}_batch()
This also introduces sd_nfnl_message_new() which can be also used for
non-nftables subsystems.
Yu Watanabe [Sat, 25 Jun 2022 06:38:06 +0000 (15:38 +0900)]
sd-netlink: do not compare pointer with 0
Yu Watanabe [Wed, 15 Jun 2022 04:45:37 +0000 (13:45 +0900)]
firewall-util: introduce nfnl_close_expr_container() helper function
And merge nfnl_add_expr_lookup_set() and nfnl_add_expr_lookup_map().
Yu Watanabe [Wed, 15 Jun 2022 04:04:46 +0000 (13:04 +0900)]
sd-netlink: merge sd_nfnl_nft_message_{new,del}_setelems_begin()
And this makes the new merged function `sd_nfnl_nft_message_new_setelems()`
not open container, as containers should be opened and closed in the
same function in general. Otherwise, it is hard to understand which
level we are in the nested attribute tree.
Yu Watanabe [Wed, 15 Jun 2022 03:57:41 +0000 (12:57 +0900)]
sd-netlink: drop unused sd_nfnl_nft_message_del_table()
Yu Watanabe [Wed, 15 Jun 2022 04:55:20 +0000 (13:55 +0900)]
sd-netlink: introduce sd_netlink_message_append_container_data()
Yu Watanabe [Tue, 14 Jun 2022 13:22:54 +0000 (22:22 +0900)]
sd-netlink: several cleanups for netfilter
- rename family -> nfproto, and other arguments,
- check specified nfproto,
- change type of several function arguments that specify data length,
- add several assertions,
- drop unnecessary headers.
Yu Watanabe [Wed, 15 Jun 2022 03:53:32 +0000 (12:53 +0900)]
firewall-util: drop unnecessary string attribute
As `sd_netlink_message_open_container_union()` also appends the string
attribute.
Yu Watanabe [Tue, 14 Jun 2022 08:50:59 +0000 (17:50 +0900)]
firewall-util-nft: various cleanups
- add missing assertions,
- align enum elements,
- use cleanup attribute, and so on.
Yu Watanabe [Tue, 14 Jun 2022 07:36:45 +0000 (16:36 +0900)]
tree-wide: drop unnecessary inclusion of netlink-util.h
Yu Watanabe [Tue, 14 Jun 2022 07:36:17 +0000 (16:36 +0900)]
sd-netlink: move rtnl_message_type_is_*() to netlink-message-rtnl.c
Yu Watanabe [Thu, 14 Jul 2022 21:26:57 +0000 (06:26 +0900)]
network: do not try to bring up wifi interface if rfkill is active
This fixes the following error:
---
systemd-networkd[465]: wlan0: Could not bring up interface: Operation not possible due to RF-kill
---
Fixes #23649.
Yu Watanabe [Fri, 22 Jul 2022 00:46:52 +0000 (09:46 +0900)]
network: also assign rfkill device to Wiphy object
Preparation for later commits.
Yu Watanabe [Thu, 21 Jul 2022 23:48:55 +0000 (08:48 +0900)]
network: assign corresponding sd-device object to Wiphy object
As an analogy for Link object, let's each Wiphy object has the
corresponding sd-device object. The sd-device object will be used in
later commits.
Yu Watanabe [Sat, 23 Jul 2022 11:19:39 +0000 (20:19 +0900)]
network: set wiphy name in wiphy_new()
Then, we can assume all Wiphy objects managed by Manager has both valid
index and name.
Yu Watanabe [Sat, 23 Jul 2022 00:11:54 +0000 (09:11 +0900)]
network: add TODO about interface renaming
Yu Watanabe [Sat, 23 Jul 2022 00:00:32 +0000 (09:00 +0900)]
network: unref sd-device object assigned to Link on remove uevent
Otherwise, outdated device information may be used in a short timespan.
Yu Watanabe [Thu, 21 Jul 2022 23:32:39 +0000 (08:32 +0900)]
network: introduce a tiny wrapper for manager_udev_process_link()
Preparation for later commits.
Yu Watanabe [Sat, 23 Jul 2022 11:00:44 +0000 (20:00 +0900)]
network: rename Link.sd_device -> Link.dev
Yu Watanabe [Wed, 13 Jul 2022 03:29:17 +0000 (12:29 +0900)]
test-network: reload udevd when .link file is copied/removed
Yu Watanabe [Fri, 15 Jul 2022 03:41:26 +0000 (12:41 +0900)]
udev-builtin: logs when needs reloading
Yu Watanabe [Wed, 13 Jul 2022 02:52:37 +0000 (11:52 +0900)]
udev: reload rules and builtins only when mtime of a config changed
This makes udevd reload rules only when the timestamp is updated,
even on SIGHUP or `udevadm control --reload`.
So, we can call `udevadm control --reload` without huge performance
penalty when no rules, .link files, and so on are changed.
Yu Watanabe [Wed, 13 Jul 2022 12:58:15 +0000 (21:58 +0900)]
udev: save stats of all udev rules file
The mtime of directory is not updated when an existing rule file is
changed. Hence, paths_check_timestamp() is not reliable.
Yu Watanabe [Sat, 23 Jul 2022 06:02:48 +0000 (15:02 +0900)]
conf-parser: add a boolean flag for config_get_stats_by_path() to control if drop-in configs are checked
Preparation for later commits.
Yu Watanabe [Wed, 13 Jul 2022 12:05:06 +0000 (21:05 +0900)]
udev: delay to start queued events on `udevadm control --start-exec-queue`
Yu Watanabe [Wed, 13 Jul 2022 02:49:16 +0000 (11:49 +0900)]
udev: use event_reset_time_relative()
Yu Watanabe [Wed, 13 Jul 2022 02:08:09 +0000 (11:08 +0900)]
udev: downgrade error level and mention that the error is ignored
Yu Watanabe [Wed, 13 Jul 2022 02:07:23 +0000 (11:07 +0900)]
udev: fix error check
codefiles [Sat, 23 Jul 2022 00:33:07 +0000 (20:33 -0400)]
man: Fix typo
Yu Watanabe [Thu, 21 Jul 2022 23:48:33 +0000 (08:48 +0900)]
network: use device_unref_and_replace()
Yu Watanabe [Thu, 21 Jul 2022 23:46:51 +0000 (08:46 +0900)]
sd-device: introduce device_unref_and_replace()
Yu Watanabe [Thu, 21 Jul 2022 05:15:20 +0000 (14:15 +0900)]
sd-device: introduce device_clear_sysattr_cache()
Yu Watanabe [Fri, 15 Jul 2022 00:08:10 +0000 (09:08 +0900)]
sd-device: introduce device_get_sysattr_bool()
Yu Watanabe [Thu, 14 Jul 2022 21:04:51 +0000 (06:04 +0900)]
network: do not silently stop to process configuration on activation failure
Previously, if activation failed, link did not enter the failed state,
but still Link.activated flag not set. Hence, nothing processed even if
the interface is manually brought up later.
Partially fixes #23649.
Yu Watanabe [Fri, 22 Jul 2022 23:10:01 +0000 (08:10 +0900)]
Merge pull request #24074 from yuwata/network-dhcp6-rapid-commit
network: dhcp6: re-introduce RapidCommit= setting
Zbigniew Jędrzejewski-Szmek [Fri, 22 Jul 2022 09:45:12 +0000 (11:45 +0200)]
manager: limit access to private dbus socket
For the system manager, /run/systemd/private is publicly accessible, because
/run/systemd is 0755, and /run/systemd/private is 0777. For the user manager,
/run/user/<uid> is 0700, and /run/user/<uid>/systemd/private is 0777. This
does not directly cause any security issue because we check the sender in
bus_check_peercred (ucred.uid != 0 && ucred.uid != geteuid()).
But it makes sense to limit access to the socket to avoid wasting time in PID1.
Somebody could send messages there that'd we'd reject anyway. It also makes
things more explicit.
Zbigniew Jędrzejewski-Szmek [Fri, 22 Jul 2022 09:04:01 +0000 (11:04 +0200)]
tests: add a simple test that checks what fexecve_or_execve does
This can be easily used to show that the issue described in
ceedbf8185fc7593366679f02d31da63af8c4bd1 is still reproduced:
$ strace -e execveat build/test-execve /bin/grep Name /proc/self/status
execveat(3, "", ["/bin/grep", "Name", "/proc/self/status"], NULL, AT_EMPTY_PATH) = 0
Name: 3
Andrey Albershteyn [Fri, 8 Jul 2022 20:19:48 +0000 (22:19 +0200)]
udev: enable BLKID_SUBLKS_FSINFO tags
libblkid gained new tags - FSSIZE, FSLASTBLOCK and FSBLOCKSIZE.
These tags are filesystem related properties probed from superblock.
All of them are enabled by BLKID_SUBLKS_FSINFO flag.
Set the flag to allow these tags to be cached in udev db.
Yu Watanabe [Fri, 22 Jul 2022 06:45:24 +0000 (15:45 +0900)]
test: wait for user service or slice to be finished
Hopefully fixes #24040.
Luca Boccassi [Fri, 22 Jul 2022 19:02:07 +0000 (20:02 +0100)]
Merge pull request #24084 from pothos/mask-sysext-docs
man: Sysext docs improvements
Kai Lueke [Fri, 22 Jul 2022 12:57:55 +0000 (14:57 +0200)]
man: Use correct target type for sysupdate entry
While Type=file works because it seems to be the default, the line gets
ignored as printed on the stderr output.
Use the correct value "regular-file" for the target type.
Lennart Poettering [Fri, 22 Jul 2022 15:18:46 +0000 (17:18 +0200)]
TODO/NEWS: write down that we intend to remove cgroupsv1 support by EOY 2023
After discussions here:
https://lists.freedesktop.org/archives/systemd-devel/2022-July/thread.html
EOY 2023 is apparently what people can agree with, hence let formalize
this in the TODO list, so we don't forget.
Kai Lueke [Fri, 22 Jul 2022 13:09:21 +0000 (15:09 +0200)]
man: Document mask workaround for sysext images
A read-only /usr may ship a sysext image by default and the user wants
to opt out. Currently it's not clear how to do this.
Document that a /dev/null symlink in /etc/extensions/ works to "mask" a
sysext image in a folder with lower precedence.
Kai Lueke [Fri, 22 Jul 2022 13:03:12 +0000 (15:03 +0200)]
man: Do not recommend to overlay files with sysext even if possible
While overlaying files with a sysext can be useful, it may lead to
unexpected problems depending on when a process got started and which
version of the file it gets.
Call out that overlaying files is possible but don't recommend to make
use of it.
Yu Watanabe [Fri, 22 Jul 2022 04:23:41 +0000 (13:23 +0900)]
test-network: add tests for RapidCommit=
Yu Watanabe [Fri, 22 Jul 2022 04:11:20 +0000 (13:11 +0900)]
network: dhcp6: re-introduce RapidCommit= setting
Previous implementation of disabling rapid commit was broken, and
dropped by
308d01f3c4decf3240ca0c6c7f91049953df7299.
Let's re-introduce the option in the correct way, as some servers seem
to return borked message when the solicit message contain the rapid
commit option.
Closes #24065.
Yu Watanabe [Fri, 22 Jul 2022 04:05:15 +0000 (13:05 +0900)]
sd-dhcp6-client: introduce sd_dhcp6_client_set_rapid_commit()