1
0
mirror of https://github.com/systemd/systemd synced 2026-03-18 19:14:46 +01:00

Compare commits

...

9 Commits

Author SHA1 Message Date
Luca Boccassi
e4948b0f0a
Merge pull request #19921 from yuwata/service-verify-bus-type
core/service: fix assertion when Type=dbus but BusName= is not specified
2021-06-15 12:21:53 +01:00
Yu Watanabe
e19b0746f1 unit: use alias name of man page 2021-06-15 12:14:26 +01:00
Matt Johnston
e65357b658 man: fix sd_bus_add_node_enumerator() ret_nodes
ret_nodes is NULL terminated, the return value isn't a count.
2021-06-15 11:29:44 +01:00
Yu Watanabe
21d03e6c63 man: add an example to configure default route on device with table
Prompted by #19911.
2021-06-15 11:29:20 +01:00
Luca Boccassi
c35949a51c
Merge pull request #19930 from yuwata/update-comments
Update comments
2021-06-15 11:28:51 +01:00
Yu Watanabe
a3f5f4a5c0 fix typo 2021-06-15 14:19:30 +09:00
Yu Watanabe
7802194ac0 tree-wide: add missing whitespace at the end of comments 2021-06-15 14:09:29 +09:00
Yu Watanabe
2429808b29 test: add a test case for #19920 2021-06-15 03:06:09 +09:00
Yu Watanabe
0f97b7c338 core/service: fix assertion when Type=dbus but BusName= is not specified
Fixes #19920.
2021-06-15 03:06:09 +09:00
53 changed files with 80 additions and 65 deletions

View File

@ -58,8 +58,9 @@
<para><parameter>callback</parameter> is called with the path and userdata pointer registered
with <function>sd_bus_add_node_enumerator()</function>. When called, it should store all the
child object paths of the given path prefix in <parameter>ret_nodes</parameter> and return the
number of child objects under the given prefix. If an error occurs, it can either return a
child object paths of the given path prefix in <parameter>ret_nodes</parameter> with a NULL
terminator item. The callback should return a non-negative value on success.
If an error occurs, it can either return a
negative integer, set <parameter>ret_error</parameter> to a non-empty error or do both. Any
errors returned by the callback are encoded as D-Bus errors and sent back to the caller. Errors
in <parameter>ret_error</parameter> take priority over negative return values.</para>

View File

@ -253,7 +253,7 @@
<para><function>sd_bus_error_move()</function> is similar to <function>sd_bus_error_copy()</function>,
but will move any error information from <parameter>e</parameter> into <parameter>dst</parameter>,
resetting the former. This function cannot fail, as no new memory is allocated. Note that if
<parameter>e</parameter> is not set, <parameter>dst</parameter> is initializated to
<parameter>e</parameter> is not set, <parameter>dst</parameter> is initialized to
<constant>SD_BUS_ERROR_NULL</constant>. Moreover, if <parameter>dst</parameter> is
<constant>NULL</constant> no operation is executed on it and resources held by <parameter>e</parameter>
are freed and reset. Returns a converted <varname>errno</varname>-like, non-positive error value.</para>

View File

@ -461,8 +461,17 @@
<listitem>
<para>Takes a boolean. If set to true, sets up the default route bound to the interface.
Defaults to false. This is useful when creating routes on point-to-point interfaces.
This is equivalent to e.g. the following.
<programlisting>ip route add default dev veth99</programlisting></para>
This is equivalent to e.g. the following,
<programlisting>ip route add default dev veth99</programlisting>
or,
<programlisting>[Route]
Gateway=0.0.0.0</programlisting></para>
<para>Currently, there are no way to specify e.g., the table for the route configured by
this setting. To configure the default route with such an additional property, please use
the following instead:
<programlisting>[Route]
Gateway=0.0.0.0
Table=1234</programlisting></para>
</listitem>
</varlistentry>
<varlistentry>

View File

@ -820,7 +820,7 @@ int wait_for_terminate_with_timeout(pid_t pid, usec_t timeout) {
/* Assuming we woke due to the child exiting. */
if (waitid(P_PID, pid, &status, WEXITED|WNOHANG) == 0) {
if (status.si_pid == pid) {
/* This is the correct child.*/
/* This is the correct child. */
if (status.si_code == CLD_EXITED)
return (status.si_status == 0) ? 0 : -EPROTO;
else

View File

@ -188,7 +188,7 @@ int genuine_random_bytes(void *p, size_t n, RandomFlags flags) {
* invocations or so. That's because we don't really care about the quality here. We
* generally prefer using RDRAND if the caller allows us to, since this way we won't upset
* the kernel's random subsystem by accessing it before the pool is initialized (after all it
* will kmsg log about every attempt to do so)..*/
* will kmsg log about every attempt to do so). */
for (;;) {
unsigned long u;
size_t m;

View File

@ -107,7 +107,7 @@ int socket_address_verify(const SocketAddress *a, bool strict) {
/* If there's no embedded NUL byte, then the size needs to match the whole
* structure or the structure with one extra NUL byte suffixed. (Yeah, Linux is awful,
* and considers both equivalent: getsockname() even extends sockaddr_un beyond its
* size if the path is non NUL terminated.)*/
* size if the path is non NUL terminated.) */
if (!IN_SET(a->size, sizeof(a->sockaddr.un.sun_path), sizeof(a->sockaddr.un.sun_path)+1))
return -EINVAL;
}
@ -1192,7 +1192,7 @@ int sockaddr_un_set_path(struct sockaddr_un *ret, const char *path) {
/* Don't allow paths larger than the space in sockaddr_un. Note that we are a tiny bit more restrictive than
* the kernel is: we insist on NUL termination (both for abstract namespace and regular file system socket
* addresses!), which the kernel doesn't. We do this to reduce chance of incompatibility with other apps that
* do not expect non-NUL terminated file system path*/
* do not expect non-NUL terminated file system path. */
if (l+1 > sizeof(ret->sun_path))
return -EINVAL;

View File

@ -1030,7 +1030,7 @@ int parse_time(const char *t, usec_t *usec, usec_t default_unit) {
s = extract_multiplier(p + strspn(p, WHITESPACE), &multiplier);
if (s == p && *s != '\0')
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56'*/
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56' */
return -EINVAL;
p = s;
@ -1058,7 +1058,7 @@ int parse_time(const char *t, usec_t *usec, usec_t default_unit) {
r += k;
}
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge"*/
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge" */
if (b == e + 1)
return -EINVAL;
}
@ -1205,7 +1205,7 @@ int parse_nsec(const char *t, nsec_t *nsec) {
s = extract_nsec_multiplier(p + strspn(p, WHITESPACE), &multiplier);
if (s == p && *s != '\0')
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56'*/
/* Don't allow '12.34.56', but accept '12.34 .56' or '12.34s.56' */
return -EINVAL;
p = s;
@ -1233,7 +1233,7 @@ int parse_nsec(const char *t, nsec_t *nsec) {
r += k;
}
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge"*/
/* Don't allow "0.-0", "3.+1", "3. 1", "3.sec" or "3.hoge" */
if (b == e + 1)
return -EINVAL;
}
@ -1438,7 +1438,7 @@ int get_timezone(char **ret) {
r = readlink_malloc("/etc/localtime", &t);
if (r == -ENOENT) {
/* If the symlink does not exist, assume "UTC", like glibc does*/
/* If the symlink does not exist, assume "UTC", like glibc does */
z = strdup("UTC");
if (!z)
return -ENOMEM;

View File

@ -2450,7 +2450,7 @@ static int setup_exec_directory(
/* Then, change the ownership of the whole tree, if necessary. When dynamic users are used we
* drop the suid/sgid bits, since we really don't want SUID/SGID files for dynamic UID/GID
* assignments to exist.*/
* assignments to exist. */
r = path_chown_recursive(pp ?: p, uid, gid, context->dynamic_user ? 01777 : 07777);
if (r < 0)
goto fail;
@ -2886,7 +2886,7 @@ static int setup_credentials(
* Yes it's nasty playing games with /dev/ and /dev/shm/ like this, since it does not exist
* for this purpose, but there are few other candidates that work equally well for us, and
* given that the we do this in a privately namespaced short-lived single-threaded process
* that no one else sees this should be OK to do.*/
* that no one else sees this should be OK to do. */
r = mount_nofollow_verbose(LOG_DEBUG, NULL, "/dev", NULL, MS_SLAVE|MS_REC, NULL); /* Turn off propagation from our namespace to host */
if (r < 0)
@ -3836,7 +3836,7 @@ static int exec_child(
_cleanup_strv_free_ char **suggested_paths = NULL;
/* On top of that, make sure we bypass our own NSS module nss-systemd comprehensively for any NSS
* checks, if DynamicUser=1 is used, as we shouldn't create a feedback loop with ourselves here.*/
* checks, if DynamicUser=1 is used, as we shouldn't create a feedback loop with ourselves here. */
if (putenv((char*) "SYSTEMD_NSS_DYNAMIC_BYPASS=1") != 0) {
*exit_status = EXIT_USER;
return log_unit_error_errno(unit, errno, "Failed to update environment: %m");

View File

@ -3791,7 +3791,7 @@ int manager_reload(Manager *m) {
/* Start by flushing out all jobs and units, all generated units, all runtime environments, all dynamic users
* and everything else that is worth flushing out. We'll get it all back from the serialization if we need
* it.*/
* it. */
manager_clear_jobs_and_units(m);
lookup_paths_flush_generator(&m->lookup_paths);
@ -3927,7 +3927,7 @@ static void manager_notify_finished(Manager *m) {
if (dual_timestamp_is_set(&m->timestamps[MANAGER_TIMESTAMP_INITRD])) {
/* The initrd case on bare-metal*/
/* The initrd case on bare-metal */
kernel_usec = m->timestamps[MANAGER_TIMESTAMP_INITRD].monotonic - m->timestamps[MANAGER_TIMESTAMP_KERNEL].monotonic;
initrd_usec = m->timestamps[MANAGER_TIMESTAMP_USERSPACE].monotonic - m->timestamps[MANAGER_TIMESTAMP_INITRD].monotonic;
@ -3943,7 +3943,7 @@ static void manager_notify_finished(Manager *m) {
format_timespan(userspace, sizeof(userspace), userspace_usec, USEC_PER_MSEC),
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC)));
} else {
/* The initrd-less case on bare-metal*/
/* The initrd-less case on bare-metal */
kernel_usec = m->timestamps[MANAGER_TIMESTAMP_USERSPACE].monotonic - m->timestamps[MANAGER_TIMESTAMP_KERNEL].monotonic;
initrd_usec = 0;

View File

@ -1584,7 +1584,7 @@ static int mount_setup_new_unit(
/* This unit was generated because /proc/self/mountinfo reported it. Remember this, so that by the time we load
* the unit file for it (and thus add in extra deps right after) we know what source to attributes the deps
* to.*/
* to. */
MOUNT(u)->from_proc_self_mountinfo = true;
/* We have only allocated the stub now, let's enqueue this unit for loading now, so that everything else is

View File

@ -668,7 +668,8 @@ static int service_setup_bus_name(Service *s) {
assert(s);
if (s->type != SERVICE_DBUS)
/* If s->bus_name is not set, then the unit will be refused by service_verify() later. */
if (s->type != SERVICE_DBUS || !s->bus_name)
return 0;
r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, true, UNIT_DEPENDENCY_FILE);

View File

@ -2075,7 +2075,7 @@ bool unit_is_bound_by_inactive(Unit *u, Unit **ret_culprit) {
assert(u);
/* Checks whether this unit is bound to another unit that is inactive, i.e. whether we should stop
* because the other unit is down.*/
* because the other unit is down. */
if (unit_active_state(u) != UNIT_ACTIVE || u->job) {
/* Don't clean up while the unit is transitioning or is even inactive. */

View File

@ -287,7 +287,7 @@ static int module_callback(Dwfl_Module *mod, void **userdata, const char *name,
GElf_Phdr mem, *program_header;
Elf_Data *data;
/* The core file stores the ELF files in the PT_LOAD segment .*/
/* The core file stores the ELF files in the PT_LOAD segment. */
program_header = gelf_getphdr(c->elf, i, &mem);
if (!program_header || program_header->p_type != PT_LOAD)
continue;

View File

@ -1109,7 +1109,7 @@ static int attach_luks_or_plain_or_bitlk_by_tpm2(
&keyslot,
&token);
if (r == -ENXIO)
/* No further TPM2 tokens found in the LUKS2 header.*/
/* No further TPM2 tokens found in the LUKS2 header. */
return log_debug_errno(SYNTHETIC_ERRNO(EAGAIN),
found_some
? "No TPM2 metadata matching the current system state found in LUKS2 header, falling back to traditional unlocking."

View File

@ -84,7 +84,7 @@ struct Home {
/* Note that the 'state' field is only set to a state while we are doing something (i.e. activating,
* deactivating, creating, removing, and such), or when the home is an "unfixated" one. When we are
* done with an operation we invalidate the state. This is hint for home_get_state() to check the
* state on request as needed from the mount table and similar.*/
* state on request as needed from the mount table and similar. */
HomeState state;
int signed_locally; /* signed only by us */

View File

@ -40,7 +40,7 @@
/* Round down to the nearest 1K size. Note that Linux generally handles block devices with 512 blocks only,
* but actually doesn't accept uneven numbers in many cases. To avoid any confusion around this we'll
* strictly round disk sizes down to the next 1K boundary.*/
* strictly round disk sizes down to the next 1K boundary. */
#define DISK_SIZE_ROUND_DOWN(x) ((x) & ~UINT64_C(1023))
int run_mark_dirty(int fd, bool b) {

View File

@ -199,7 +199,7 @@ int user_record_reconcile(
if (!user_record_compatible(host, embedded))
return -EREMCHG;
/* Embedded identities may not contain secrets or binding info*/
/* Embedded identities may not contain secrets or binding info */
if ((embedded->mask & (USER_RECORD_SECRET|USER_RECORD_BINDING)) != 0)
return -EINVAL;

View File

@ -242,7 +242,7 @@ void server_space_usage_message(Server *s, JournalStorage *storage) {
static bool uid_for_system_journal(uid_t uid) {
/* Returns true if the specified UID shall get its data stored in the system journal*/
/* Returns true if the specified UID shall get its data stored in the system journal. */
return uid_is_system(uid) || uid_is_dynamic(uid) || uid == UID_NOBODY;
}

View File

@ -1526,7 +1526,7 @@ int bus_set_address_machine(sd_bus *b, bool user, const char *machine) {
* since the --user socket path depends on $XDG_RUNTIME_DIR which is set via PAM. Thus, to be
* able to connect, we need to have a PAM session. Our way out? We use systemd-run to get
* into the container and acquire a PAM session there, and then invoke systemd-stdio-bridge
* in it, which propagates the bus transport to us.*/
* in it, which propagates the bus transport to us. */
if (rhs) {
if (rhs > machine)

View File

@ -2854,7 +2854,7 @@ int journal_file_compare_locations(JournalFile *af, JournalFile *bf) {
assert(bf->location_type == LOCATION_SEEK);
/* If contents, timestamps and seqnum match, these entries are
* identical*/
* identical. */
if (sd_id128_equal(af->current_boot_id, bf->current_boot_id) &&
af->current_monotonic == bf->current_monotonic &&
af->current_realtime == bf->current_realtime &&

View File

@ -167,7 +167,7 @@ static int do_umount(const char *user) {
int r;
/* The user may be already removed. So, first try to parse the string by parse_uid(),
* and if it fails, fall back to get_user_creds().*/
* and if it fails, fall back to get_user_creds(). */
if (parse_uid(user, &uid) < 0) {
r = get_user_creds(&user, &uid, NULL, NULL, NULL, 0);
if (r < 0)

View File

@ -2126,7 +2126,7 @@ static int link_update_name(Link *link, sd_netlink_message *message) {
r = sd_netlink_message_read_string(message, IFLA_IFNAME, &ifname);
if (r == -ENODATA)
/* Hmm?? But ok.*/
/* Hmm?? But ok. */
return 0;
if (r < 0)
return log_link_debug_errno(link, r, "Failed to read interface name in RTM_NEWLINK message: %m");

View File

@ -41,7 +41,7 @@ static bool link_lldp_rx_enabled(Link *link) {
/* LLDP should be handled on bridge and bond slaves as those have a direct connection to their peers,
* not on the bridge/bond master. Linux doesn't even (by default) forward lldp packets to the bridge
* master.*/
* master. */
if (link->kind && STR_IN_SET(link->kind, "bridge", "bond"))
return false;

View File

@ -85,7 +85,7 @@ struct Manager {
Hashmap *route_table_numbers_by_name;
Hashmap *route_table_names_by_number;
/* For link speed meter*/
/* For link speed meter */
bool use_speed_meter;
sd_event_source *speed_meter_event_source;
usec_t speed_meter_interval_usec;

View File

@ -160,7 +160,7 @@ struct Network {
OrderedHashmap *dhcp_client_send_options;
OrderedHashmap *dhcp_client_send_vendor_options;
/* DHCPv6 Client support*/
/* DHCPv6 Client support */
bool dhcp6_use_address;
bool dhcp6_use_dns;
bool dhcp6_use_dns_set;

View File

@ -390,7 +390,7 @@ static int link_configure(
return log_link_debug_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
if (!link->network->bridge) {
/* master needs BRIDGE_FLAGS_SELF flag*/
/* master needs BRIDGE_FLAGS_SELF flag */
r = sd_netlink_message_append_u16(req, IFLA_BRIDGE_FLAGS, BRIDGE_FLAGS_SELF);
if (r < 0)
return log_link_debug_errno(link, r, "Could not append IFLA_BRIDGE_FLAGS attribute: %m");

View File

@ -3688,7 +3688,7 @@ static int outer_child(
* --volatile=) without this interfering with our ability to access files such as
* /etc/localtime to copy into the container. Note that we use a fixed place for this
* (instead of a temporary directory, since we are living in our own mount namspace here
* already, and thus don't need to be afraid of colliding with anyone else's mounts).*/
* already, and thus don't need to be afraid of colliding with anyone else's mounts). */
(void) mkdir_p("/run/systemd/nspawn-root", 0755);
r = mount_nofollow_verbose(LOG_ERR, "/", "/run/systemd/nspawn-root", NULL, MS_BIND|MS_REC, NULL);

View File

@ -4952,7 +4952,7 @@ static int run(int argc, char *argv[]) {
r = context_open_copy_block_paths(
context,
arg_root,
loop_device ? loop_device->devno : /* if --image= is specified, only allow partitions on the loopback device*/
loop_device ? loop_device->devno : /* if --image= is specified, only allow partitions on the loopback device */
arg_root && !arg_image ? 0 : /* if --root= is specified, don't accept any block device */
(dev_t) -1); /* if neither is specified, make no restrictions */
if (r < 0)

View File

@ -1102,7 +1102,7 @@ int dns_query_process_cname_one(DnsQuery *q) {
* Hence we first check of the answers we collected are sufficient to answer all our questions
* directly. If one question wasn't answered we go on, waiting for more replies. However, if there's
* a CNAME/DNAME response we use it, and redirect to it, regardless if it was a response to the A or
* the AAAA query.*/
* the AAAA query. */
DNS_QUESTION_FOREACH(k, question) {
bool match = false;
@ -1276,12 +1276,12 @@ bool dns_query_fully_authoritative(DnsQuery *q) {
/* We are authoritative for everything synthetic (except if a previous CNAME/DNAME) wasn't
* synthetic. (Note: SD_RESOLVED_SYNTHETIC is reset on each CNAME/DNAME, hence the explicit check for
* previous synthetic DNAME/CNAME redirections.)*/
* previous synthetic DNAME/CNAME redirections.) */
if ((q->answer_query_flags & SD_RESOLVED_SYNTHETIC) && !q->previous_redirect_non_synthetic)
return true;
/* We are also authoritative for everything coming only from the trust anchor and the local
* zones. (Note: the SD_RESOLVED_FROM_xyz flags we merge on each redirect, hence no need to
* explicitly check previous redirects here.)*/
* explicitly check previous redirects here.) */
return (q->answer_query_flags & SD_RESOLVED_FROM_MASK & ~(SD_RESOLVED_FROM_TRUST_ANCHOR | SD_RESOLVED_FROM_ZONE)) == 0;
}

View File

@ -2136,7 +2136,7 @@ int table_print(Table *t, FILE *f) {
/* Never give more than requested. If we hit a column like this, there's more
* space to allocate to other columns which means we need to restart the
* iteration. However, if we hit a column like this, let's assign it the space
* it wanted for good early.*/
* it wanted for good early. */
w = requested_width[j];
restart = true;

View File

@ -560,7 +560,7 @@ static int umount_with_timeout(MountPoint *m, int umount_log_level) {
* rather than blocking indefinitely. If the filesysten is
* "busy", this may allow processes to die, thus making the
* filesystem less busy so the unmount might succeed (rather
* then return EBUSY).*/
* than return EBUSY). */
r = umount2(m->path, MNT_FORCE);
if (r < 0)
log_full_errno(umount_log_level, errno, "Failed to unmount %s: %m", m->path);

View File

@ -281,7 +281,7 @@ static int make_backup(const char *target, const char *x) {
if (rename(dst_tmp, backup) < 0)
return errno;
dst_tmp = mfree(dst_tmp); /* disable the unlink_and_freep() hook now that the file has been renamed*/
dst_tmp = mfree(dst_tmp); /* disable the unlink_and_freep() hook now that the file has been renamed */
return 0;
}

View File

@ -827,7 +827,7 @@ static void test_path_is_encrypted(void) {
int booted = sd_booted(); /* If this is run in build environments such as koji, /dev might be a
* reguar fs. Don't assume too much if not running under systemd. */
log_info("/* %s (sd_booted=%d)*/", __func__, booted);
log_info("/* %s (sd_booted=%d) */", __func__, booted);
test_path_is_encrypted_one("/home", -1);
test_path_is_encrypted_one("/var", -1);

View File

@ -36,7 +36,7 @@ static void test_make_salt(void) {
static int test_hash_password(void) {
log_info("/* %s */", __func__);
/* As a warmup exercise, check if we can hash passwords. */
/* As a warm-up exercise, check if we can hash passwords. */
bool have_sane_hash = false;
const char *hash;

View File

@ -913,7 +913,7 @@ static void test_filename_is_valid(void) {
}
static void test_path_is_valid_and_safe_one(const char *p, bool ret) {
log_debug("/* %s(\"%s\")*/", __func__, strnull(p));
log_debug("/* %s(\"%s\") */", __func__, strnull(p));
assert_se(path_is_valid(p) == ret);
if (ret)

View File

@ -23,7 +23,7 @@ static void test_read_mem_pressure(void) {
assert_se(write_string_file(path, "herpdederp\n", WRITE_STRING_FILE_CREATE) == 0);
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0);
/* Pressure file with some invalid values*/
/* Pressure file with some invalid values */
assert_se(write_string_file(path, "some avg10=0.22=55 avg60=0.17=8 avg300=1.11=00 total=58761459\n"
"full avg10=0.23=55 avg60=0.16=8 avg300=1.08=00 total=58464525", WRITE_STRING_FILE_CREATE) == 0);
assert_se(read_resource_pressure(path, PRESSURE_TYPE_SOME, &rp) < 0);

View File

@ -35,7 +35,7 @@ struct range {
unsigned end;
};
/* key code ranges above BTN_MISC (start is inclusive, stop is exclusive)*/
/* key code ranges above BTN_MISC (start is inclusive, stop is exclusive) */
static const struct range high_key_blocks[] = {
{ KEY_OK, BTN_DPAD_UP },
{ KEY_ALS_TOGGLE, BTN_TRIGGER_HAPPY }

View File

@ -282,7 +282,7 @@ static sd_device *handle_scsi_ata(sd_device *parent, char **path, char **compat_
return NULL;
if (bus != 0)
/* Devices behind port multiplier have a bus != 0*/
/* Devices behind port multiplier have a bus != 0 */
path_prepend(path, "ata-%s.%u.0", port_no, bus);
else
/* Master/slave are distinguished by target id */

View File

@ -560,7 +560,7 @@ static int worker_main(Manager *_manager, sd_device_monitor *monitor, sd_device
if (r < 0)
log_debug_errno(r, "Failed to reset OOM score, ignoring: %m");
/* Clear unnecessary data in Manager object.*/
/* Clear unnecessary data in Manager object. */
manager_clear_for_worker(manager);
r = sd_event_new(&manager->event);

View File

@ -65,6 +65,10 @@ test -f /run/dbus1
systemd-run --unit=dbus2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p BusName=systemd.test.ExecStopPost -p ExecStopPost='/bin/touch /run/dbus2' true
test -f /run/dbus2
# https://github.com/systemd/systemd/issues/19920
systemd-run --unit=dbus3.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p ExecStopPost='/bin/touch /run/dbus3' true \
&& { echo 'unexpected success'; exit 1; }
cat >/tmp/notify1.sh <<EOF
#!/usr/bin/env bash

View File

@ -9,7 +9,7 @@
[Unit]
Description=Dispatch Password Requests to Console Directory Watch
Documentation=man:systemd-ask-password-console.service(8)
Documentation=man:systemd-ask-password-console.path(8)
DefaultDependencies=no
Conflicts=shutdown.target emergency.service
After=plymouth-start.service

View File

@ -9,7 +9,7 @@
[Unit]
Description=Forward Password Requests to Wall Directory Watch
Documentation=man:systemd-ask-password-console.service(8)
Documentation=man:systemd-ask-password-wall.path(8)
DefaultDependencies=no
Conflicts=shutdown.target emergency.service
Before=paths.target shutdown.target cryptsetup.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=Forward Password Requests to Wall
Documentation=man:systemd-ask-password-console.service(8)
Documentation=man:systemd-ask-password-wall.service(8)
After=systemd-user-sessions.service
[Service]

View File

@ -9,7 +9,7 @@
[Unit]
Description=Hibernate
Documentation=man:systemd-suspend.service(8)
Documentation=man:systemd-hibernate.service(8)
DefaultDependencies=no
Requires=sleep.target
After=sleep.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=Hybrid Suspend+Hibernate
Documentation=man:systemd-suspend.service(8)
Documentation=man:systemd-hybrid-sleep.service(8)
DefaultDependencies=no
Requires=sleep.target
After=sleep.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=initctl Compatibility Named Pipe
Documentation=man:systemd-initctl.service(8)
Documentation=man:systemd-initctl.socket(8)
DefaultDependencies=no
Before=sockets.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=Reboot via kexec
Documentation=man:systemd-halt.service(8)
Documentation=man:systemd-kexec.service(8)
DefaultDependencies=no
Requires=shutdown.target umount.target final.target
After=shutdown.target umount.target final.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=Power-Off
Documentation=man:systemd-halt.service(8)
Documentation=man:systemd-poweroff.service(8)
DefaultDependencies=no
Requires=shutdown.target umount.target final.target
After=shutdown.target umount.target final.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=Reboot
Documentation=man:systemd-halt.service(8)
Documentation=man:systemd-reboot.service(8)
DefaultDependencies=no
Requires=shutdown.target umount.target final.target
After=shutdown.target umount.target final.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=Suspend; Hibernate if not used for a period of time
Documentation=man:systemd-suspend.service(8)
Documentation=man:systemd-suspend-then-hibernate.service(8)
DefaultDependencies=no
Requires=sleep.target
After=sleep.target

View File

@ -9,7 +9,7 @@
[Unit]
Description=udev Control Socket
Documentation=man:systemd-udevd.service(8) man:udev(7)
Documentation=man:systemd-udevd-control.socket(8) man:udev(7)
DefaultDependencies=no
Before=sockets.target
ConditionPathIsReadWrite=/sys

View File

@ -9,7 +9,7 @@
[Unit]
Description=udev Kernel Socket
Documentation=man:systemd-udevd.service(8) man:udev(7)
Documentation=man:systemd-udevd-kernel.socket(8) man:udev(7)
DefaultDependencies=no
Before=sockets.target
ConditionPathIsReadWrite=/sys

View File

@ -9,7 +9,7 @@
[Unit]
Description=Update UTMP about System Runlevel Changes
Documentation=man:systemd-update-utmp.service(8) man:utmp(5)
Documentation=man:systemd-update-utmp-runlevel.service(8) man:utmp(5)
DefaultDependencies=no
RequiresMountsFor=/var/log/wtmp
Conflicts=shutdown.target