ev.data.fd = fd;
r = epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ev);
if (r < 0) {
- log_error("Failed to add event on epoll fd:%d for fd:%d: %m", epoll_fd, fd);
+ log_error_errno(errno, "Failed to add event on epoll fd:%d for fd:%d: %m", epoll_fd, fd);
return -errno;
}
*epoll_fd = epoll_create1(EPOLL_CLOEXEC);
if (*epoll_fd < 0) {
- log_error("Failed to create epoll object: %m");
+ log_error_errno(errno, "Failed to create epoll object: %m");
return -errno;
}
log_info("Execing %s (%s)", name, tmp);
execvpe(name, argv, envp);
- log_error("Failed to execp %s (%s): %m", name, tmp);
+ log_error_errno(errno, "Failed to execp %s (%s): %m", name, tmp);
return -errno;
}
child_pid = fork();
if (child_pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return -errno;
}
if (child_pid == 0) {
r = dup2(fd, STDIN_FILENO);
if (r < 0) {
- log_error("Failed to dup connection to stdin: %m");
+ log_error_errno(errno, "Failed to dup connection to stdin: %m");
_exit(EXIT_FAILURE);
}
r = dup2(fd, STDOUT_FILENO);
if (r < 0) {
- log_error("Failed to dup connection to stdout: %m");
+ log_error_errno(errno, "Failed to dup connection to stdout: %m");
_exit(EXIT_FAILURE);
}
r = close(fd);
if (r < 0) {
- log_error("Failed to close dupped connection: %m");
+ log_error_errno(errno, "Failed to close dupped connection: %m");
_exit(EXIT_FAILURE);
}
_exit(EXIT_SUCCESS);
execvp(child, argv);
- log_error("Failed to exec child %s: %m", child);
+ log_error_errno(errno, "Failed to exec child %s: %m", child);
_exit(EXIT_FAILURE);
}
fd2 = accept(fd, NULL, NULL);
if (fd2 < 0) {
- log_error("Failed to accept connection on fd:%d: %m", fd);
+ log_error_errno(errno, "Failed to accept connection on fd:%d: %m", fd);
return fd2;
}
r = sigaction(SIGCHLD, &act, 0);
if (r < 0)
- log_error("Failed to install SIGCHLD handler: %m");
+ log_error_errno(errno, "Failed to install SIGCHLD handler: %m");
return r;
}
if (errno == EINTR)
continue;
- log_error("epoll_wait() failed: %m");
+ log_error_errno(errno, "epoll_wait() failed: %m");
return EXIT_FAILURE;
}
device = udev_device_new_from_subsystem_sysname(udev, ss, sysname);
if (!device) {
if (errno != 0)
- log_error("Failed to get backlight or LED device '%s:%s': %m", ss, sysname);
+ log_error_errno(errno, "Failed to get backlight or LED device '%s:%s': %m", ss, sysname);
else
log_oom();
if (feof(f))
break;
- log_error("Failed to read file '%s', ignoring: %m", path);
+ log_error_errno(errno, "Failed to read file '%s', ignoring: %m", path);
return -errno;
}
f = open(file, O_RDONLY|O_CLOEXEC);
if (f < 0) {
- log_error("Failed to read bootchart data: %m");
+ log_error_errno(errno, "Failed to read bootchart data: %m");
return;
}
n = loop_read(f, p + 10, BOOTCHART_MAX, false);
/* caught signal, probably HUP! */
break;
}
- log_error("nanosleep() failed: %m");
+ log_error_errno(errno, "nanosleep() failed: %m");
exit(EXIT_FAILURE);
}
} else {
/* block stuff */
vmstat = openat(procfd, "vmstat", O_RDONLY);
if (vmstat == -1) {
- log_error("Failed to open /proc/vmstat: %m");
+ log_error_errno(errno, "Failed to open /proc/vmstat: %m");
exit(EXIT_FAILURE);
}
}
/* overall CPU utilization */
schedstat = openat(procfd, "schedstat", O_RDONLY);
if (schedstat == -1) {
- log_error("Failed to open /proc/schedstat: %m");
+ log_error_errno(errno, "Failed to open /proc/schedstat: %m");
exit(EXIT_FAILURE);
}
}
r = ppoll(pollfd, 3, ts, NULL);
if (r < 0) {
- log_error("ppoll() failed: %m");
+ log_error_errno(errno, "ppoll() failed: %m");
goto finish;
}
}
p = get_current_dir_name();
if (!p) {
- log_error("Cannot determine current working directory: %m");
+ log_error_errno(errno, "Cannot determine current working directory: %m");
goto finish;
}
setenv("COLORTERM", "systemd-console", 1);
execve(argv[0], argv, environ);
- log_error("Cannot exec %s (%d): %m", argv[0], -errno);
+ log_error_errno(errno, "Cannot exec %s (%d): %m", argv[0], -errno);
_exit(1);
}
}
if (audit_fd < 0) {
if (errno != EAFNOSUPPORT && errno != EPROTONOSUPPORT)
- log_error("Failed to connect to audit log: %m");
+ log_error_errno(errno, "Failed to connect to audit log: %m");
audit_fd = errno ? -errno : -EINVAL;
}
continue;
if (errno != EINVAL)
- log_error("Failed to unmount: %m");
+ log_error_errno(errno, "Failed to unmount: %m");
break;
}
m->dev_autofs_fd = open("/dev/autofs", O_CLOEXEC|O_RDONLY);
if (m->dev_autofs_fd < 0) {
- log_error("Failed to open /dev/autofs: %m");
+ log_error_errno(errno, "Failed to open /dev/autofs: %m");
return -errno;
}
r = stat(p, &st);
if (r < 0) {
- log_warning("Couldn't stat device %s: %m", p);
+ log_warning_errno(errno, "Couldn't stat device %s: %m", p);
return -errno;
}
f = fopen("/proc/devices", "re");
if (!f) {
- log_warning("Cannot open /proc/devices to resolve %s (%c): %m", name, type);
+ log_warning_errno(errno, "Cannot open /proc/devices to resolve %s (%c): %m", name, type);
return -errno;
}
return 0;
fail:
- log_warning("Failed to read /proc/devices: %m");
+ log_warning_errno(errno, "Failed to read /proc/devices: %m");
return -errno;
}
m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
if (m->pin_cgroupfs_fd < 0) {
- log_error("Failed to open pin file: %m");
+ log_error_errno(errno, "Failed to open pin file: %m");
return -errno;
}
nfd = accept4(fd, NULL, NULL, SOCK_NONBLOCK|SOCK_CLOEXEC);
if (nfd < 0) {
- log_warning("Failed to accept private connection, ignoring: %m");
+ log_warning_errno(errno, "Failed to accept private connection, ignoring: %m");
return 0;
}
fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (fd < 0) {
- log_error("Failed to allocate private socket: %m");
+ log_error_errno(errno, "Failed to allocate private socket: %m");
return -errno;
}
r = bind(fd, &sa.sa, salen);
if (r < 0) {
- log_error("Failed to bind private socket: %m");
+ log_error_errno(errno, "Failed to bind private socket: %m");
return -errno;
}
r = listen(fd, SOMAXCONN);
if (r < 0) {
- log_error("Failed to make private socket listening: %m");
+ log_error_errno(errno, "Failed to make private socket listening: %m");
return -errno;
}
static RATELIMIT_DEFINE(limit, 10*USEC_PER_SEC, 5);
if (!ratelimit_test(&limit))
- log_error("Failed to get udev event: %m");
+ log_error_errno(errno, "Failed to get udev event: %m");
if (!(revents & EPOLLIN))
return 0;
}
log_error("PAM failed: %s", pam_strerror(handle, pam_code));
err = -EPERM; /* PAM errors do not map to errno */
} else {
- log_error("PAM failed: %m");
+ log_error_errno(errno, "PAM failed: %m");
err = -errno;
}
}
if (sethostname_idempotent(hn) < 0) {
- log_warning("Failed to set hostname to <%s>: %m", hn);
+ log_warning_errno(errno, "Failed to set hostname to <%s>: %m", hn);
return -errno;
}
}
if (stat(IMA_SECFS_POLICY, &st) < 0) {
- log_error("Another IMA custom policy has already been loaded, "
- "ignoring.");
+ log_error("Another IMA custom policy has already been loaded, ignoring.");
return 0;
}
policyfd = open(IMA_POLICY_PATH, O_RDONLY|O_CLOEXEC);
if (policyfd < 0) {
- log_error("Failed to open the IMA custom policy file %s (%m), "
- "ignoring.", IMA_POLICY_PATH);
+ log_error_errno(errno, "Failed to open the IMA custom policy file %s (%m), ignoring.",
+ IMA_POLICY_PATH);
return 0;
}
imafd = open(IMA_SECFS_POLICY, O_WRONLY|O_CLOEXEC);
if (imafd < 0) {
- log_error("Failed to open the IMA kernel interface %s (%m), "
- "ignoring.", IMA_SECFS_POLICY);
+ log_error_errno(errno, "Failed to open the IMA kernel interface %s (%m), ignoring.",
+ IMA_SECFS_POLICY);
goto out;
}
policy = mmap(NULL, policy_size, PROT_READ, MAP_PRIVATE, policyfd, 0);
if (policy == MAP_FAILED) {
- log_error("mmap() failed (%m), freezing");
+ log_error_errno(errno, "mmap() failed (%m), freezing");
result = -errno;
goto out;
}
written = loop_write(imafd, policy, (size_t)policy_size, false);
if (written != policy_size) {
- log_error("Failed to load the IMA custom policy file %s (%m), "
- "ignoring.", IMA_POLICY_PATH);
+ log_error_errno(errno, "Failed to load the IMA custom policy file %s (%m), ignoring.",
+ IMA_POLICY_PATH);
goto out_mmap;
}
if (errno == ECHILD)
break;
- log_error("waitpid() failed: %m");
+ log_error_errno(errno, "waitpid() failed: %m");
return;
}
if (k != SIGCHLD) {
if (k < 0 && errno != EAGAIN) {
- log_error("sigtimedwait() failed: %m");
+ log_error_errno(errno, "sigtimedwait() failed: %m");
return;
}
if (pids)
set_put(pids, ULONG_TO_PTR(pid));
} else if (errno != ENOENT)
- log_warning("Could not kill %d: %m", pid);
+ log_warning_errno(errno, "Could not kill %d: %m", pid);
if (send_sighup) {
/* Optionally, also send a SIGHUP signal, but
assert_se(sigprocmask(SIG_BLOCK, &mask, &oldmask) == 0);
if (kill(-1, SIGSTOP) < 0 && errno != ESRCH)
- log_warning("kill(-1, SIGSTOP) failed: %m");
+ log_warning_errno(errno, "kill(-1, SIGSTOP) failed: %m");
killall(sig, pids, send_sighup);
if (kill(-1, SIGCONT) < 0 && errno != ESRCH)
- log_warning("kill(-1, SIGCONT) failed: %m");
+ log_warning_errno(errno, "kill(-1, SIGCONT) failed: %m");
if (wait_for_exit)
wait_for_children(pids, &mask);
if (errno == ENOENT)
return 0;
- log_error("Failed to open directory %s: %m", path);
+ log_error_errno(errno, "Failed to open directory %s: %m", path);
return -errno;
}
"2) /etc/machine-id exists and is empty.\n"
"3) /etc/machine-id is missing and /etc is writable.\n");
else
- log_error("Cannot open %s: %m", etc_machine_id);
+ log_error_errno(errno, "Cannot open %s: %m", etc_machine_id);
return -errno;
}
}
if (fstat(fd, &st) < 0) {
- log_error("fstat() failed: %m");
+ log_error_errno(errno, "fstat() failed: %m");
return -errno;
}
/* And now, let's mount it over */
r = mount(run_machine_id, etc_machine_id, NULL, MS_BIND, NULL);
if (r < 0) {
- log_error("Failed to mount %s: %m", etc_machine_id);
+ log_error_errno(errno, "Failed to mount %s: %m", etc_machine_id);
unlink_noerrno(run_machine_id);
return -errno;
}
/* Mark the mount read-only */
if (mount(NULL, etc_machine_id, NULL, MS_BIND|MS_RDONLY|MS_REMOUNT, NULL) < 0)
- log_warning("Failed to make transient %s read-only: %m", etc_machine_id);
+ log_warning_errno(errno, "Failed to make transient %s read-only: %m", etc_machine_id);
return 0;
}
pid = fork();
if (pid < 0)
- log_emergency("Caught <%s>, cannot fork for core dump: %m", signal_to_string(sig));
+ log_emergency_errno(errno, "Caught <%s>, cannot fork for core dump: %m", signal_to_string(sig));
else if (pid == 0) {
struct rlimit rl = {};
pid = fork();
if (pid < 0)
- log_emergency("Failed to fork off crash shell: %m");
+ log_emergency_errno(errno, "Failed to fork off crash shell: %m");
else if (pid == 0) {
make_console_stdio();
execl("/bin/sh", "/bin/sh", NULL);
- log_emergency("execl() failed: %m");
+ log_emergency_errno(errno, "execl() failed: %m");
_exit(1);
}
f = fdopen(fd, "r");
if (!f) {
- log_error("Failed to open serialization fd: %m");
+ log_error_errno(errno, "Failed to open serialization fd: %m");
return -errno;
}
}
if (fseeko(f, 0, SEEK_SET) < 0) {
- log_error("Failed to rewind serialization fd: %m");
+ log_error_errno(errno, "Failed to rewind serialization fd: %m");
goto fail;
}
* later when transitioning from the initrd to the main
* systemd or suchlike. */
if (getrlimit(RLIMIT_NOFILE, saved_rlimit) < 0) {
- log_error("Reading RLIMIT_NOFILE failed: %m");
+ log_error_errno(errno, "Reading RLIMIT_NOFILE failed: %m");
return -errno;
}
errno = -ENOENT;
execv(SYSTEMCTL_BINARY_PATH, argv);
- log_error("Failed to exec " SYSTEMCTL_BINARY_PATH ": %m");
+ log_error_errno(errno, "Failed to exec " SYSTEMCTL_BINARY_PATH ": %m");
return 1;
}
#endif
if (arg_timer_slack_nsec != NSEC_INFINITY)
if (prctl(PR_SET_TIMERSLACK, arg_timer_slack_nsec) < 0)
- log_error("Failed to adjust timer slack: %m");
+ log_error_errno(errno, "Failed to adjust timer slack: %m");
if (arg_capability_bounding_set_drop) {
r = capability_bounding_set_drop_usermode(arg_capability_bounding_set_drop);
if (arg_running_as == SYSTEMD_USER) {
/* Become reaper of our children */
if (prctl(PR_SET_CHILD_SUBREAPER, 1) < 0) {
- log_warning("Failed to make us a subreaper: %m");
+ log_warning_errno(errno, "Failed to make us a subreaper: %m");
if (errno == EINVAL)
log_info("Perhaps the kernel version is too old (< 3.4?)");
}
if (switch_root_init) {
args[0] = switch_root_init;
execv(args[0], (char* const*) args);
- log_warning("Failed to execute configured init, trying fallback: %m");
+ log_warning_errno(errno, "Failed to execute configured init, trying fallback: %m");
}
args[0] = "/sbin/init";
args[0] = "/bin/sh";
args[1] = NULL;
execv(args[0], (char* const*) args);
- log_error("Failed to execute /bin/sh, giving up: %m");
+ log_error_errno(errno, "Failed to execute /bin/sh, giving up: %m");
} else
- log_warning("Failed to execute /sbin/init, giving up: %m");
+ log_warning_errno(errno, "Failed to execute /sbin/init, giving up: %m");
}
if (arg_serialization) {
cg_uninstall_release_agent(SYSTEMD_CGROUP_CONTROLLER);
execve(SYSTEMD_SHUTDOWN_BINARY_PATH, (char **) command_line, env_block);
- log_error("Failed to execute shutdown binary, %s: %m",
+ log_error_errno(errno, "Failed to execute shutdown binary, %s: %m",
getpid() == 1 ? "freezing" : "quitting");
}
m->ask_password_inotify_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC);
if (m->ask_password_inotify_fd < 0) {
- log_error("inotify_init1() failed: %m");
+ log_error_errno(errno, "inotify_init1() failed: %m");
return -errno;
}
if (inotify_add_watch(m->ask_password_inotify_fd, "/run/systemd/ask-password", IN_CREATE|IN_DELETE|IN_MOVE) < 0) {
- log_error("Failed to add watch on /run/systemd/ask-password: %m");
+ log_error_errno(errno, "Failed to add watch on /run/systemd/ask-password: %m");
manager_close_ask_password(m);
return -errno;
}
m->ask_password_inotify_fd, EPOLLIN,
manager_dispatch_ask_password_fd, m);
if (r < 0) {
- log_error("Failed to add event source for /run/systemd/ask-password: %m");
+ log_error_errno(errno, "Failed to add event source for /run/systemd/ask-password: %m");
manager_close_ask_password(m);
return -errno;
}
m->time_change_fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC);
if (m->time_change_fd < 0) {
- log_error("Failed to create timerfd: %m");
+ log_error_errno(errno, "Failed to create timerfd: %m");
return -errno;
}
if (timerfd_settime(m->time_change_fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) {
- log_debug("Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m");
+ log_debug_errno(errno, "Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m");
m->time_change_fd = safe_close(m->time_change_fd);
return 0;
}
* this will fail with EPERM (older) or EINVAL (newer), so
* ignore that. */
if (reboot(RB_DISABLE_CAD) < 0 && errno != EPERM && errno != EINVAL)
- log_warning("Failed to enable ctrl-alt-del handling: %m");
+ log_warning_errno(errno, "Failed to enable ctrl-alt-del handling: %m");
fd = open_terminal("/dev/tty0", O_RDWR|O_NOCTTY|O_CLOEXEC);
if (fd < 0) {
/* Support systems without virtual console */
if (fd != -ENOENT)
- log_warning("Failed to open /dev/tty0: %m");
+ log_warning_errno(errno, "Failed to open /dev/tty0: %m");
} else {
/* Enable that we get SIGWINCH on kbrequest */
if (ioctl(fd, KDSIGACCEPT, SIGWINCH) < 0)
- log_warning("Failed to enable kbrequest handling: %m");
+ log_warning_errno(errno, "Failed to enable kbrequest handling: %m");
}
return 0;
fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (fd < 0) {
- log_error("Failed to allocate notification socket: %m");
+ log_error_errno(errno, "Failed to allocate notification socket: %m");
return -errno;
}
e = getenv("XDG_RUNTIME_DIR");
if (!e) {
- log_error("XDG_RUNTIME_DIR is not set: %m");
+ log_error_errno(errno, "XDG_RUNTIME_DIR is not set: %m");
return -EINVAL;
}
strncpy(sa.un.sun_path, m->notify_socket, sizeof(sa.un.sun_path)-1);
r = bind(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path));
if (r < 0) {
- log_error("bind(%s) failed: %m", sa.un.sun_path);
+ log_error_errno(errno, "bind(%s) failed: %m", sa.un.sun_path);
return -errno;
}
r = setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one));
if (r < 0) {
- log_error("SO_PASSCRED failed: %m");
+ log_error_errno(errno, "SO_PASSCRED failed: %m");
return -errno;
}
d = opendir(*i);
if (!d) {
if (errno != ENOENT)
- log_error("Failed to open directory %s: %m", *i);
+ log_error_errno(errno, "Failed to open directory %s: %m", *i);
continue;
}
* Then let's not retry again. */
close_audit_fd();
else
- log_warning("Failed to send audit message: %m");
+ log_warning_errno(errno, "Failed to send audit message: %m");
}
#endif
* message then wait for plymouth */
fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (fd < 0) {
- log_error("socket() failed: %m");
+ log_error_errno(errno, "socket() failed: %m");
return;
}
if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
if (!IN_SET(errno, EPIPE, EAGAIN, ENOENT, ECONNREFUSED, ECONNRESET, ECONNABORTED))
- log_error("connect() failed: %m");
+ log_error_errno(errno, "connect() failed: %m");
return;
}
errno = 0;
if (write(fd, message, n + 1) != n + 1)
if (!IN_SET(errno, EPIPE, EAGAIN, ENOENT, ECONNREFUSED, ECONNRESET, ECONNABORTED))
- log_error("Failed to write Plymouth message: %m");
+ log_error_errno(errno, "Failed to write Plymouth message: %m");
}
void manager_dispatch_bus_name_owner_changed(
return log_oom();
if (!mkdtemp(p)) {
- log_error("Failed to create generator directory %s: %m",
+ log_error_errno(errno, "Failed to create generator directory %s: %m",
p);
free(p);
return -errno;
if (errno == ENOENT)
return;
- log_error("Failed to enumerate generator directory %s: %m",
+ log_error_errno(errno, "Failed to enumerate generator directory %s: %m",
generator_path);
return;
}
f = fopen("/proc/cgroups", "re");
if (!f) {
- log_error("Failed to enumerate cgroup controllers: %m");
+ log_error_errno(errno, "Failed to enumerate cgroup controllers: %m");
return 0;
}
r = symlink(options, t);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create symlink %s: %m", t);
+ log_error_errno(errno, "Failed to create symlink %s: %m", t);
return -errno;
}
}
* propagation mode to private if needed. */
if (detect_container(NULL) <= 0)
if (mount(NULL, "/", NULL, MS_REC|MS_SHARED, NULL) < 0)
- log_warning("Failed to set up the root directory for shared mount propagation: %m");
+ log_warning_errno(errno, "Failed to set up the root directory for shared mount propagation: %m");
/* Create a few directories we always want around, Note that
* sd_booted() checks for /run/systemd/system, so this mkdir
u = umask(0000);
if (!mkdtemp(temporary_mount)) {
- log_error("Failed create temp dir: %m");
+ log_error_errno(errno, "Failed create temp dir: %m");
return -errno;
}
/* create a new /dev/null dev node copy so we have some fodder to
* bind-mount the custom endpoint over. */
if (stat("/dev/null", &st) < 0) {
- log_error("Failed to stat /dev/null: %m");
+ log_error_errno(errno, "Failed to stat /dev/null: %m");
r = -errno;
goto fail;
}
busnode = strappenda(root, "/bus");
if (mknod(busnode, (st.st_mode & ~07777) | 0600, st.st_rdev) < 0) {
- log_error("mknod() for %s failed: %m", busnode);
+ log_error_errno(errno, "mknod() for %s failed: %m", busnode);
r = -errno;
goto fail;
}
r = mount(m->path, busnode, "bind", MS_BIND, NULL);
if (r < 0) {
- log_error("bind mount of %s failed: %m", m->path);
+ log_error_errno(errno, "bind mount of %s failed: %m", m->path);
r = -errno;
goto fail;
}
}
if (mount(root, basepath, NULL, MS_MOVE, NULL) < 0) {
- log_error("bind mount of %s failed: %m", basepath);
+ log_error_errno(errno, "bind mount of %s failed: %m", basepath);
r = -errno;
goto fail;
}
}
if (!exists) {
- log_error("Failed to add watch on any of the components of %s: %m",
+ log_error_errno(errno, "Failed to add watch on any of the components of %s: %m",
s->path);
r = -errno; /* either EACCESS or ENOENT */
goto fail;
}
if (ioctl(s->inotify_fd, FIONREAD, &l) < 0) {
- log_error("FIONREAD failed: %m");
+ log_error_errno(errno, "FIONREAD failed: %m");
return -errno;
}
k = read(s->inotify_fd, buf, l);
if (k < 0) {
- log_error("Failed to read inotify event: %m");
+ log_error_errno(errno, "Failed to read inotify event: %m");
return -errno;
}
int r = 0;
if (avc_open(NULL, 0)) {
- log_error("avc_open() failed: %m");
+ log_error_errno(errno, "avc_open() failed: %m");
return -errno;
}
static int switch_root_initramfs(void) {
if (mount("/run/initramfs", "/run/initramfs", NULL, MS_BIND, NULL) < 0) {
- log_error("Failed to mount bind /run/initramfs on /run/initramfs: %m");
+ log_error_errno(errno, "Failed to mount bind /run/initramfs on /run/initramfs: %m");
return -errno;
}
if (mount(NULL, "/run/initramfs", NULL, MS_PRIVATE, NULL) < 0) {
- log_error("Failed to make /run/initramfs private mount: %m");
+ log_error_errno(errno, "Failed to make /run/initramfs private mount: %m");
return -errno;
}
"Returning to initrd...");
execv("/shutdown", argv);
- log_error("Failed to execute shutdown binary: %m");
+ log_error_errno(errno, "Failed to execute shutdown binary: %m");
} else
log_error_errno(r, "Failed to switch root to \"/run/initramfs\": %m");
pid = fork();
if (pid < 0)
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
else if (pid == 0) {
const char * const args[] = {
exit(0);
}
- log_error("Failed to invoke reboot(): %m");
+ log_error_errno(errno, "Failed to invoke reboot(): %m");
r = -errno;
error:
dst = fopen(dstpath, "we");
if (!dst) {
if (errno != ENOENT)
- log_warning("Failed to open %s: %m", dstpath);
+ log_warning_errno(errno, "Failed to open %s: %m", dstpath);
return -errno; /* negative error */
}
dir = opendir(srcdir);
if (!dir) {
if (errno != ENOENT)
- log_warning("Failed to opendir %s: %m", srcdir);
+ log_warning_errno(errno, "Failed to opendir %s: %m", srcdir);
return errno; /* positive on purpose */
}
if (fd < 0) {
if (r == 0)
r = -errno;
- log_warning("Failed to open %s: %m", entry->d_name);
+ log_warning_errno(errno, "Failed to open %s: %m", entry->d_name);
continue;
}
if (r == 0)
r = -errno;
safe_close(fd);
- log_error("Failed to open %s: %m", entry->d_name);
+ log_error_errno(errno, "Failed to open %s: %m", entry->d_name);
continue;
}
/* load2 write rules in the kernel require a line buffered stream */
FOREACH_LINE(buf, policy,
- log_error("Failed to read line from %s: %m",
+ log_error_errno(errno, "Failed to read line from %s: %m",
entry->d_name)) {
if (!fputs(buf, dst)) {
if (r == 0)
if (fflush(dst)) {
if (r == 0)
r = -errno;
- log_error("Failed to flush writes to %s: %m", dstpath);
+ log_error_errno(errno, "Failed to flush writes to %s: %m", dstpath);
break;
}
}
mount_point_free(head, m);
} else if (log_error) {
- log_warning("Could not unmount %s: %m", m->path);
+ log_warning_errno(errno, "Could not unmount %s: %m", m->path);
n_failed++;
}
}
mount_point_free(head, m);
} else {
- log_warning("Could not deactivate swap %s: %m", m->path);
+ log_warning_errno(errno, "Could not deactivate swap %s: %m", m->path);
n_failed++;
}
}
mount_point_free(head, m);
} else {
- log_warning("Could not detach loopback %s: %m", m->path);
+ log_warning_errno(errno, "Could not detach loopback %s: %m", m->path);
n_failed++;
}
}
mount_point_free(head, m);
} else {
- log_warning("Could not detach DM %s: %m", m->path);
+ log_warning_errno(errno, "Could not detach DM %s: %m", m->path);
n_failed++;
}
}
f = fopen(p, "wxe");
if (!f) {
- log_error("Failed to create unit file %s: %m", p);
+ log_error_errno(errno, "Failed to create unit file %s: %m", p);
return -errno;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write file %s: %m", p);
+ log_error_errno(errno, "Failed to write file %s: %m", p);
return -errno;
}
mkdir_parents_label(to, 0755);
if (symlink(from, to) < 0) {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
mkdir_parents_label(to, 0755);
if (symlink(from, to) < 0) {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
}
mkdir_parents_label(to, 0755);
if (symlink(from, to) < 0) {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
if (errno == ENOENT)
r = EXIT_SUCCESS;
else
- log_error("Failed to open /etc/crypttab: %m");
+ log_error_errno(errno, "Failed to open /etc/crypttab: %m");
goto next;
}
if (fstat(fileno(f), &st) < 0) {
- log_error("Failed to stat /etc/crypttab: %m");
+ log_error_errno(errno, "Failed to stat /etc/crypttab: %m");
goto next;
}
f = fopen(a, "wxe");
if (!f) {
- log_error("Failed to create %s: %m", a);
+ log_error_errno(errno, "Failed to create %s: %m", a);
return -errno;
}
f = fopen(b, "wxe");
if (!f) {
- log_error("Failed to create %s: %m", b);
+ log_error_errno(errno, "Failed to create %s: %m", b);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(b, lnk)) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
if (errno == -ENOENT)
return 0;
- log_error("Failed to enumerate D-Bus activated services: %m");
+ log_error_errno(errno, "Failed to enumerate D-Bus activated services: %m");
return -errno;
}
return r;
fail:
- log_error("Failed to read D-Bus services directory: %m");
+ log_error_errno(errno, "Failed to read D-Bus services directory: %m");
return -errno;
}
mkdir_parents_label(t, 0755);
if (symlink(f, t) < 0) {
- log_error("Failed to create symlink %s: %m", t);
+ log_error_errno(errno, "Failed to create symlink %s: %m", t);
return -errno;
}
t = strappenda(arg_dest, "/" SPECIAL_DBUS_SOCKET);
mkdir_parents_label(t, 0755);
if (symlink(f, t) < 0) {
- log_error("Failed to create symlink %s: %m", t);
+ log_error_errno(errno, "Failed to create symlink %s: %m", t);
return -errno;
}
t = strappenda(arg_dest, "/" SPECIAL_SOCKETS_TARGET ".wants/systemd-bus-proxyd.socket");
mkdir_parents_label(t, 0755);
if (symlink(f, t) < 0) {
- log_error("Failed to create symlink %s: %m", t);
+ log_error_errno(errno, "Failed to create symlink %s: %m", t);
return -errno;
}
t = strappenda(arg_dest, "/" SPECIAL_DBUS_SERVICE);
if (symlink("/dev/null", t) < 0) {
- log_error("Failed to mask %s: %m", t);
+ log_error_errno(errno, "Failed to mask %s: %m", t);
return -errno;
}
return log_oom();
if (symlink("/dev/null", p) < 0) {
- log_error("Failed to create mask symlink %s: %m", p);
+ log_error_errno(errno, "Failed to create mask symlink %s: %m", p);
r = -errno;
}
}
mkdir_parents_label(p, 0755);
if (symlink(f, p) < 0) {
- log_error("Failed to create wants symlink %s: %m", p);
+ log_error_errno(errno, "Failed to create wants symlink %s: %m", p);
r = -errno;
}
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork off diff: %m");
+ log_error_errno(errno, "Failed to fork off diff: %m");
return -errno;
} else if (pid == 0) {
execlp("diff", "diff", "-us", "--", bottom, top, NULL);
- log_error("Failed to execute diff: %m");
+ log_error_errno(errno, "Failed to execute diff: %m");
_exit(1);
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open %s: %m", path);
+ log_error_errno(errno, "Failed to open %s: %m", path);
return -errno;
}
name = strappenda(arg_dest, "/boot.mount");
f = fopen(name, "wxe");
if (!f) {
- log_error("Failed to create mount unit file %s: %m", name);
+ log_error_errno(errno, "Failed to create mount unit file %s: %m", name);
return EXIT_FAILURE;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write mount unit file: %m");
+ log_error_errno(errno, "Failed to write mount unit file: %m");
return EXIT_FAILURE;
}
fclose(f);
f = fopen(name, "wxe");
if (!f) {
- log_error("Failed to create automount unit file %s: %m", name);
+ log_error_errno(errno, "Failed to create automount unit file %s: %m", name);
return EXIT_FAILURE;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write automount unit file: %m");
+ log_error_errno(errno, "Failed to write automount unit file: %m");
return EXIT_FAILURE;
}
mkdir_parents(name, 0755);
if (symlink("../boot.automount", name) < 0) {
- log_error("Failed to create symlink %s: %m", name);
+ log_error_errno(errno, "Failed to create symlink %s: %m", name);
return EXIT_FAILURE;
}
mkdir_parents(etc_localtime, 0755);
if (symlink(p, etc_localtime) < 0) {
- log_error("Failed to create %s symlink: %m", etc_localtime);
+ log_error_errno(errno, "Failed to create %s symlink: %m", etc_localtime);
return -errno;
}
mkdir_parents(etc_localtime, 0755);
if (symlink(e, etc_localtime) < 0) {
- log_error("Failed to create %s symlink: %m", etc_localtime);
+ log_error_errno(errno, "Failed to create %s symlink: %m", etc_localtime);
return -errno;
}
if (!errno)
errno = EIO;
- log_error("Failed to find shadow entry for root: %m");
+ log_error_errno(errno, "Failed to find shadow entry for root: %m");
return -errno;
}
if (!errno)
errno = -EINVAL;
- log_error("Failed to encrypt password: %m");
+ log_error_errno(errno, "Failed to encrypt password: %m");
return -errno;
}
root_directory = false;
if (stat(device, &st) < 0) {
- log_error("Failed to stat '%s': %m", device);
+ log_error_errno(errno, "Failed to stat '%s': %m", device);
return EXIT_FAILURE;
}
/* Find root device */
if (stat("/", &st) < 0) {
- log_error("Failed to stat() the root directory: %m");
+ log_error_errno(errno, "Failed to stat() the root directory: %m");
return EXIT_FAILURE;
}
if (arg_show_progress)
if (pipe(progress_pipe) < 0) {
- log_error("pipe(): %m");
+ log_error_errno(errno, "pipe(): %m");
return EXIT_FAILURE;
}
pid = fork();
if (pid < 0) {
- log_error("fork(): %m");
+ log_error_errno(errno, "fork(): %m");
goto finish;
} else if (pid == 0) {
/* Child */
if (errno == EEXIST)
log_error("Failed to create swap unit file %s, as it already exists. Duplicate entry in /etc/fstab?", unit);
else
- log_error("Failed to create unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to create unit file %s: %m", unit);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(unit, lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
}
if (errno == EEXIST)
log_error("Failed to create mount unit file %s, as it already exists. Duplicate entry in /etc/fstab?", unit);
else
- log_error("Failed to create unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to create unit file %s: %m", unit);
return -errno;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to write unit file %s: %m", unit);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(unit, lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
}
fclose(f);
f = fopen(automount_unit, "wxe");
if (!f) {
- log_error("Failed to create unit file %s: %m", automount_unit);
+ log_error_errno(errno, "Failed to create unit file %s: %m", automount_unit);
return -errno;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write unit file %s: %m", automount_unit);
+ log_error_errno(errno, "Failed to write unit file %s: %m", automount_unit);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(automount_unit, lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open %s: %m", fstab_path);
+ log_error_errno(errno, "Failed to open %s: %m", fstab_path);
return -errno;
}
/* In case console=hvc0 is passed this will very likely result in EEXIST */
return 0;
else {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
}
f = fopen(unit, "wxe");
if (!f) {
- log_error("Failed to create unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to create unit file %s: %m", unit);
return -errno;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to write unit file %s: %m", unit);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(unit, lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
f = fopen(p, "wxe");
if (!f) {
- log_error("Failed to create unit file %s: %m", p);
+ log_error_errno(errno, "Failed to create unit file %s: %m", p);
return -errno;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write file %s: %m", p);
+ log_error_errno(errno, "Failed to write file %s: %m", p);
return -errno;
}
mkdir_parents_label(to, 0755);
if (symlink(from, to) < 0) {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
mkdir_parents_label(to, 0755);
if (symlink(from, to) < 0) {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
mkdir_parents_label(to, 0755);
if (symlink(from, to) < 0) {
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
f = fopen(p, "wxe");
if (!f) {
- log_error("Failed to create unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to create unit file %s: %m", unit);
return -errno;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write unit file %s: %m", p);
+ log_error_errno(errno, "Failed to write unit file %s: %m", p);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(p, lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
}
if (!b) {
if (errno == 0)
return log_oom();
- log_error("Failed to allocate prober: %m");
+ log_error_errno(errno, "Failed to allocate prober: %m");
return -errno;
}
else if (r != 0) {
if (errno == 0)
errno = EIO;
- log_error("Failed to probe %s: %m", what);
+ log_error_errno(errno, "Failed to probe %s: %m", what);
return -errno;
}
if (errno == 0)
return log_oom();
- log_error("Failed allocate prober: %m");
+ log_error_errno(errno, "Failed allocate prober: %m");
return -errno;
}
else if (r != 0) {
if (errno == 0)
errno = EIO;
- log_error("Failed to probe %s: %m", node);
+ log_error_errno(errno, "Failed to probe %s: %m", node);
return -errno;
}
if (r != 0) {
if (errno == 0)
errno = EIO;
- log_error("Failed to determine partition table type of %s: %m", node);
+ log_error_errno(errno, "Failed to determine partition table type of %s: %m", node);
return -errno;
}
if (errno == 0)
return log_oom();
- log_error("Failed to list partitions of %s: %m", node);
+ log_error_errno(errno, "Failed to list partitions of %s: %m", node);
return -errno;
}
mkdir_parents_label(lnk, 0755);
if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-hibernate-resume@.service", lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
device = argv[1];
if (stat(device, &st) < 0) {
- log_error("Failed to stat '%s': %m", device);
+ log_error_errno(errno, "Failed to stat '%s': %m", device);
return EXIT_FAILURE;
}
case 'u':
case 'U':
if (kill(1, SIGTERM) < 0)
- log_error("kill() failed: %m");
+ log_error_errno(errno, "kill() failed: %m");
/* The bus connection will be
* terminated if PID 1 is reexecuted,
case 'q':
case 'Q':
if (kill(1, SIGHUP) < 0)
- log_error("kill() failed: %m");
+ log_error_errno(errno, "kill() failed: %m");
break;
default:
if (errno == EAGAIN)
return 0;
- log_warning("Failed to read from fifo: %m");
+ log_warning_errno(errno, "Failed to read from fifo: %m");
return -errno;
}
s->epoll_fd = epoll_create1(EPOLL_CLOEXEC);
if (s->epoll_fd < 0) {
r = -errno;
- log_error("Failed to create epoll object: %m");
+ log_error_errno(errno, "Failed to create epoll object: %m");
goto fail;
}
f = new0(Fifo, 1);
if (!f) {
r = -ENOMEM;
- log_error("Failed to create fifo object: %m");
+ log_error_errno(errno, "Failed to create fifo object: %m");
goto fail;
}
if (epoll_ctl(s->epoll_fd, EPOLL_CTL_ADD, fd, &ev) < 0) {
r = -errno;
fifo_free(f);
- log_error("Failed to add fifo fd to epoll object: %m");
+ log_error_errno(errno, "Failed to add fifo fd to epoll object: %m");
goto fail;
}
if (errno == EINTR)
continue;
- log_error("epoll_wait() failed: %m");
+ log_error_errno(errno, "epoll_wait() failed: %m");
goto fail;
}
else {
m->tmp = tmpfile();
if (!m->tmp) {
- log_error("Failed to create temporary file: %m");
+ log_error_errno(errno, "Failed to create temporary file: %m");
return MHD_CONTENT_READER_END_WITH_ERROR;
}
}
sz = ftello(m->tmp);
if (sz == (off_t) -1) {
- log_error("Failed to retrieve file position: %m");
+ log_error_errno(errno, "Failed to retrieve file position: %m");
return MHD_CONTENT_READER_END_WITH_ERROR;
}
}
if (fseeko(m->tmp, pos, SEEK_SET) < 0) {
- log_error("Failed to seek to position: %m");
+ log_error_errno(errno, "Failed to seek to position: %m");
return MHD_CONTENT_READER_END_WITH_ERROR;
}
else {
m->tmp = tmpfile();
if (!m->tmp) {
- log_error("Failed to create temporary file: %m");
+ log_error_errno(errno, "Failed to create temporary file: %m");
return MHD_CONTENT_READER_END_WITH_ERROR;
}
}
sz = ftello(m->tmp);
if (sz == (off_t) -1) {
- log_error("Failed to retrieve file position: %m");
+ log_error_errno(errno, "Failed to retrieve file position: %m");
return MHD_CONTENT_READER_END_WITH_ERROR;
}
}
if (fseeko(m->tmp, pos, SEEK_SET) < 0) {
- log_error("Failed to seek to position: %m");
+ log_error_errno(errno, "Failed to seek to position: %m");
return MHD_CONTENT_READER_END_WITH_ERROR;
}
source->size - source->filled);
if (n < 0) {
if (errno != EAGAIN && errno != EWOULDBLOCK)
- log_error("read(%d, ..., %zd): %m", source->fd,
+ log_error_errno(errno, "read(%d, ..., %zd): %m", source->fd,
source->size - source->filled);
return -errno;
} else if (n == 0)
source->size - source->filled);
if (n < 0) {
if (errno != EAGAIN && errno != EWOULDBLOCK)
- log_error("read(%d, ..., %zd): %m", source->fd,
+ log_error_errno(errno, "read(%d, ..., %zd): %m", source->fd,
source->size - source->filled);
return -errno;
} else if (n == 0)
int r;
if (pipe(fd) < 0) {
- log_error("Failed to create pager pipe: %m");
+ log_error_errno(errno, "Failed to create pager pipe: %m");
return -errno;
}
child_pid = fork();
if (child_pid < 0) {
r = -errno;
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
safe_close_pair(fd);
return r;
}
if (child_pid == 0) {
r = dup2(fd[1], STDOUT_FILENO);
if (r < 0) {
- log_error("Failed to dup pipe to stdout: %m");
+ log_error_errno(errno, "Failed to dup pipe to stdout: %m");
_exit(EXIT_FAILURE);
}
_exit(EXIT_SUCCESS);
execvp(child, argv);
- log_error("Failed to exec child %s: %m", child);
+ log_error_errno(errno, "Failed to exec child %s: %m", child);
_exit(EXIT_FAILURE);
}
r = close(fd[1]);
if (r < 0)
- log_warning("Failed to close write end of pipe: %m");
+ log_warning_errno(errno, "Failed to close write end of pipe: %m");
return fd[0];
}
r = spawn_child("curl", argv);
if (r < 0)
- log_error("Failed to spawn curl: %m");
+ log_error_errno(errno, "Failed to spawn curl: %m");
return r;
}
r = spawn_child(words[0], words);
if (r < 0)
- log_error("Failed to spawn getter %s: %m", getter);
+ log_error_errno(errno, "Failed to spawn getter %s: %m", getter);
return r;
}
fd = open(*file, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NONBLOCK);
if (fd < 0) {
- log_error("Failed to open %s: %m", *file);
+ log_error_errno(errno, "Failed to open %s: %m", *file);
return -errno;
}
output_name = *file;
log_debug("Accepting new %s connection on fd:%d", type, fd);
fd2 = accept4(fd, &addr->sockaddr.sa, &addr->size, SOCK_NONBLOCK|SOCK_CLOEXEC);
if (fd2 < 0) {
- log_error("accept() on fd:%d failed: %m", fd);
+ log_error_errno(errno, "accept() on fd:%d failed: %m", fd);
return -errno;
}
close_fd_input(u);
return 0;
} else {
- log_error("Aborting transfer after read error on input: %m.");
+ log_error_errno(errno, "Aborting transfer after read error on input: %m.");
return CURL_READFUNC_ABORT;
}
}
else {
fd = open(filename, O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (fd < 0) {
- log_error("Failed to open %s: %m", filename);
+ log_error_errno(errno, "Failed to open %s: %m", filename);
return -errno;
}
}
if (dup3(fd, STDOUT_FILENO, 0) < 0 ||
dup3(fd, STDERR_FILENO, 0) < 0) {
- log_error("Failed to duplicate fd: %m");
+ log_error_errno(errno, "Failed to duplicate fd: %m");
r = -errno;
goto finish;
}
f = fopen(path, "re");
if (!f) {
- log_error("Failed to open file %s: %m", path);
+ log_error_errno(errno, "Failed to open file %s: %m", path);
return -errno;
}
r = catalog_file_lang(path, &deflang);
if (r < 0)
- log_error("Failed to determine language for file %s: %m", path);
+ log_error_errno(errno, "Failed to determine language for file %s: %m", path);
if (r == 1)
log_debug("File %s has language %s.", path, deflang);
if (feof(f))
break;
- log_error("Failed to read file %s: %m", path);
+ log_error_errno(errno, "Failed to read file %s: %m", path);
return -errno;
}
fchmod(fileno(w), 0644);
if (rename(p, database) < 0) {
- log_error("rename (%s -> %s) failed: %m", p, database);
+ log_error_errno(errno, "rename (%s -> %s) failed: %m", p, database);
r = -errno;
goto error;
}
if (exclude_fd >= 0) {
if (fstat(exclude_fd, &exclude_st) < 0) {
- log_error("Failed to fstat(): %m");
+ log_error_errno(errno, "Failed to fstat(): %m");
return -errno;
}
}
if (errno == ENOENT)
return 0;
- log_error("Can't open coredump directory: %m");
+ log_error_errno(errno, "Can't open coredump directory: %m");
return -errno;
}
if (errno == ENOENT)
continue;
- log_error("Failed to remove file %s: %m", worst->oldest_file);
+ log_error_errno(errno, "Failed to remove file %s: %m", worst->oldest_file);
return -errno;
} else
log_info("Removed old coredump %s.", worst->oldest_file);
return 0;
fail:
- log_error("Failed to read directory: %m");
+ log_error_errno(errno, "Failed to read directory: %m");
return -errno;
}
acl = acl_get_fd(fd);
if (!acl) {
- log_error("Failed to get ACL: %m");
+ log_error_errno(errno, "Failed to get ACL: %m");
return -errno;
}
if (acl_create_entry(&acl, &entry) < 0 ||
acl_set_tag_type(entry, ACL_USER) < 0 ||
acl_set_qualifier(entry, &uid) < 0) {
- log_error("Failed to patch ACL: %m");
+ log_error_errno(errno, "Failed to patch ACL: %m");
return -errno;
}
if (acl_get_permset(entry, &permset) < 0 ||
acl_add_perm(permset, ACL_READ) < 0 ||
calc_acl_mask_if_needed(&acl) < 0) {
- log_warning("Failed to patch ACL: %m");
+ log_warning_errno(errno, "Failed to patch ACL: %m");
return -errno;
}
if (acl_set_fd(fd, acl) < 0) {
- log_error("Failed to apply ACL: %m");
+ log_error_errno(errno, "Failed to apply ACL: %m");
return -errno;
}
#endif
fix_xattr(fd, info);
if (fsync(fd) < 0) {
- log_error("Failed to sync coredump %s: %m", filename);
+ log_error_errno(errno, "Failed to sync coredump %s: %m", filename);
return -errno;
}
if (rename(filename, target) < 0) {
- log_error("Failed to rename coredump %s -> %s: %m", filename, target);
+ log_error_errno(errno, "Failed to rename coredump %s -> %s: %m", filename, target);
return -errno;
}
return 1;
if (unlink(filename) < 0 && errno != ENOENT) {
- log_error("Failed to unlink %s: %m", filename);
+ log_error_errno(errno, "Failed to unlink %s: %m", filename);
return -errno;
}
fd = open(tmp, O_CREAT|O_EXCL|O_RDWR|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0640);
if (fd < 0) {
- log_error("Failed to create coredump file %s: %m", tmp);
+ log_error_errno(errno, "Failed to create coredump file %s: %m", tmp);
return -errno;
}
}
if (fstat(fd, &st) < 0) {
- log_error("Failed to fstat coredump %s: %m", tmp);
+ log_error_errno(errno, "Failed to fstat coredump %s: %m", tmp);
goto fail;
}
if (lseek(fd, 0, SEEK_SET) == (off_t) -1) {
- log_error("Failed to seek on %s: %m", tmp);
+ log_error_errno(errno, "Failed to seek on %s: %m", tmp);
goto fail;
}
fd_compressed = open(tmp_compressed, O_CREAT|O_EXCL|O_RDWR|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0640);
if (fd_compressed < 0) {
- log_error("Failed to create file %s: %m", tmp_compressed);
+ log_error_errno(errno, "Failed to create file %s: %m", tmp_compressed);
goto uncompressed;
}
assert(ret_size);
if (lseek(fd, 0, SEEK_SET) == (off_t) -1) {
- log_warning("Failed to seek: %m");
+ log_warning_errno(errno, "Failed to seek: %m");
return -errno;
}
* thus making sure the user gets access to the core dump. */
if (setresgid(gid, gid, gid) < 0 ||
setresuid(uid, uid, uid) < 0) {
- log_error("Failed to drop privileges: %m");
+ log_error_errno(errno, "Failed to drop privileges: %m");
r = -errno;
goto finish;
}
output = fopen(optarg, "we");
if (!output) {
- log_error("writing to '%s': %m", optarg);
+ log_error_errno(errno, "writing to '%s': %m", optarg);
return -errno;
}
fdt = mkostemp_safe(temp, O_WRONLY|O_CLOEXEC);
if (fdt < 0) {
- log_error("Failed to create temporary file: %m");
+ log_error_errno(errno, "Failed to create temporary file: %m");
return -errno;
}
log_debug("Created temporary file %s", temp);
sz = write(fdt, data, len);
if (sz < 0) {
- log_error("Failed to write temporary file: %m");
+ log_error_errno(errno, "Failed to write temporary file: %m");
r = -errno;
goto error;
}
fdf = open(filename, O_RDONLY | O_CLOEXEC);
if (fdf < 0) {
- log_error("Failed to open %s: %m", filename);
+ log_error_errno(errno, "Failed to open %s: %m", filename);
r = -errno;
goto error;
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork(): %m");
+ log_error_errno(errno, "Failed to fork(): %m");
r = -errno;
goto finish;
}
if (pid == 0) {
execlp("gdb", "gdb", exe, path, NULL);
- log_error("Failed to invoke gdb: %m");
+ log_error_errno(errno, "Failed to invoke gdb: %m");
_exit(1);
}
r = wait_for_terminate(pid, &st);
if (r < 0) {
- log_error("Failed to wait for gdb: %m");
+ log_error_errno(errno, "Failed to wait for gdb: %m");
goto finish;
}
fd = open(p, O_RDWR|O_CLOEXEC|O_NOCTTY, 0600);
if (fd < 0) {
if (errno != ENOENT)
- log_error("Failed to open %s: %m", p);
+ log_error_errno(errno, "Failed to open %s: %m", p);
r = -errno;
goto finish;
__sync_synchronize();
if (ftruncate(f->fd, f->last_stat.st_size) < 0)
- log_error("Failed to truncate file to its own size: %m");
+ log_error_errno(errno, "Failed to truncate file to its own size: %m");
}
static int entry_item_cmp(const void *_a, const void *_b) {
log_full(verbose ? LOG_INFO : LOG_DEBUG, "Deleted empty archived journal %s/%s (%s).", directory, p, format_bytes(sbytes, sizeof(sbytes), size));
freed += size;
} else if (errno != ENOENT)
- log_warning("Failed to delete empty archived journal %s/%s: %m", directory, p);
+ log_warning_errno(errno, "Failed to delete empty archived journal %s/%s: %m", directory, p);
free(p);
continue;
sum = 0;
} else if (errno != ENOENT)
- log_warning("Failed to delete archived journal %s/%s: %m", directory, list[i].filename);
+ log_warning_errno(errno, "Failed to delete archived journal %s/%s: %m", directory, list[i].filename);
}
if (oldest_usec && i < n_list && (*oldest_usec == 0 || list[i].realtime < *oldest_usec))
data_fd = open_tmpfile("/var/tmp", O_RDWR | O_CLOEXEC);
if (data_fd < 0) {
- log_error("Failed to create data file: %m");
+ log_error_errno(errno, "Failed to create data file: %m");
r = -errno;
goto fail;
}
entry_fd = open_tmpfile("/var/tmp", O_RDWR | O_CLOEXEC);
if (entry_fd < 0) {
- log_error("Failed to create entry file: %m");
+ log_error_errno(errno, "Failed to create entry file: %m");
r = -errno;
goto fail;
}
entry_array_fd = open_tmpfile("/var/tmp", O_RDWR | O_CLOEXEC);
if (entry_array_fd < 0) {
- log_error("Failed to create entry array file: %m");
+ log_error_errno(errno, "Failed to create entry array file: %m");
r = -errno;
goto fail;
}
path = p ? p : *i;
if (stat(path, &st) < 0) {
- log_error("Couldn't stat file: %m");
+ log_error_errno(errno, "Couldn't stat file: %m");
return -errno;
}
r = stat("/var/log/journal", &st);
if (r < 0 && errno != ENOENT && errno != ENOTDIR) {
- log_error("stat(\"%s\") failed: %m", "/var/log/journal");
+ log_error_errno(errno, "stat(\"%s\") failed: %m", "/var/log/journal");
return -errno;
}
if (arg_force) {
r = unlink(p);
if (r < 0) {
- log_error("unlink(\"%s\") failed: %m", p);
+ log_error_errno(errno, "unlink(\"%s\") failed: %m", p);
r = -errno;
goto finish;
}
fd = open("/dev/random", O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (fd < 0) {
- log_error("Failed to open /dev/random: %m");
+ log_error_errno(errno, "Failed to open /dev/random: %m");
r = -errno;
goto finish;
}
safe_close(fd);
fd = mkostemp_safe(k, O_WRONLY|O_CLOEXEC);
if (fd < 0) {
- log_error("Failed to open %s: %m", k);
+ log_error_errno(errno, "Failed to open %s: %m", k);
r = -errno;
goto finish;
}
/* Enable secure remove, exclusion from dump, synchronous
* writing and in-place updating */
if (ioctl(fd, FS_IOC_GETFLAGS, &attr) < 0)
- log_warning("FS_IOC_GETFLAGS failed: %m");
+ log_warning_errno(errno, "FS_IOC_GETFLAGS failed: %m");
attr |= FS_SECRM_FL|FS_NODUMP_FL|FS_SYNC_FL|FS_NOCOW_FL;
if (ioctl(fd, FS_IOC_SETFLAGS, &attr) < 0)
- log_warning("FS_IOC_SETFLAGS failed: %m");
+ log_warning_errno(errno, "FS_IOC_SETFLAGS failed: %m");
zero(h);
memcpy(h.signature, "KSHHRHLP", 8);
}
if (link(k, p) < 0) {
- log_error("Failed to link file: %m");
+ log_error_errno(errno, "Failed to link file: %m");
r = -errno;
goto finish;
}
watch_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC);
if (watch_fd < 0) {
- log_error("Failed to create inotify watch: %m");
+ log_error_errno(errno, "Failed to create inotify watch: %m");
return -errno;
}
r = inotify_add_watch(watch_fd, "/run/systemd/journal", IN_CREATE|IN_DONT_FOLLOW|IN_ONLYDIR);
if (r < 0) {
- log_error("Failed to watch journal directory: %m");
+ log_error_errno(errno, "Failed to watch journal directory: %m");
return -errno;
}
break;
if (errno != ENOENT) {
- log_error("Failed to check for existance of /run/systemd/journal/flushed: %m");
+ log_error_errno(errno, "Failed to check for existance of /run/systemd/journal/flushed: %m");
return -errno;
}
if (errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT)
log_debug("Audit not supported in the kernel.");
else
- log_warning("Failed to create audit socket, ignoring: %m");
+ log_warning_errno(errno, "Failed to create audit socket, ignoring: %m");
return 0;
}
r = bind(s->audit_fd, &sa.sa, sizeof(sa.nl));
if (r < 0) {
- log_error("Failed to join audit multicast group: %m");
+ log_error_errno(errno, "Failed to join audit multicast group: %m");
return -errno;
}
} else
r = setsockopt(s->audit_fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one));
if (r < 0) {
- log_error("Failed to set SO_PASSCRED on audit socket: %m");
+ log_error_errno(errno, "Failed to set SO_PASSCRED on audit socket: %m");
return -errno;
}
fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC);
if (fd < 0) {
- log_debug("Failed to open %s for logging: %m", tty);
+ log_debug_errno(errno, "Failed to open %s for logging: %m", tty);
return;
}
if (writev(fd, iovec, n) < 0)
- log_debug("Failed to write to %s for logging: %m", tty);
+ log_debug_errno(errno, "Failed to write to %s for logging: %m", tty);
safe_close(fd);
}
IOVEC_SET_STRING(iovec[n++], "\n");
if (writev(s->dev_kmsg_fd, iovec, n) < 0)
- log_debug("Failed to write to /dev/kmsg for logging: %m");
+ log_debug_errno(errno, "Failed to write to /dev/kmsg for logging: %m");
free(ident_buf);
}
if (errno == EAGAIN || errno == EINTR || errno == EPIPE)
return 0;
- log_error("Failed to read from kernel: %m");
+ log_error_errno(errno, "Failed to read from kernel: %m");
return -errno;
}
fd = open("/run/systemd/journal/kernel-seqnum", O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644);
if (fd < 0) {
- log_error("Failed to open /run/systemd/journal/kernel-seqnum, ignoring: %m");
+ log_error_errno(errno, "Failed to open /run/systemd/journal/kernel-seqnum, ignoring: %m");
return 0;
}
if (posix_fallocate(fd, 0, sizeof(uint64_t)) < 0) {
- log_error("Failed to allocate sequential number file, ignoring: %m");
+ log_error_errno(errno, "Failed to allocate sequential number file, ignoring: %m");
return 0;
}
p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if (p == MAP_FAILED) {
- log_error("Failed to map sequential number file, ignoring: %m");
+ log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
return 0;
}
r = readlink_malloc(sl, &k);
if (r < 0) {
- log_error("readlink(%s) failed: %m", sl);
+ log_error_errno(errno, "readlink(%s) failed: %m", sl);
return;
}
}
if (fstat(fd, &st) < 0) {
- log_error("Failed to stat passed file, ignoring: %m");
+ log_error_errno(errno, "Failed to stat passed file, ignoring: %m");
return;
}
ps = PAGE_ALIGN(st.st_size);
p = mmap(NULL, ps, PROT_READ, MAP_PRIVATE, fd, 0);
if (p == MAP_FAILED) {
- log_error("Failed to map memfd, ignoring: %m");
+ log_error_errno(errno, "Failed to map memfd, ignoring: %m");
return;
}
s->native_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (s->native_fd < 0) {
- log_error("socket() failed: %m");
+ log_error_errno(errno, "socket() failed: %m");
return -errno;
}
r = bind(s->native_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path));
if (r < 0) {
- log_error("bind(%s) failed: %m", sa.un.sun_path);
+ log_error_errno(errno, "bind(%s) failed: %m", sa.un.sun_path);
return -errno;
}
r = setsockopt(s->native_fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one));
if (r < 0) {
- log_error("SO_PASSCRED failed: %m");
+ log_error_errno(errno, "SO_PASSCRED failed: %m");
return -errno;
}
if (mac_selinux_use()) {
r = setsockopt(s->native_fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one));
if (r < 0)
- log_warning("SO_PASSSEC failed: %m");
+ log_warning_errno(errno, "SO_PASSSEC failed: %m");
}
#endif
r = setsockopt(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, &one, sizeof(one));
if (r < 0) {
- log_error("SO_TIMESTAMP failed: %m");
+ log_error_errno(errno, "SO_TIMESTAMP failed: %m");
return -errno;
}
acl = acl_get_fd(f->fd);
if (!acl) {
- log_warning("Failed to read ACL on %s, ignoring: %m", f->path);
+ log_warning_errno(errno, "Failed to read ACL on %s, ignoring: %m", f->path);
return;
}
if (acl_create_entry(&acl, &entry) < 0 ||
acl_set_tag_type(entry, ACL_USER) < 0 ||
acl_set_qualifier(entry, &uid) < 0) {
- log_warning("Failed to patch ACL on %s, ignoring: %m", f->path);
+ log_warning_errno(errno, "Failed to patch ACL on %s, ignoring: %m", f->path);
goto finish;
}
}
if (acl_get_permset(entry, &permset) < 0 ||
acl_add_perm(permset, ACL_READ) < 0 ||
calc_acl_mask_if_needed(&acl) < 0) {
- log_warning("Failed to patch ACL on %s, ignoring: %m", f->path);
+ log_warning_errno(errno, "Failed to patch ACL on %s, ignoring: %m", f->path);
goto finish;
}
if (acl_set_fd(f->fd, acl) < 0)
- log_warning("Failed to set ACL on %s, ignoring: %m", f->path);
+ log_warning_errno(errno, "Failed to set ACL on %s, ignoring: %m", f->path);
finish:
acl_free(acl);
if (errno == EINTR || errno == EAGAIN)
return 0;
- log_error("recvmsg() failed: %m");
+ log_error_errno(errno, "recvmsg() failed: %m");
return -errno;
}
s->hostname_fd = open("/proc/sys/kernel/hostname", O_RDONLY|O_CLOEXEC|O_NDELAY|O_NOCTTY);
if (s->hostname_fd < 0) {
- log_error("Failed to open /proc/sys/kernel/hostname: %m");
+ log_error_errno(errno, "Failed to open /proc/sys/kernel/hostname: %m");
return -errno;
}
if (errno == EAGAIN)
return 0;
- log_warning("Failed to read from stream: %m");
+ log_warning_errno(errno, "Failed to read from stream: %m");
goto terminate;
}
if (errno == EAGAIN)
return 0;
- log_error("Failed to accept stdout connection: %m");
+ log_error_errno(errno, "Failed to accept stdout connection: %m");
return -errno;
}
r = getpeercred(fd, &stream->ucred);
if (r < 0) {
- log_error("Failed to determine peer credentials: %m");
+ log_error_errno(errno, "Failed to determine peer credentials: %m");
goto fail;
}
#ifdef HAVE_SELINUX
if (mac_selinux_use()) {
if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT)
- log_error("Failed to determine peer security context: %m");
+ log_error_errno(errno, "Failed to determine peer security context: %m");
}
#endif
if (shutdown(fd, SHUT_WR) < 0) {
- log_error("Failed to shutdown writing side of socket: %m");
+ log_error_errno(errno, "Failed to shutdown writing side of socket: %m");
goto fail;
}
s->stdout_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (s->stdout_fd < 0) {
- log_error("socket() failed: %m");
+ log_error_errno(errno, "socket() failed: %m");
return -errno;
}
r = bind(s->stdout_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path));
if (r < 0) {
- log_error("bind(%s) failed: %m", sa.un.sun_path);
+ log_error_errno(errno, "bind(%s) failed: %m", sa.un.sun_path);
return -errno;
}
chmod(sa.un.sun_path, 0666);
if (listen(s->stdout_fd, SOMAXCONN) < 0) {
- log_error("listen(%s) failed: %m", sa.un.sun_path);
+ log_error_errno(errno, "listen(%s) failed: %m", sa.un.sun_path);
return -errno;
}
} else
}
if (errno != ENOENT)
- log_debug("Failed to forward syslog message: %m");
+ log_debug_errno(errno, "Failed to forward syslog message: %m");
}
static void forward_syslog_raw(Server *s, int priority, const char *buffer, const struct ucred *ucred, const struct timeval *tv) {
s->syslog_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (s->syslog_fd < 0) {
- log_error("socket() failed: %m");
+ log_error_errno(errno, "socket() failed: %m");
return -errno;
}
r = bind(s->syslog_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path));
if (r < 0) {
- log_error("bind(%s) failed: %m", sa.un.sun_path);
+ log_error_errno(errno, "bind(%s) failed: %m", sa.un.sun_path);
return -errno;
}
r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one));
if (r < 0) {
- log_error("SO_PASSCRED failed: %m");
+ log_error_errno(errno, "SO_PASSCRED failed: %m");
return -errno;
}
if (mac_selinux_use()) {
r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one));
if (r < 0)
- log_warning("SO_PASSSEC failed: %m");
+ log_warning_errno(errno, "SO_PASSSEC failed: %m");
}
#endif
r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, &one, sizeof(one));
if (r < 0) {
- log_error("SO_TIMESTAMP failed: %m");
+ log_error_errno(errno, "SO_TIMESTAMP failed: %m");
return -errno;
}
d = opendir(path);
if (!d) {
- log_debug("Failed to open %s: %m", path);
+ log_debug_errno(errno, "Failed to open %s: %m", path);
if (errno == ENOENT)
return 0;
return -errno;
de = readdir(d);
if (!de && errno != 0) {
r = -errno;
- log_debug("Failed to read directory %s: %m", m->path);
+ log_debug_errno(errno, "Failed to read directory %s: %m", m->path);
return r;
}
if (!de)
de = readdir(d);
if (!de && errno != 0) {
r = -errno;
- log_debug("Failed to read directory %s: %m", m->path);
+ log_debug_errno(errno, "Failed to read directory %s: %m", m->path);
return r;
}
if (!de)
r = ioctl(1, KDSKBMODE, K_UNICODE);
if (r < 0) {
- log_error("Cannot set K_UNICODE on stdout: %m");
+ log_error_errno(errno, "Cannot set K_UNICODE on stdout: %m");
return -errno;
}
r = ioctl(1, KDSETMODE, KD_TEXT);
if (r < 0) {
- log_error("Cannot set KD_TEXT on stdout: %m");
+ log_error_errno(errno, "Cannot set KD_TEXT on stdout: %m");
return -errno;
}
if (r == -ENOENT) {
card->async_hotplug = true;
r = 0;
- log_debug("grdrm: %s: plane %u removed during resync", card->base.name, plane->object.id);
+ log_debug("grdrm: %s: plane %u removed during resync",
+ card->base.name, plane->object.id);
} else {
- log_debug("grdrm: %s: cannot retrieve plane %u: %m", card->base.name, plane->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot retrieve plane %u: %m",
+ card->base.name, plane->object.id);
}
return r;
if (r == -ENOENT) {
card->async_hotplug = true;
r = 0;
- log_debug("grdrm: %s: connector %u removed during resync", card->base.name, connector->object.id);
+ log_debug("grdrm: %s: connector %u removed during resync",
+ card->base.name, connector->object.id);
} else {
- log_debug("grdrm: %s: cannot retrieve connector %u: %m", card->base.name, connector->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot retrieve connector %u: %m",
+ card->base.name, connector->object.id);
}
return r;
if (r == -ENOENT) {
card->async_hotplug = true;
r = 0;
- log_debug("grdrm: %s: encoder %u removed during resync", card->base.name, encoder->object.id);
+ log_debug("grdrm: %s: encoder %u removed during resync",
+ card->base.name, encoder->object.id);
} else {
- log_debug("grdrm: %s: cannot retrieve encoder %u: %m", card->base.name, encoder->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot retrieve encoder %u: %m",
+ card->base.name, encoder->object.id);
}
return r;
if (r == -ENOENT) {
card->async_hotplug = true;
r = 0;
- log_debug("grdrm: %s: crtc %u removed during resync", card->base.name, crtc->object.id);
+ log_debug("grdrm: %s: crtc %u removed during resync",
+ card->base.name, crtc->object.id);
} else {
- log_debug("grdrm: %s: cannot retrieve crtc %u: %m", card->base.name, crtc->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot retrieve crtc %u: %m",
+ card->base.name, crtc->object.id);
}
return r;
r = ioctl(card->fd, DRM_IOCTL_MODE_SETCRTC, &set_crtc);
if (r < 0) {
r = -errno;
- log_debug("grdrm: %s: cannot set crtc %" PRIu32 ": %m",
- card->base.name, crtc->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot set crtc %" PRIu32 ": %m",
+ card->base.name, crtc->object.id);
grdrm_card_async(card, r);
return;
* possible to see whether cards support page-flipping, so
* avoid logging on each frame. */
if (r != -EINVAL)
- log_debug("grdrm: %s: cannot schedule page-flip on crtc %" PRIu32 ": %m",
- card->base.name, crtc->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot schedule page-flip on crtc %" PRIu32 ": %m",
+ card->base.name, crtc->object.id);
if (grdrm_card_async(card, r))
return r;
r = ioctl(card->fd, DRM_IOCTL_MODE_SETCRTC, &set_crtc);
if (r < 0) {
r = -errno;
- log_debug("grdrm: %s: cannot shutdown crtc %" PRIu32 ": %m",
- card->base.name, crtc->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot shutdown crtc %" PRIu32 ": %m",
+ card->base.name, crtc->object.id);
grdrm_card_async(card, r);
return;
r = ioctl(card->fd, DRM_IOCTL_MODE_SETCRTC, &set_crtc);
if (r < 0) {
r = -errno;
- log_debug("grdrm: %s: cannot restore crtc %" PRIu32 ": %m",
- card->base.name, crtc->object.id);
+ log_debug_errno(errno, "grdrm: %s: cannot restore crtc %" PRIu32 ": %m",
+ card->base.name, crtc->object.id);
grdrm_card_async(card, r);
return;
r = ioctl(card->fd, DRM_IOCTL_MODE_CREATE_DUMB, &create_dumb);
if (r < 0) {
r = negative_errno();
- log_debug("grdrm: %s: cannot create dumb buffer %" PRIu32 "x%" PRIu32": %m",
- card->base.name, fb->base.width, fb->base.height);
+ log_debug_errno(errno, "grdrm: %s: cannot create dumb buffer %" PRIu32 "x%" PRIu32": %m",
+ card->base.name, fb->base.width, fb->base.height);
return r;
}
r = ioctl(card->fd, DRM_IOCTL_MODE_MAP_DUMB, &map_dumb);
if (r < 0) {
r = negative_errno();
- log_debug("grdrm: %s: cannot map dumb buffer %" PRIu32 "x%" PRIu32": %m",
- card->base.name, fb->base.width, fb->base.height);
+ log_debug_errno(errno, "grdrm: %s: cannot map dumb buffer %" PRIu32 "x%" PRIu32": %m",
+ card->base.name, fb->base.width, fb->base.height);
return r;
}
fb->base.maps[0] = mmap(0, fb->sizes[0], PROT_WRITE, MAP_SHARED, card->fd, map_dumb.offset);
if (fb->base.maps[0] == MAP_FAILED) {
r = negative_errno();
- log_debug("grdrm: %s: cannot memory-map dumb buffer %" PRIu32 "x%" PRIu32": %m",
- card->base.name, fb->base.width, fb->base.height);
+ log_debug_errno(errno, "grdrm: %s: cannot memory-map dumb buffer %" PRIu32 "x%" PRIu32": %m",
+ card->base.name, fb->base.width, fb->base.height);
return r;
}
r = ioctl(card->fd, DRM_IOCTL_MODE_ADDFB2, &add_fb);
if (r < 0) {
r = negative_errno();
- log_debug("grdrm: %s: cannot add framebuffer %" PRIu32 "x%" PRIu32": %m",
- card->base.name, fb->base.width, fb->base.height);
+ log_debug_errno(errno, "grdrm: %s: cannot add framebuffer %" PRIu32 "x%" PRIu32": %m",
+ card->base.name, fb->base.width, fb->base.height);
return r;
}
if (fb->id > 0 && fb->card->fd >= 0) {
r = ioctl(fb->card->fd, DRM_IOCTL_MODE_RMFB, fb->id);
if (r < 0)
- log_debug("grdrm: %s: cannot delete framebuffer %" PRIu32 ": %m",
- fb->card->base.name, fb->id);
+ log_debug_errno(errno, "grdrm: %s: cannot delete framebuffer %" PRIu32 ": %m",
+ fb->card->base.name, fb->id);
}
for (i = 0; i < ELEMENTSOF(fb->handles); ++i) {
destroy_dumb.handle = fb->handles[i];
r = ioctl(fb->card->fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_dumb);
if (r < 0)
- log_debug("grdrm: %s: cannot destroy dumb-buffer %" PRIu32 ": %m",
- fb->card->base.name, fb->handles[i]);
+ log_debug_errno(errno, "grdrm: %s: cannot destroy dumb-buffer %" PRIu32 ": %m",
+ fb->card->base.name, fb->handles[i]);
}
}
r = ioctl(card->fd, DRM_IOCTL_MODE_GETRESOURCES, &res);
if (r < 0) {
r = -errno;
- log_debug("grdrm: %s: cannot retrieve drm resources: %m", card->base.name);
+ log_debug_errno(errno, "grdrm: %s: cannot retrieve drm resources: %m",
+ card->base.name);
return r;
}
r = ioctl(card->fd, DRM_IOCTL_MODE_GETPLANERESOURCES, &pres);
if (r < 0) {
r = -errno;
- log_debug("grdrm: %s: cannot retrieve drm plane-resources: %m", card->base.name);
+ log_debug_errno(errno, "grdrm: %s: cannot retrieve drm plane-resources: %m",
+ card->base.name);
return r;
}
n = ALIGN_POWER2(max);
if (!n || n > UINT16_MAX) {
- log_debug("grdrm: %s: excessive DRM resource limit: %" PRIu32, card->base.name, max);
+ log_debug("grdrm: %s: excessive DRM resource limit: %" PRIu32,
+ card->base.name, max);
return -ERANGE;
}
if (errno == EAGAIN || errno == EINTR)
return 0;
- log_debug("grdrm: %s/%s: read error: %m", card->base.session->name, card->base.name);
+ log_debug_errno(errno, "grdrm: %s/%s: read error: %m",
+ card->base.session->name, card->base.name);
grdrm_card_close(card);
return 0;
}
event = (void*)buf;
if (len < sizeof(*event) || len < event->length) {
- log_debug("grdrm: %s/%s: truncated event", card->base.session->name, card->base.name);
+ log_debug("grdrm: %s/%s: truncated event",
+ card->base.session->name, card->base.name);
break;
}
case DRM_EVENT_FLIP_COMPLETE:
vblank = (void*)event;
if (event->length < sizeof(*vblank)) {
- log_debug("grdrm: %s/%s: truncated vblank event", card->base.session->name, card->base.name);
+ log_debug("grdrm: %s/%s: truncated vblank event",
+ card->base.session->name, card->base.name);
break;
}
fd = open(cu->devnode, O_RDWR | O_CLOEXEC | O_NOCTTY | O_NONBLOCK);
if (fd < 0) {
/* not fatal; simply ignore the device */
- log_debug("grdrm: %s/%s: cannot open node %s: %m",
- basecard->session->name, basecard->name, cu->devnode);
+ log_debug_errno(errno, "grdrm: %s/%s: cannot open node %s: %m",
+ basecard->session->name, basecard->name, cu->devnode);
return;
}
r = ioctl(cu->card.fd, DRM_IOCTL_SET_MASTER, 0);
if (r < 0) {
- log_debug("grdrm: %s/%s: cannot acquire DRM-Master: %m",
- basecard->session->name, basecard->name);
+ log_debug_errno(errno, "grdrm: %s/%s: cannot acquire DRM-Master: %m",
+ basecard->session->name, basecard->name);
return;
}
fd = open(cu->devnode, O_RDWR | O_CLOEXEC | O_NOCTTY | O_NONBLOCK);
if (fd < 0) {
/* not fatal; allow uaccess based control on activation */
- log_debug("grdrm: %s/%s: cannot open node %s: %m",
- basecard->session->name, basecard->name, cu->devnode);
+ log_debug_errno(errno, "grdrm: %s/%s: cannot open node %s: %m",
+ basecard->session->name, basecard->name, cu->devnode);
} else {
/* We might get DRM-Master implicitly on open(); drop it immediately
* so we acquire it only once we're actually enabled. We don't
* weird errors, anyway. */
r = ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);
if (r < 0 && errno != EACCES && errno != EINVAL)
- log_debug("grdrm: %s/%s: cannot drop DRM-Master: %m",
- basecard->session->name, basecard->name);
+ log_debug_errno(errno, "grdrm: %s/%s: cannot drop DRM-Master: %m",
+ basecard->session->name, basecard->name);
r = grdrm_card_open(&cu->card, fd);
if (r < 0)
* and our code works fine this way. */
fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
if (fd < 0) {
- log_debug("grdrm: %s/%s: cannot duplicate fd: %m",
- session->name, cm->card.base.name);
+ log_debug_errno(errno, "grdrm: %s/%s: cannot duplicate fd: %m",
+ session->name, cm->card.base.name);
return 0;
}
fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
if (fd < 0) {
- log_debug("grdrm: %s/%s: cannot duplicate fd: %m",
- session->name, cm->card.base.name);
+ log_debug_errno(errno, "grdrm: %s/%s: cannot duplicate fd: %m",
+ session->name, cm->card.base.name);
return 0;
}
fd = open(eu->devnode, O_RDWR | O_CLOEXEC | O_NOCTTY | O_NONBLOCK);
if (fd < 0) {
if (errno != EACCES && errno != EPERM) {
- log_debug("idev-evdev: %s/%s: cannot open node %s: %m",
- e->session->name, e->name, eu->devnode);
+ log_debug_errno(errno, "idev-evdev: %s/%s: cannot open node %s: %m",
+ e->session->name, e->name, eu->devnode);
return;
}
fd = open(eu->devnode, O_RDONLY | O_CLOEXEC | O_NOCTTY | O_NONBLOCK);
if (fd < 0) {
- log_debug("idev-evdev: %s/%s: cannot open node %s: %m",
- e->session->name, e->name, eu->devnode);
+ log_debug_errno(errno, "idev-evdev: %s/%s: cannot open node %s: %m",
+ e->session->name, e->name, eu->devnode);
return;
}
fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
if (fd < 0) {
- log_debug("idev-evdev: %s/%s: cannot duplicate evdev fd: %m", s->name, e->name);
+ log_debug_errno(errno, "idev-evdev: %s/%s: cannot duplicate evdev fd: %m", s->name, e->name);
return 0;
}
fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
if (fd < 0) {
- log_debug("idev-evdev: %s/%s: cannot duplicate evdev fd: %m",
- s->name, e->name);
+ log_debug_errno(errno, "idev-evdev: %s/%s: cannot duplicate evdev fd: %m",
+ s->name, e->name);
return;
}
r = ioctl(1, KDSKBMODE, K_UNICODE);
if (r < 0) {
- log_error("Cannot set K_UNICODE on stdout: %m");
+ log_error_errno(errno, "Cannot set K_UNICODE on stdout: %m");
return -errno;
}
r = ioctl(o->fd, TIOCGWINSZ, &wsz);
if (r < 0) {
- log_error("error: cannot read window-size: %m");
+ log_error_errno(errno, "error: cannot read window-size: %m");
return -errno;
}
if (errno == EAGAIN || errno == EINTR)
return 0;
- log_error("error: cannot read from TTY (%d): %m", -errno);
+ log_error_errno(errno, "error: cannot read from TTY (%d): %m", -errno);
return -errno;
}
r = tcgetattr(in_fd, &in_attr);
if (r < 0) {
- log_error("error: tcgetattr() (%d): %m", -errno);
+ log_error_errno(errno, "error: tcgetattr() (%d): %m", -errno);
return -errno;
}
r = tcgetattr(out_fd, &out_attr);
if (r < 0) {
- log_error("error: tcgetattr() (%d): %m", -errno);
+ log_error_errno(errno, "error: tcgetattr() (%d): %m", -errno);
return -errno;
}
setenv("COLORTERM", "systemd-subterm", 1);
execve(argv[0], argv, environ);
- log_error("error: cannot exec %s (%d): %m", argv[0], -errno);
+ log_error_errno(errno, "error: cannot exec %s (%d): %m", argv[0], -errno);
_exit(1);
}
log_info("Received fd=%d", fd);
if (write(fd, &x, 1) < 0) {
- log_error("Failed to write to fd: %m");
+ log_error_errno(errno, "Failed to write to fd: %m");
safe_close(fd);
goto fail;
}
assert(streq(hello, "hello"));
if (pipe2(pp, O_CLOEXEC|O_NONBLOCK) < 0) {
- log_error("Failed to allocate pipe: %m");
+ log_error_errno(errno, "Failed to allocate pipe: %m");
r = -errno;
goto finish;
}
mkdir_parents(filename_tmp, 0755);
f = fopen(filename_tmp, "we");
if (f == NULL) {
- log_debug("unable to create temporary db file '%s': %m", filename_tmp);
+ log_debug_errno(errno, "unable to create temporary db file '%s': %m", filename_tmp);
return -errno;
}
f = fopen(dbfile, "re");
if (f == NULL) {
- log_debug("no db file to read %s: %m", dbfile);
+ log_debug_errno(errno, "no db file to read %s: %m", dbfile);
return -errno;
}
else if (errno == ENOENT)
continue;
else {
- log_debug("error reading %s: %m", hwdb_bin_path);
+ log_debug_errno(errno, "error reading %s: %m", hwdb_bin_path);
udev_hwdb_unref(hwdb);
return NULL;
}
if (fstat(fileno(hwdb->f), &hwdb->st) < 0 ||
(size_t)hwdb->st.st_size < offsetof(struct trie_header_f, strings_len) + 8) {
- log_debug("error reading %s: %m", hwdb_bin_path);
+ log_debug_errno(errno, "error reading %s: %m", hwdb_bin_path);
udev_hwdb_unref(hwdb);
return NULL;
}
hwdb->map = mmap(0, hwdb->st.st_size, PROT_READ, MAP_SHARED, fileno(hwdb->f), 0);
if (hwdb->map == MAP_FAILED) {
- log_debug("error mapping %s: %m", hwdb_bin_path);
+ log_debug_errno(errno, "error mapping %s: %m", hwdb_bin_path);
udev_hwdb_unref(hwdb);
return NULL;
}
r = name_to_handle_at(AT_FDCWD, "/dev", &h.handle, &mount_id, 0);
if (r < 0) {
if (errno != EOPNOTSUPP)
- log_debug("name_to_handle_at on /dev: %m");
+ log_debug_errno(errno, "name_to_handle_at on /dev: %m");
return false;
}
if (fd < 0) {
udev_monitor->sock = socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC|SOCK_NONBLOCK, NETLINK_KOBJECT_UEVENT);
if (udev_monitor->sock == -1) {
- log_debug("error getting socket: %m");
+ log_debug_errno(errno, "error getting socket: %m");
free(udev_monitor);
return NULL;
}
if (err == 0)
udev_monitor->snl.nl.nl_pid = snl.nl.nl_pid;
} else {
- log_debug("bind failed: %m");
+ log_debug_errno(errno, "bind failed: %m");
return -errno;
}
/* enable receiving of sender credentials */
err = setsockopt(udev_monitor->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
if (err < 0)
- log_debug("setting SO_PASSCRED failed: %m");
+ log_debug_errno(errno, "setting SO_PASSCRED failed: %m");
return 0;
}
f = fopen("/usr/share/X11/xkb/rules/base.lst", "re");
if (!f) {
- log_error("Failed to open keyboard mapping list. %m");
+ log_error_errno(errno, "Failed to open keyboard mapping list. %m");
return -errno;
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return EXIT_FAILURE;
}
close_all_fds(NULL, 0);
execvp(argv[optind], argv + optind);
- log_error("Failed to execute %s: %m", argv[optind]);
+ log_error_errno(errno, "Failed to execute %s: %m", argv[optind]);
_exit(EXIT_FAILURE);
}
b->fd = open(p, O_RDWR|O_CLOEXEC|O_NOCTTY|O_NONBLOCK);
if (b->fd < 0) {
- log_warning("Failed to open %s: %m", b->name);
+ log_warning_errno(errno, "Failed to open %s: %m", b->name);
return -errno;
}
if (ioctl(b->fd, EVIOCGNAME(sizeof(name)), name) < 0) {
- log_error("Failed to get input name: %m");
+ log_error_errno(errno, "Failed to get input name: %m");
r = -errno;
goto fail;
}
d = opendir("/etc/udev/rules.d");
if (!d) {
if (errno != ENOENT)
- log_warning("Failed to open /etc/udev/rules.d: %m");
+ log_warning_errno(errno, "Failed to open /etc/udev/rules.d: %m");
} else {
struct dirent *de;
continue;
if (unlinkat(dirfd(d), de->d_name, 0) < 0)
- log_warning("Failed to unlink %s: %m", de->d_name);
+ log_warning_errno(errno, "Failed to unlink %s: %m", de->d_name);
}
}
sprintf(path, "/dev/tty%u", s->vtnr);
s->vtfd = open(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
if (s->vtfd < 0) {
- log_error("cannot open VT %s of session %s: %m", path, s->id);
+ log_error_errno(errno, "cannot open VT %s of session %s: %m", path, s->id);
return -errno;
}
r = fchown(vt, s->user->uid, -1);
if (r < 0) {
r = -errno;
- log_error("Cannot change owner of /dev/tty%u: %m", s->vtnr);
+ log_error_errno(errno, "Cannot change owner of /dev/tty%u: %m", s->vtnr);
goto error;
}
r = ioctl(vt, KDSKBMODE, K_OFF);
if (r < 0) {
r = -errno;
- log_error("Cannot set K_OFF on /dev/tty%u: %m", s->vtnr);
+ log_error_errno(errno, "Cannot set K_OFF on /dev/tty%u: %m", s->vtnr);
goto error;
}
r = ioctl(vt, KDSETMODE, KD_GRAPHICS);
if (r < 0) {
r = -errno;
- log_error("Cannot set KD_GRAPHICS on /dev/tty%u: %m", s->vtnr);
+ log_error_errno(errno, "Cannot set KD_GRAPHICS on /dev/tty%u: %m", s->vtnr);
goto error;
}
r = ioctl(vt, VT_SETMODE, &mode);
if (r < 0) {
r = -errno;
- log_error("Cannot set VT_PROCESS on /dev/tty%u: %m", s->vtnr);
+ log_error_errno(errno, "Cannot set VT_PROCESS on /dev/tty%u: %m", s->vtnr);
goto error;
}
session_device_pause_all(s);
r = ioctl(s->vtfd, VT_RELDISP, 1);
if (r < 0)
- log_debug("Cannot release VT of session %s: %m", s->id);
+ log_debug_errno(errno, "Cannot release VT of session %s: %m", s->id);
}
bool session_is_controller(Session *s, const char *sender) {
log_error_errno(r, "Failed to remove runtime directory %s: %m", u->runtime_path);
if (umount2(u->runtime_path, MNT_DETACH) < 0)
- log_error("Failed to unmount user runtime directory %s: %m", u->runtime_path);
+ log_error_errno(errno, "Failed to unmount user runtime directory %s: %m", u->runtime_path);
r = rm_rf(u->runtime_path, false, true, false);
if (r < 0)
if (errno == ENOENT)
return 0;
- log_error("Failed to open /run/systemd/seats: %m");
+ log_error_errno(errno, "Failed to open /run/systemd/seats: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open /var/lib/systemd/linger/: %m");
+ log_error_errno(errno, "Failed to open /var/lib/systemd/linger/: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open /run/systemd/users: %m");
+ log_error_errno(errno, "Failed to open /run/systemd/users: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open /run/systemd/sessions: %m");
+ log_error_errno(errno, "Failed to open /run/systemd/sessions: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open /run/systemd/inhibit: %m");
+ log_error_errno(errno, "Failed to open /run/systemd/inhibit: %m");
return -errno;
}
/* Don't complain on VT-less systems */
if (errno != ENOENT)
- log_warning("Failed to pin reserved VT: %m");
+ log_warning_errno(errno, "Failed to pin reserved VT: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open /sys/class/tty/tty0/active: %m");
+ log_error_errno(errno, "Failed to open /sys/class/tty/tty0/active: %m");
return -errno;
}
int r = 0;
if (unlink("/run/nologin") < 0 && errno != ENOENT) {
- log_error("Failed to remove /run/nologin file: %m");
+ log_error_errno(errno, "Failed to remove /run/nologin file: %m");
r = -errno;
}
* exist), don't complain */
if (errno != EROFS || access("/etc/nologin", F_OK) >= 0) {
- log_error("Failed to remove /etc/nologin file: %m");
+ log_error_errno(errno, "Failed to remove /etc/nologin file: %m");
return EXIT_FAILURE;
}
}
pty = ptsname(master);
if (!pty) {
- log_error("Failed to get pty name: %m");
+ log_error_errno(errno, "Failed to get pty name: %m");
return -errno;
}
return log_oom();
if (unlockpt(master) < 0) {
- log_error("Failed to unlock tty: %m");
+ log_error_errno(errno, "Failed to unlock tty: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to open /run/systemd/machines: %m");
+ log_error_errno(errno, "Failed to open /run/systemd/machines: %m");
return -errno;
}
if (feof(f))
break;
- log_error("Failed to read file '%s', ignoring: %m", path);
+ log_error_errno(errno, "Failed to read file '%s', ignoring: %m", path);
return -errno;
}
udev = udev_new();
if (!udev) {
- log_error("Failed to connect to udev: %m");
+ log_error_errno(errno, "Failed to connect to udev: %m");
return -errno;
}
udev = udev_new();
if (!udev) {
- log_error("Failed to connect to udev: %m");
+ log_error_errno(errno, "Failed to connect to udev: %m");
return -errno;
}
free(arg_directory);
arg_directory = canonicalize_file_name(optarg);
if (!arg_directory) {
- log_error("Invalid root directory: %m");
+ log_error_errno(errno, "Invalid root directory: %m");
return -ENOMEM;
}
o) < 0) {
if (mount_table[k].fatal) {
- log_error("mount(%s) failed: %m", where);
+ log_error_errno(errno, "mount(%s) failed: %m", where);
if (r == 0)
r = -errno;
} else
- log_warning("mount(%s) failed: %m", where);
+ log_warning_errno(errno, "mount(%s) failed: %m", where);
}
}
int r;
if (stat(*x, &source_st) < 0) {
- log_error("Failed to stat %s: %m", *x);
+ log_error_errno(errno, "Failed to stat %s: %m", *x);
return -errno;
}
if (r < 0)
return log_error_errno(r, "Failed to bind mount %s: %m", *x);
} else {
- log_error("Failed to bind mount %s: %m", *x);
+ log_error_errno(errno, "Failed to bind mount %s: %m", *x);
return -errno;
}
} else if (S_ISFIFO(source_st.st_mode)) {
r = mkfifo(where, 0644);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create mount point %s: %m", where);
+ log_error_errno(errno, "Failed to create mount point %s: %m", where);
return -errno;
}
} else if (S_ISSOCK(source_st.st_mode)) {
r = mknod(where, 0644 | S_IFSOCK, 0);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create mount point %s: %m", where);
+ log_error_errno(errno, "Failed to create mount point %s: %m", where);
return -errno;
}
}
if (mount(*x, where, "bind", MS_BIND, NULL) < 0) {
- log_error("mount(%s) failed: %m", where);
+ log_error_errno(errno, "mount(%s) failed: %m", where);
return -errno;
}
return log_error_errno(r, "creating mount point for tmpfs %s failed: %m", where);
if (mount("tmpfs", where, "tmpfs", MS_NODEV|MS_STRICTATIME, *o) < 0) {
- log_error("tmpfs mount to %s failed: %m", where);
+ log_error_errno(errno, "tmpfs mount to %s failed: %m", where);
return -errno;
}
}
r = unlink(where);
if (r < 0 && errno != ENOENT) {
- log_error("Failed to remove existing timezone info %s in container: %m", where);
+ log_error_errno(errno, "Failed to remove existing timezone info %s in container: %m", where);
return 0;
}
if (symlink(what, where) < 0) {
- log_error("Failed to correct timezone of container: %m");
+ log_error_errno(errno, "Failed to correct timezone of container: %m");
return 0;
}
p = strappenda(directory, "/var");
r = mkdir(p, 0755);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create %s: %m", directory);
+ log_error_errno(errno, "Failed to create %s: %m", directory);
return -errno;
}
if (mount("tmpfs", p, "tmpfs", MS_STRICTATIME, "mode=755") < 0) {
- log_error("Failed to mount tmpfs to /var: %m");
+ log_error_errno(errno, "Failed to mount tmpfs to /var: %m");
return -errno;
}
the original /usr to use inside it, and that read-only. */
if (!mkdtemp(template)) {
- log_error("Failed to create temporary directory: %m");
+ log_error_errno(errno, "Failed to create temporary directory: %m");
return -errno;
}
if (mount("tmpfs", template, "tmpfs", MS_STRICTATIME, "mode=755") < 0) {
- log_error("Failed to mount tmpfs for root directory: %m");
+ log_error_errno(errno, "Failed to mount tmpfs for root directory: %m");
r = -errno;
goto fail;
}
r = mkdir(t, 0755);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create %s: %m", t);
+ log_error_errno(errno, "Failed to create %s: %m", t);
r = -errno;
goto fail;
}
if (mount(f, t, "bind", MS_BIND|MS_REC, NULL) < 0) {
- log_error("Failed to create /usr bind mount: %m");
+ log_error_errno(errno, "Failed to create /usr bind mount: %m");
r = -errno;
goto fail;
}
}
if (mount(template, directory, NULL, MS_MOVE, NULL) < 0) {
- log_error("Failed to move root mount: %m");
+ log_error_errno(errno, "Failed to move root mount: %m");
r = -errno;
goto fail;
}
return log_error_errno(r, "Failed to write boot id: %m");
if (mount(from, to, "bind", MS_BIND, NULL) < 0) {
- log_error("Failed to bind mount boot id: %m");
+ log_error_errno(errno, "Failed to bind mount boot id: %m");
r = -errno;
} else if (mount(from, to, "bind", MS_BIND|MS_REMOUNT|MS_RDONLY, NULL))
- log_warning("Failed to make boot id read-only: %m");
+ log_warning_errno(errno, "Failed to make boot id read-only: %m");
unlink(from);
return r;
if (stat(from, &st) < 0) {
if (errno != ENOENT) {
- log_error("Failed to stat %s: %m", from);
+ log_error_errno(errno, "Failed to stat %s: %m", from);
return -errno;
}
}
if (mknod(to, st.st_mode, st.st_rdev) < 0) {
- log_error("mknod(%s) failed: %m", dest);
+ log_error_errno(errno, "mknod(%s) failed: %m", dest);
return -errno;
}
}
return log_oom();
if (symlink("pts/ptmx", p) < 0) {
- log_error("Failed to create /dev/ptmx symlink: %m");
+ log_error_errno(errno, "Failed to create /dev/ptmx symlink: %m");
return -errno;
}
u = umask(0000);
if (stat("/dev/null", &st) < 0) {
- log_error("Failed to stat /dev/null: %m");
+ log_error_errno(errno, "Failed to stat /dev/null: %m");
return -errno;
}
to = strappenda(dest, "/dev/console");
if (mknod(to, (st.st_mode & ~07777) | 0600, st.st_rdev) < 0) {
- log_error("mknod() for /dev/console failed: %m");
+ log_error_errno(errno, "mknod() for /dev/console failed: %m");
return -errno;
}
if (mount(console, to, "bind", MS_BIND, NULL) < 0) {
- log_error("Bind mount for /dev/console failed: %m");
+ log_error_errno(errno, "Bind mount for /dev/console failed: %m");
return -errno;
}
return log_oom();
if (mkfifo(from, 0600) < 0) {
- log_error("mkfifo() for /dev/kmsg failed: %m");
+ log_error_errno(errno, "mkfifo() for /dev/kmsg failed: %m");
return -errno;
}
return log_error_errno(r, "Failed to correct access mode for /dev/kmsg: %m");
if (mount(from, to, "bind", MS_BIND, NULL) < 0) {
- log_error("Bind mount for /proc/kmsg failed: %m");
+ log_error_errno(errno, "Bind mount for /proc/kmsg failed: %m");
return -errno;
}
fd = open(from, O_RDWR|O_NDELAY|O_CLOEXEC);
if (fd < 0) {
- log_error("Failed to open fifo: %m");
+ log_error_errno(errno, "Failed to open fifo: %m");
return -errno;
}
safe_close(fd);
if (k < 0) {
- log_error("Failed to send FIFO fd: %m");
+ log_error_errno(errno, "Failed to send FIFO fd: %m");
return -errno;
}
r = mkdir_p(q, 0755);
if (r < 0)
- log_warning("Failed to create directory %s: %m", q);
+ log_warning_errno(errno, "Failed to create directory %s: %m", q);
return 0;
}
if (unlink(p) < 0) {
- log_error("Failed to remove symlink %s: %m", p);
+ log_error_errno(errno, "Failed to remove symlink %s: %m", p);
return -errno;
}
} else if (r == -EINVAL) {
log_error("%s already exists and is neither a symlink nor a directory", p);
return r;
} else {
- log_error("Failed to remove %s: %m", p);
+ log_error_errno(errno, "Failed to remove %s: %m", p);
return -errno;
}
}
} else if (r != -ENOENT) {
- log_error("readlink(%s) failed: %m", p);
+ log_error_errno(errno, "readlink(%s) failed: %m", p);
return r;
}
if (symlink(q, p) < 0) {
if (arg_link_journal_try) {
- log_debug("Failed to symlink %s to %s, skipping journal setup: %m", q, p);
+ log_debug_errno(errno, "Failed to symlink %s to %s, skipping journal setup: %m", q, p);
return 0;
} else {
- log_error("Failed to symlink %s to %s: %m", q, p);
+ log_error_errno(errno, "Failed to symlink %s to %s: %m", q, p);
return -errno;
}
}
r = mkdir_p(q, 0755);
if (r < 0)
- log_warning("Failed to create directory %s: %m", q);
+ log_warning_errno(errno, "Failed to create directory %s: %m", q);
return 0;
}
r = mkdir(p, 0755);
if (r < 0) {
if (arg_link_journal_try) {
- log_debug("Failed to create %s, skipping journal setup: %m", p);
+ log_debug_errno(errno, "Failed to create %s, skipping journal setup: %m", p);
return 0;
} else {
- log_error("Failed to create %s: %m", p);
+ log_error_errno(errno, "Failed to create %s: %m", p);
return r;
}
}
r = mkdir_p(q, 0755);
if (r < 0) {
- log_error("Failed to create %s: %m", q);
+ log_error_errno(errno, "Failed to create %s: %m", q);
return r;
}
if (mount(p, q, "bind", MS_BIND, NULL) < 0) {
- log_error("Failed to bind mount journal from host into guest: %m");
+ log_error_errno(errno, "Failed to bind mount journal from host into guest: %m");
return -errno;
}
i = (int) if_nametoindex(iface_name);
if (i <= 0) {
- log_error("Failed to resolve interface %s: %m", iface_name);
+ log_error_errno(errno, "Failed to resolve interface %s: %m", iface_name);
return -errno;
}
bridge = (int) if_nametoindex(arg_network_bridge);
if (bridge <= 0) {
- log_error("Failed to resolve interface %s: %m", arg_network_bridge);
+ log_error_errno(errno, "Failed to resolve interface %s: %m", arg_network_bridge);
return -errno;
}
ifi = (int) if_nametoindex(name);
if (ifi <= 0) {
- log_error("Failed to resolve interface %s: %m", name);
+ log_error_errno(errno, "Failed to resolve interface %s: %m", name);
return -errno;
}
sprintf(ifi_str, "n%i", ifi);
d = udev_device_new_from_device_id(udev, ifi_str);
if (!d) {
- log_error("Failed to get udev device for interface %s: %m", name);
+ log_error_errno(errno, "Failed to get udev device for interface %s: %m", name);
return -errno;
}
fd = open(arg_image, O_CLOEXEC|(arg_read_only ? O_RDONLY : O_RDWR)|O_NONBLOCK|O_NOCTTY);
if (fd < 0) {
- log_error("Failed to open %s: %m", arg_image);
+ log_error_errno(errno, "Failed to open %s: %m", arg_image);
return -errno;
}
if (fstat(fd, &st) < 0) {
- log_error("Failed to stat %s: %m", arg_image);
+ log_error_errno(errno, "Failed to stat %s: %m", arg_image);
return -errno;
}
}
if (!S_ISREG(st.st_mode)) {
- log_error("%s is not a regular file or block device: %m", arg_image);
+ log_error_errno(errno, "%s is not a regular file or block device: %m", arg_image);
return -EINVAL;
}
control = open("/dev/loop-control", O_RDWR|O_CLOEXEC|O_NOCTTY|O_NONBLOCK);
if (control < 0) {
- log_error("Failed to open /dev/loop-control: %m");
+ log_error_errno(errno, "Failed to open /dev/loop-control: %m");
return -errno;
}
nr = ioctl(control, LOOP_CTL_GET_FREE);
if (nr < 0) {
- log_error("Failed to allocate loop device: %m");
+ log_error_errno(errno, "Failed to allocate loop device: %m");
return -errno;
}
loop = open(loopdev, O_CLOEXEC|(arg_read_only ? O_RDONLY : O_RDWR)|O_NONBLOCK|O_NOCTTY);
if (loop < 0) {
- log_error("Failed to open loop device %s: %m", loopdev);
+ log_error_errno(errno, "Failed to open loop device %s: %m", loopdev);
return -errno;
}
if (ioctl(loop, LOOP_SET_FD, fd) < 0) {
- log_error("Failed to set loopback file descriptor on %s: %m", loopdev);
+ log_error_errno(errno, "Failed to set loopback file descriptor on %s: %m", loopdev);
return -errno;
}
info.lo_flags |= LO_FLAGS_READ_ONLY;
if (ioctl(loop, LOOP_SET_STATUS64, &info) < 0) {
- log_error("Failed to set loopback settings on %s: %m", loopdev);
+ log_error_errno(errno, "Failed to set loopback settings on %s: %m", loopdev);
return -errno;
}
if (errno == 0)
return log_oom();
- log_error("Failed to set device on blkid probe: %m");
+ log_error_errno(errno, "Failed to set device on blkid probe: %m");
return -errno;
}
} else if (r != 0) {
if (errno == 0)
errno = EIO;
- log_error("Failed to probe: %m");
+ log_error_errno(errno, "Failed to probe: %m");
return -errno;
}
return log_oom();
if (fstat(fd, &st) < 0) {
- log_error("Failed to stat block device: %m");
+ log_error_errno(errno, "Failed to stat block device: %m");
return -errno;
}
if (!errno)
errno = ENOMEM;
- log_error("Failed to get partition device of %s: %m", arg_image);
+ log_error_errno(errno, "Failed to get partition device of %s: %m", arg_image);
return -errno;
}
if (!b) {
if (errno == 0)
return log_oom();
- log_error("Failed to allocate prober for %s: %m", what);
+ log_error_errno(errno, "Failed to allocate prober for %s: %m", what);
return -errno;
}
} else if (r != 0) {
if (errno == 0)
errno = EIO;
- log_error("Failed to probe %s: %m", what);
+ log_error_errno(errno, "Failed to probe %s: %m", what);
return -errno;
}
}
if (mount(what, p, fstype, MS_NODEV|(rw ? 0 : MS_RDONLY), NULL) < 0) {
- log_error("Failed to mount %s: %m", what);
+ log_error_errno(errno, "Failed to mount %s: %m", what);
return -errno;
}
if (image_fd && *image_fd >= 0) {
r = ioctl(*image_fd, LOOP_CLR_FD);
if (r < 0)
- log_warning("Failed to close loop image: %m");
+ log_warning_errno(errno, "Failed to close loop image: %m");
*image_fd = safe_close(*image_fd);
}
control = open("/dev/loop-control", O_RDWR|O_CLOEXEC|O_NOCTTY|O_NONBLOCK);
if (control < 0) {
- log_warning("Failed to open /dev/loop-control: %m");
+ log_warning_errno(errno, "Failed to open /dev/loop-control: %m");
return;
}
r = ioctl(control, LOOP_CTL_REMOVE, nr);
if (r < 0)
- log_warning("Failed to remove loop %d: %m", nr);
+ log_warning_errno(errno, "Failed to remove loop %d: %m", nr);
}
static int spawn_getent(const char *database, const char *key, pid_t *rpid) {
assert(rpid);
if (pipe2(pipe_fds, O_CLOEXEC) < 0) {
- log_error("Failed to allocate pipe: %m");
+ log_error_errno(errno, "Failed to allocate pipe: %m");
return -errno;
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork getent child: %m");
+ log_error_errno(errno, "Failed to fork getent child: %m");
return -errno;
} else if (pid == 0) {
int nullfd;
/* Reset everything fully to 0, just in case */
if (setgroups(0, NULL) < 0) {
- log_error("setgroups() failed: %m");
+ log_error_errno(errno, "setgroups() failed: %m");
return -errno;
}
if (setresgid(0, 0, 0) < 0) {
- log_error("setregid() failed: %m");
+ log_error_errno(errno, "setregid() failed: %m");
return -errno;
}
if (setresuid(0, 0, 0) < 0) {
- log_error("setreuid() failed: %m");
+ log_error_errno(errno, "setreuid() failed: %m");
return -errno;
}
return -ESRCH;
}
- log_error("Failed to read from getent: %m");
+ log_error_errno(errno, "Failed to read from getent: %m");
return -errno;
}
return -ESRCH;
}
- log_error("Failed to read from getent: %m");
+ log_error_errno(errno, "Failed to read from getent: %m");
return -errno;
}
fchown(STDERR_FILENO, uid, gid);
if (setgroups(n_uids, uids) < 0) {
- log_error("Failed to set auxiliary groups: %m");
+ log_error_errno(errno, "Failed to set auxiliary groups: %m");
return -errno;
}
if (setresgid(gid, gid, gid) < 0) {
- log_error("setregid() failed: %m");
+ log_error_errno(errno, "setregid() failed: %m");
return -errno;
}
if (setresuid(uid, uid, uid) < 0) {
- log_error("setreuid() failed: %m");
+ log_error_errno(errno, "setreuid() failed: %m");
return -errno;
}
char template[] = "/tmp/nspawn-root-XXXXXX";
if (!mkdtemp(template)) {
- log_error("Failed to create temporary directory: %m");
+ log_error_errno(errno, "Failed to create temporary directory: %m");
r = -errno;
goto finish;
}
master = posix_openpt(O_RDWR|O_NOCTTY|O_CLOEXEC|O_NDELAY);
if (master < 0) {
- log_error("Failed to acquire pseudo tty: %m");
+ log_error_errno(errno, "Failed to acquire pseudo tty: %m");
goto finish;
}
console = ptsname(master);
if (!console) {
- log_error("Failed to determine tty name: %m");
+ log_error_errno(errno, "Failed to determine tty name: %m");
goto finish;
}
arg_machine, arg_image ? arg_image : arg_directory);
if (unlockpt(master) < 0) {
- log_error("Failed to unlock tty: %m");
+ log_error_errno(errno, "Failed to unlock tty: %m");
goto finish;
}
if (socketpair(AF_UNIX, SOCK_DGRAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, kmsg_socket_pair) < 0) {
- log_error("Failed to create kmsg socket pair: %m");
+ log_error_errno(errno, "Failed to create kmsg socket pair: %m");
goto finish;
}
* give it a chance to call wait() and terminate. */
r = sigprocmask(SIG_UNBLOCK, &mask_chld, NULL);
if (r < 0) {
- log_error("Failed to change the signal mask: %m");
+ log_error_errno(errno, "Failed to change the signal mask: %m");
goto finish;
}
r = sigaction(SIGCHLD, &sa, NULL);
if (r < 0) {
- log_error("Failed to install SIGCHLD handler: %m");
+ log_error_errno(errno, "Failed to install SIGCHLD handler: %m");
goto finish;
}
(arg_private_network ? CLONE_NEWNET : 0), NULL);
if (pid < 0) {
if (errno == EINVAL)
- log_error("clone() failed, do you have namespace support enabled in your kernel? (You need UTS, IPC, PID and NET namespacing built in): %m");
+ log_error_errno(errno, "clone() failed, do you have namespace support enabled in your kernel? (You need UTS, IPC, PID and NET namespacing built in): %m");
else
- log_error("clone() failed: %m");
+ log_error_errno(errno, "clone() failed: %m");
r = pid;
goto finish;
if (dup2(STDIN_FILENO, STDOUT_FILENO) != STDOUT_FILENO ||
dup2(STDIN_FILENO, STDERR_FILENO) != STDERR_FILENO) {
- log_error("Failed to duplicate console: %m");
+ log_error_errno(errno, "Failed to duplicate console: %m");
_exit(EXIT_FAILURE);
}
if (setsid() < 0) {
- log_error("setsid() failed: %m");
+ log_error_errno(errno, "setsid() failed: %m");
_exit(EXIT_FAILURE);
}
_exit(EXIT_FAILURE);
if (prctl(PR_SET_PDEATHSIG, SIGKILL) < 0) {
- log_error("PR_SET_PDEATHSIG failed: %m");
+ log_error_errno(errno, "PR_SET_PDEATHSIG failed: %m");
_exit(EXIT_FAILURE);
}
* receive mounts from the real root, but don't
* propagate mounts to the real root. */
if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0) {
- log_error("MS_SLAVE|MS_REC failed: %m");
+ log_error_errno(errno, "MS_SLAVE|MS_REC failed: %m");
_exit(EXIT_FAILURE);
}
/* Turn directory into bind mount */
if (mount(arg_directory, arg_directory, "bind", MS_BIND|MS_REC, NULL) < 0) {
- log_error("Failed to make bind mount: %m");
+ log_error_errno(errno, "Failed to make bind mount: %m");
_exit(EXIT_FAILURE);
}
(void)barrier_place(&barrier);
if (chdir(arg_directory) < 0) {
- log_error("chdir(%s) failed: %m", arg_directory);
+ log_error_errno(errno, "chdir(%s) failed: %m", arg_directory);
_exit(EXIT_FAILURE);
}
if (mount(arg_directory, "/", NULL, MS_MOVE, NULL) < 0) {
- log_error("mount(MS_MOVE) failed: %m");
+ log_error_errno(errno, "mount(MS_MOVE) failed: %m");
_exit(EXIT_FAILURE);
}
if (chroot(".") < 0) {
- log_error("chroot() failed: %m");
+ log_error_errno(errno, "chroot() failed: %m");
_exit(EXIT_FAILURE);
}
if (chdir("/") < 0) {
- log_error("chdir() failed: %m");
+ log_error_errno(errno, "chdir() failed: %m");
_exit(EXIT_FAILURE);
}
loopback_setup();
if (drop_capabilities() < 0) {
- log_error("drop_capabilities() failed: %m");
+ log_error_errno(errno, "drop_capabilities() failed: %m");
_exit(EXIT_FAILURE);
}
if (arg_personality != 0xffffffffLU) {
if (personality(arg_personality) < 0) {
- log_error("personality() failed: %m");
+ log_error_errno(errno, "personality() failed: %m");
_exit(EXIT_FAILURE);
}
} else if (secondary) {
if (personality(PER_LINUX32) < 0) {
- log_error("personality() failed: %m");
+ log_error_errno(errno, "personality() failed: %m");
_exit(EXIT_FAILURE);
}
}
#ifdef HAVE_SELINUX
if (arg_selinux_context)
if (setexeccon((security_context_t) arg_selinux_context) < 0) {
- log_error("setexeccon(\"%s\") failed: %m", arg_selinux_context);
+ log_error_errno(errno, "setexeccon(\"%s\") failed: %m", arg_selinux_context);
_exit(EXIT_FAILURE);
}
#endif
execle("/bin/sh", "-sh", NULL, env_use);
}
- log_error("execv() failed: %m");
+ log_error_errno(errno, "execv() failed: %m");
_exit(EXIT_FAILURE);
}
pid = fork();
if (pid < 0) {
- log_error("fork(): %m");
+ log_error_errno(errno, "fork(): %m");
return EXIT_FAILURE;
} else if (pid == 0) {
/* Child */
if (seed_fd < 0) {
seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (seed_fd < 0) {
- log_error("Failed to open " RANDOM_SEED ": %m");
+ log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m");
r = -errno;
goto finish;
}
if (random_fd < 0) {
random_fd = open("/dev/urandom", O_WRONLY|O_CLOEXEC|O_NOCTTY, 0600);
if (random_fd < 0) {
- log_error("Failed to open /dev/urandom: %m");
+ log_error_errno(errno, "Failed to open /dev/urandom: %m");
r = -errno;
goto finish;
}
if (k <= 0) {
if (r != 0)
- log_error("Failed to read seed from " RANDOM_SEED ": %m");
+ log_error_errno(errno, "Failed to read seed from " RANDOM_SEED ": %m");
r = k == 0 ? -EIO : (int) k;
seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
if (seed_fd < 0) {
- log_error("Failed to open " RANDOM_SEED ": %m");
+ log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m");
r = -errno;
goto finish;
}
random_fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC|O_NOCTTY);
if (random_fd < 0) {
- log_error("Failed to open /dev/urandom: %m");
+ log_error_errno(errno, "Failed to open /dev/urandom: %m");
r = -errno;
goto finish;
}
if (errno == EEXIST)
return 0;
- log_error("Failed to create symlink %s: %m", to);
+ log_error_errno(errno, "Failed to create symlink %s: %m", to);
return -errno;
}
if (errno == ENOENT)
return EXIT_SUCCESS;
- log_error("Failed to open /etc/fstab: %m");
+ log_error_errno(errno, "Failed to open /etc/fstab: %m");
return EXIT_FAILURE;
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
ret = EXIT_FAILURE;
continue;
}
execv("/bin/mount", (char **) arguments);
- log_error("Failed to execute /bin/mount: %m");
+ log_error_errno(errno, "Failed to execute /bin/mount: %m");
_exit(EXIT_FAILURE);
}
if (errno == EINTR)
continue;
- log_error("waitid() failed: %m");
+ log_error_errno(errno, "waitid() failed: %m");
ret = EXIT_FAILURE;
break;
}
strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path));
if (sendto(fd, packet, size, MSG_NOSIGNAL, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(socket_name)) < 0) {
- log_error("Failed to send: %m");
+ log_error_errno(errno, "Failed to send: %m");
return -errno;
}
packet[0] = '+';
if (!fgets(packet+1, sizeof(packet)-1, stdin)) {
- log_error("Failed to read password: %m");
+ log_error_errno(errno, "Failed to read password: %m");
goto finish;
}
fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (fd < 0) {
- log_error("socket() failed: %m");
+ log_error_errno(errno, "socket() failed: %m");
goto finish;
}
case 'i':
arg_ifindex = if_nametoindex(optarg);
if (arg_ifindex <= 0) {
- log_error("Unknown interfaces %s: %m", optarg);
+ log_error_errno(errno, "Unknown interfaces %s: %m", optarg);
return -errno;
}
break;
if (s->local.sa.sa_family == AF_INET) {
r = setsockopt(s->fd, IPPROTO_IP, IP_UNICAST_IF, &ifindex, sizeof(ifindex));
if (r < 0)
- log_debug("Failed to invoke IP_UNICAST_IF: %m");
+ log_debug_errno(errno, "Failed to invoke IP_UNICAST_IF: %m");
} else if (s->local.sa.sa_family == AF_INET6) {
r = setsockopt(s->fd, IPPROTO_IPV6, IPV6_UNICAST_IF, &ifindex, sizeof(ifindex));
if (r < 0)
- log_debug("Failed to invoke IPV6_UNICAST_IF: %m");
+ log_debug_errno(errno, "Failed to invoke IPV6_UNICAST_IF: %m");
}
}
m->hostname_fd = open("/proc/sys/kernel/hostname", O_RDONLY|O_CLOEXEC|O_NDELAY|O_NOCTTY);
if (m->hostname_fd < 0) {
- log_warning("Failed to watch hostname: %m");
+ log_warning_errno(errno, "Failed to watch hostname: %m");
return 0;
}
r = stat("/etc/resolv.conf", &st);
if (r < 0) {
if (errno != ENOENT)
- log_warning("Failed to open /etc/resolv.conf: %m");
+ log_warning_errno(errno, "Failed to open /etc/resolv.conf: %m");
r = -errno;
goto clear;
}
f = fopen("/etc/resolv.conf", "re");
if (!f) {
if (errno != ENOENT)
- log_warning("Failed to open /etc/resolv.conf: %m");
+ log_warning_errno(errno, "Failed to open /etc/resolv.conf: %m");
r = -errno;
goto clear;
}
if (fstat(fileno(f), &st) < 0) {
- log_error("Failed to stat open file: %m");
+ log_error_errno(errno, "Failed to stat open file: %m");
r = -errno;
goto clear;
}
device = udev_device_new_from_subsystem_sysname(udev, "rfkill", argv[2]);
if (!device) {
if (errno != 0)
- log_error("Failed to get rfkill device '%s': %m", argv[2]);
+ log_error_errno(errno, "Failed to get rfkill device '%s': %m", argv[2]);
else
log_oom();
if (arg_nice_set) {
if (setpriority(PRIO_PROCESS, 0, arg_nice) < 0) {
- log_error("Failed to set nice level: %m");
+ log_error_errno(errno, "Failed to set nice level: %m");
return -errno;
}
}
return log_error_errno(r, "Failed to resolve group %s: %m", arg_exec_group);
if (setresgid(gid, gid, gid) < 0) {
- log_error("Failed to change GID to " GID_FMT ": %m", gid);
+ log_error_errno(errno, "Failed to change GID to " GID_FMT ": %m", gid);
return -errno;
}
}
if (!arg_exec_group) {
if (setresgid(gid, gid, gid) < 0) {
- log_error("Failed to change GID to " GID_FMT ": %m", gid);
+ log_error_errno(errno, "Failed to change GID to " GID_FMT ": %m", gid);
return -errno;
}
}
if (setresuid(uid, uid, uid) < 0) {
- log_error("Failed to change UID to " UID_FMT ": %m", uid);
+ log_error_errno(errno, "Failed to change UID to " UID_FMT ": %m", uid);
return -errno;
}
}
log_info("Running as unit %s.", name);
execvpe(argv[0], argv, env);
- log_error("Failed to execute: %m");
+ log_error_errno(errno, "Failed to execute: %m");
return -errno;
}
fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (fd < 0) {
- log_error("socket() failed: %m");
+ log_error_errno(errno, "socket() failed: %m");
return -errno;
}
if (r < 0) {
r = -errno;
- log_error("bind(%s) failed: %m", sa.un.sun_path);
+ log_error_errno(errno, "bind(%s) failed: %m", sa.un.sun_path);
goto fail;
}
if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)) < 0) {
r = -errno;
- log_error("SO_PASSCRED failed: %m");
+ log_error_errno(errno, "SO_PASSCRED failed: %m");
goto fail;
}
fd = mkostemp_safe(temp, O_WRONLY|O_CLOEXEC);
if (fd < 0) {
- log_error("Failed to create password file: %m");
+ log_error_errno(errno, "Failed to create password file: %m");
r = -errno;
goto finish;
}
f = fdopen(fd, "w");
if (!f) {
- log_error("Failed to allocate FILE: %m");
+ log_error_errno(errno, "Failed to allocate FILE: %m");
r = -errno;
goto finish;
}
signal_fd = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
if (signal_fd < 0) {
- log_error("signalfd(): %m");
+ log_error_errno(errno, "signalfd(): %m");
r = -errno;
goto finish;
}
fflush(f);
if (ferror(f)) {
- log_error("Failed to write query file: %m");
+ log_error_errno(errno, "Failed to write query file: %m");
r = -errno;
goto finish;
}
final[sizeof(final)-9] = 'k';
if (rename(temp, final) < 0) {
- log_error("Failed to rename query file: %m");
+ log_error_errno(errno, "Failed to rename query file: %m");
r = -errno;
goto finish;
}
if (errno == EINTR)
continue;
- log_error("poll() failed: %m");
+ log_error_errno(errno, "poll() failed: %m");
r = -errno;
goto finish;
}
errno == EINTR)
continue;
- log_error("recvmsg() failed: %m");
+ log_error_errno(errno, "recvmsg() failed: %m");
r = -errno;
goto finish;
}
fd = open(root, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW);
if (fd < 0) {
- log_error("Failed to open root file system: %m");
+ log_error_errno(errno, "Failed to open root file system: %m");
return -errno;
}
r = symlinkat(target, fd, table[i].dir);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create symlink at %s/%s: %m", root, table[i].dir);
+ log_error_errno(errno, "Failed to create symlink at %s/%s: %m", root, table[i].dir);
return -errno;
}
continue;
RUN_WITH_UMASK(0000)
r = mkdirat(fd, table[i].dir, table[i].mode);
if (r < 0 && errno != EEXIST) {
- log_error("Failed to create directory at %s/%s: %m", root, table[i].dir);
+ log_error_errno(errno, "Failed to create directory at %s/%s: %m", root, table[i].dir);
return -errno;
}
}
* which we want to avoid. */
if (setresgid(gid, gid, gid) < 0) {
- log_error("Failed to change group ID: %m");
+ log_error_errno(errno, "Failed to change group ID: %m");
return -errno;
}
if (setgroups(0, NULL) < 0) {
- log_error("Failed to drop auxiliary groups list: %m");
+ log_error_errno(errno, "Failed to drop auxiliary groups list: %m");
return -errno;
}
if (prctl(PR_SET_KEEPCAPS, 1) < 0) {
- log_error("Failed to enable keep capabilities flag: %m");
+ log_error_errno(errno, "Failed to enable keep capabilities flag: %m");
return -errno;
}
r = setresuid(uid, uid, uid);
if (r < 0) {
- log_error("Failed to change user ID: %m");
+ log_error_errno(errno, "Failed to change user ID: %m");
return -errno;
}
if (prctl(PR_SET_KEEPCAPS, 0) < 0) {
- log_error("Failed to disable keep capabilities flag: %m");
+ log_error_errno(errno, "Failed to disable keep capabilities flag: %m");
return -errno;
}
if (cap_set_flag(d, CAP_EFFECTIVE, j, bits, CAP_SET) < 0 ||
cap_set_flag(d, CAP_PERMITTED, j, bits, CAP_SET) < 0) {
- log_error("Failed to enable capabilities bits: %m");
+ log_error_errno(errno, "Failed to enable capabilities bits: %m");
return -errno;
}
}
if (cap_set_proc(d) < 0) {
- log_error("Failed to increase capabilities: %m");
+ log_error_errno(errno, "Failed to increase capabilities: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_warning("Failed to open /proc/sysvipc/shm: %m");
+ log_warning_errno(errno, "Failed to open /proc/sysvipc/shm: %m");
return -errno;
}
if (errno == EIDRM || errno == EINVAL)
continue;
- log_warning("Failed to remove SysV shared memory segment %i: %m", shmid);
+ log_warning_errno(errno, "Failed to remove SysV shared memory segment %i: %m", shmid);
ret = -errno;
}
}
return ret;
fail:
- log_warning("Failed to read /proc/sysvipc/shm: %m");
+ log_warning_errno(errno, "Failed to read /proc/sysvipc/shm: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_warning("Failed to open /proc/sysvipc/sem: %m");
+ log_warning_errno(errno, "Failed to open /proc/sysvipc/sem: %m");
return -errno;
}
if (errno == EIDRM || errno == EINVAL)
continue;
- log_warning("Failed to remove SysV semaphores object %i: %m", semid);
+ log_warning_errno(errno, "Failed to remove SysV semaphores object %i: %m", semid);
ret = -errno;
}
}
return ret;
fail:
- log_warning("Failed to read /proc/sysvipc/sem: %m");
+ log_warning_errno(errno, "Failed to read /proc/sysvipc/sem: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_warning("Failed to open /proc/sysvipc/msg: %m");
+ log_warning_errno(errno, "Failed to open /proc/sysvipc/msg: %m");
return -errno;
}
if (errno == EIDRM || errno == EINVAL)
continue;
- log_warning("Failed to remove SysV message queue %i: %m", msgid);
+ log_warning_errno(errno, "Failed to remove SysV message queue %i: %m", msgid);
ret = -errno;
}
}
return ret;
fail:
- log_warning("Failed to read /proc/sysvipc/msg: %m");
+ log_warning_errno(errno, "Failed to read /proc/sysvipc/msg: %m");
return -errno;
}
if (errno == ENOENT)
continue;
- log_warning("Failed to stat() POSIX shared memory segment %s: %m", de->d_name);
+ log_warning_errno(errno, "Failed to stat() POSIX shared memory segment %s: %m", de->d_name);
ret = -errno;
continue;
}
kid = xopendirat(dirfd(dir), de->d_name, O_NOFOLLOW|O_NOATIME);
if (!kid) {
if (errno != ENOENT) {
- log_warning("Failed to enter shared memory directory %s: %m", de->d_name);
+ log_warning_errno(errno, "Failed to enter shared memory directory %s: %m", de->d_name);
ret = -errno;
}
} else {
if (errno == ENOENT)
continue;
- log_warning("Failed to remove POSIX shared memory directory %s: %m", de->d_name);
+ log_warning_errno(errno, "Failed to remove POSIX shared memory directory %s: %m", de->d_name);
ret = -errno;
}
} else {
if (errno == ENOENT)
continue;
- log_warning("Failed to remove POSIX shared memory segment %s: %m", de->d_name);
+ log_warning_errno(errno, "Failed to remove POSIX shared memory segment %s: %m", de->d_name);
ret = -errno;
}
}
return ret;
fail:
- log_warning("Failed to read /dev/shm: %m");
+ log_warning_errno(errno, "Failed to read /dev/shm: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_warning("Failed to open /dev/shm: %m");
+ log_warning_errno(errno, "Failed to open /dev/shm: %m");
return -errno;
}
if (errno == ENOENT)
return 0;
- log_warning("Failed to open /dev/mqueue: %m");
+ log_warning_errno(errno, "Failed to open /dev/mqueue: %m");
return -errno;
}
if (errno == ENOENT)
continue;
- log_warning("Failed to stat() MQ segment %s: %m", de->d_name);
+ log_warning_errno(errno, "Failed to stat() MQ segment %s: %m", de->d_name);
ret = -errno;
continue;
}
if (errno == ENOENT)
continue;
- log_warning("Failed to unlink POSIX message queue %s: %m", fn);
+ log_warning_errno(errno, "Failed to unlink POSIX message queue %s: %m", fn);
ret = -errno;
}
}
return ret;
fail:
- log_warning("Failed to read /dev/mqueue: %m");
+ log_warning_errno(errno, "Failed to read /dev/mqueue: %m");
return -errno;
}
if (feof(f))
break;
- log_error("Failed to read configuration file '%s': %m", filename);
+ log_error_errno(errno, "Failed to read configuration file '%s': %m", filename);
return -errno;
}
mkdir_parents(lnk, 0755);
if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0) {
- log_error("Failed to create symlink %s: %m", lnk);
+ log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
return -errno;
}
} while (n > 0);
if (n < 0) {
- log_error("Internal pager failed: %m");
+ log_error_errno(errno, "Internal pager failed: %m");
_exit(EXIT_FAILURE);
}
columns();
if (pipe(fd) < 0) {
- log_error("Failed to create pager pipe: %m");
+ log_error_errno(errno, "Failed to create pager pipe: %m");
return -errno;
}
pager_pid = fork();
if (pager_pid < 0) {
r = -errno;
- log_error("Failed to fork pager: %m");
+ log_error_errno(errno, "Failed to fork pager: %m");
safe_close_pair(fd);
return r;
}
/* Return in the parent */
if (dup2(fd[1], STDOUT_FILENO) < 0) {
- log_error("Failed to duplicate pager pipe: %m");
+ log_error_errno(errno, "Failed to duplicate pager pipe: %m");
return -errno;
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return -errno;
}
}
execvp(args[0], (char**) args);
- log_error("Failed to execute man: %m");
+ log_error_errno(errno, "Failed to execute man: %m");
_exit(EXIT_FAILURE);
}
f->stdin_event_source = sd_event_source_unref(f->stdin_event_source);
} else {
- log_error("read(): %m");
+ log_error_errno(errno, "read(): %m");
return sd_event_exit(f->event, EXIT_FAILURE);
}
} else if (k == 0) {
f->master_event_source = sd_event_source_unref(f->master_event_source);
} else {
- log_error("write(): %m");
+ log_error_errno(errno, "write(): %m");
return sd_event_exit(f->event, EXIT_FAILURE);
}
} else {
f->master_event_source = sd_event_source_unref(f->master_event_source);
} else {
- log_error("read(): %m");
+ log_error_errno(errno, "read(): %m");
return sd_event_exit(f->event, EXIT_FAILURE);
}
} else
f->stdout_hangup = true;
f->stdout_event_source = sd_event_source_unref(f->stdout_event_source);
} else {
- log_error("write(): %m");
+ log_error_errno(errno, "write(): %m");
return sd_event_exit(f->event, EXIT_FAILURE);
}
if (ignore_erofs && errno == EROFS)
return 0;
- log_debug("Unable to fix SMACK label of %s: %m", path);
+ log_debug_errno(errno, "Unable to fix SMACK label of %s: %m", path);
r = -errno;
}
#endif
if (free_bind) {
one = 1;
if (setsockopt(fd, IPPROTO_IP, IP_FREEBIND, &one, sizeof(one)) < 0)
- log_warning("IP_FREEBIND failed: %m");
+ log_warning_errno(errno, "IP_FREEBIND failed: %m");
}
if (transparent) {
one = 1;
if (setsockopt(fd, IPPROTO_IP, IP_TRANSPARENT, &one, sizeof(one)) < 0)
- log_warning("IP_TRANSPARENT failed: %m");
+ log_warning_errno(errno, "IP_TRANSPARENT failed: %m");
}
}
assert(ret);
if (getsockname(fd, &sa.sa, &salen) < 0) {
- log_error("getsockname(%d) failed: %m", fd);
+ log_error_errno(errno, "getsockname(%d) failed: %m", fd);
return -errno;
}
old_root_remove = in_initrd();
if (stat(new_root, &new_root_stat) < 0) {
- log_error("Failed to stat directory %s: %m", new_root);
+ log_error_errno(errno, "Failed to stat directory %s: %m", new_root);
return -errno;
}
*
* https://bugzilla.redhat.com/show_bug.cgi?id=847418 */
if (mount(NULL, "/", NULL, MS_REC|MS_PRIVATE, NULL) < 0)
- log_warning("Failed to make \"/\" private mount: %m");
+ log_warning_errno(errno, "Failed to make \"/\" private mount: %m");
NULSTR_FOREACH(i, move_mounts) {
char new_mount[PATH_MAX];
* stat failed. Unmount the old mount
* point. */
if (umount2(i, MNT_DETACH) < 0)
- log_warning("Failed to unmount %s: %m", i);
+ log_warning_errno(errno, "Failed to unmount %s: %m", i);
continue;
}
if (mount(i, new_mount, NULL, mountflags, NULL) < 0) {
if (mountflags & MS_MOVE) {
- log_error("Failed to move mount %s to %s, forcing unmount: %m", i, new_mount);
+ log_error_errno(errno, "Failed to move mount %s to %s, forcing unmount: %m", i, new_mount);
if (umount2(i, MNT_FORCE) < 0)
- log_warning("Failed to unmount %s: %m", i);
+ log_warning_errno(errno, "Failed to unmount %s: %m", i);
}
if (mountflags & MS_BIND)
- log_error("Failed to bind mount %s to %s: %m", i, new_mount);
+ log_error_errno(errno, "Failed to bind mount %s to %s: %m", i, new_mount);
}
}
(void) base_filesystem_create(new_root);
if (chdir(new_root) < 0) {
- log_error("Failed to change directory to %s: %m", new_root);
+ log_error_errno(errno, "Failed to change directory to %s: %m", new_root);
return -errno;
}
if (old_root_remove) {
old_root_fd = open("/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY|O_DIRECTORY);
if (old_root_fd < 0)
- log_warning("Failed to open root directory: %m");
+ log_warning_errno(errno, "Failed to open root directory: %m");
}
/* We first try a pivot_root() so that we can umount the old
/* Immediately get rid of the old root, if detach_oldroot is set.
* Since we are running off it we need to do this lazily. */
if (detach_oldroot && umount2(oldroot, MNT_DETACH) < 0)
- log_error("Failed to lazily umount old root dir %s, %s: %m",
+ log_error_errno(errno, "Failed to lazily umount old root dir %s, %s: %m",
oldroot,
errno == ENOENT ? "ignoring" : "leaving it around");
} else if (mount(new_root, "/", NULL, MS_MOVE, NULL) < 0) {
- log_error("Failed to mount moving %s to /: %m", new_root);
+ log_error_errno(errno, "Failed to mount moving %s to /: %m", new_root);
return -errno;
}
if (chroot(".") < 0) {
- log_error("Failed to change root: %m");
+ log_error_errno(errno, "Failed to change root: %m");
return -errno;
}
if (chdir("/") < 0) {
- log_error("Failed to change directory: %m");
+ log_error_errno(errno, "Failed to change directory: %m");
return -errno;
}
struct stat rb;
if (fstat(old_root_fd, &rb) < 0)
- log_warning("Failed to stat old root directory, leaving: %m");
+ log_warning_errno(errno, "Failed to stat old root directory, leaving: %m");
else {
rm_rf_children(old_root_fd, false, false, &rb);
old_root_fd = -1;
executor_pid = fork();
if (executor_pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return;
} else if (executor_pid == 0) {
if (errno == ENOENT)
_exit(EXIT_SUCCESS);
- log_error("Failed to enumerate directory %s: %m", directory);
+ log_error_errno(errno, "Failed to enumerate directory %s: %m", directory);
_exit(EXIT_FAILURE);
}
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
continue;
} else if (pid == 0) {
char *_argv[2];
argv[0] = path;
execv(path, argv);
- log_error("Failed to execute %s: %m", path);
+ log_error_errno(errno, "Failed to execute %s: %m", path);
_exit(EXIT_FAILURE);
}
* keep an unused copy of stdin around. */
fd = open("/dev/tty", O_WRONLY);
if (fd < 0) {
- log_error("Failed to open /dev/tty: %m");
+ log_error_errno(errno, "Failed to open /dev/tty: %m");
_exit(EXIT_FAILURE);
}
flags = WDIOS_DISABLECARD;
r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
if (r < 0) {
- log_warning("Failed to disable hardware watchdog: %m");
+ log_warning_errno(errno, "Failed to disable hardware watchdog: %m");
return -errno;
}
} else {
sec = (int) ((watchdog_timeout + USEC_PER_SEC - 1) / USEC_PER_SEC);
r = ioctl(watchdog_fd, WDIOC_SETTIMEOUT, &sec);
if (r < 0) {
- log_warning("Failed to set timeout to %is: %m", sec);
+ log_warning_errno(errno, "Failed to set timeout to %is: %m", sec);
return -errno;
}
flags = WDIOS_ENABLECARD;
r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
if (r < 0) {
- log_warning("Failed to enable hardware watchdog: %m");
+ log_warning_errno(errno, "Failed to enable hardware watchdog: %m");
return -errno;
}
r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0);
if (r < 0) {
- log_warning("Failed to ping hardware watchdog: %m");
+ log_warning_errno(errno, "Failed to ping hardware watchdog: %m");
return -errno;
}
}
r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0);
if (r < 0) {
- log_warning("Failed to ping hardware watchdog: %m");
+ log_warning_errno(errno, "Failed to ping hardware watchdog: %m");
return -errno;
}
flags = WDIOS_DISABLECARD;
r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
if (r < 0)
- log_warning("Failed to disable hardware watchdog: %m");
+ log_warning_errno(errno, "Failed to disable hardware watchdog: %m");
/* To be sure, use magic close logic, too */
for (;;) {
break;
if (errno != EINTR) {
- log_error("Failed to disarm watchdog timer: %m");
+ log_error_errno(errno, "Failed to disarm watchdog timer: %m");
break;
}
}
if (errno == EAGAIN || errno == EINTR)
return 0;
- log_error("recvmsg(): %m");
+ log_error_errno(errno, "recvmsg(): %m");
return -errno;
}
fflush(f);
if (ferror(f) || rename(temp_path, "/run/systemd/shutdown/scheduled") < 0) {
- log_error("Failed to write information about scheduled shutdowns: %m");
+ log_error_errno(errno, "Failed to write information about scheduled shutdowns: %m");
r = -errno;
unlink(temp_path);
pollfd[i].events = POLLIN;
pollfd[i].fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC);
if (pollfd[i].fd < 0) {
- log_error("timerfd_create(): %m");
+ log_error_errno(errno, "timerfd_create(): %m");
goto finish;
}
}
if (errno == EAGAIN || errno == EINTR)
continue;
- log_error("poll(): %m");
+ log_error_errno(errno, "poll(): %m");
goto finish;
}
warn_wall(n, &b.command);
}
if (timerfd_settime(pollfd[FD_WALL_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
zero(its);
timespec_store(&its.it_value, when_nologin(b.command.usec));
if (timerfd_settime(pollfd[FD_NOLOGIN_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
zero(its);
timespec_store(&its.it_value, b.command.usec);
if (timerfd_settime(pollfd[FD_SHUTDOWN_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
/* Restart timer */
timespec_store(&its.it_value, when_wall(n, b.command.usec));
if (timerfd_settime(pollfd[FD_WALL_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
- log_error("timerfd_settime(): %m");
+ log_error_errno(errno, "timerfd_settime(): %m");
goto finish;
}
}
(b.command.warn_wall ? NULL : "--no-wall"),
NULL);
- log_error("Failed to execute /sbin/shutdown: %m");
+ log_error_errno(errno, "Failed to execute /sbin/shutdown: %m");
}
sd_notify(false,
fclose(*f);
*f = fopen("/sys/power/state", "we");
if (!*f) {
- log_error("Failed to open /sys/power/state: %m");
+ log_error_errno(errno, "Failed to open /sys/power/state: %m");
return -errno;
}
}
* we can abort before modifying any state. */
f = fopen("/sys/power/state", "we");
if (!f) {
- log_error("Failed to open /sys/power/state: %m");
+ log_error_errno(errno, "Failed to open /sys/power/state: %m");
return -errno;
}
r = pipe2(buffer, O_CLOEXEC|O_NONBLOCK);
if (r < 0) {
- log_error("Failed to allocate pipe buffer: %m");
+ log_error_errno(errno, "Failed to allocate pipe buffer: %m");
return -errno;
}
r = fcntl(buffer[0], F_GETPIPE_SZ);
if (r < 0) {
- log_error("Failed to get pipe buffer size: %m");
+ log_error_errno(errno, "Failed to get pipe buffer size: %m");
return -errno;
}
*from_source = sd_event_source_unref(*from_source);
*from = safe_close(*from);
} else if (errno != EAGAIN && errno != EINTR) {
- log_error("Failed to splice: %m");
+ log_error_errno(errno, "Failed to splice: %m");
return -errno;
}
}
*to_source = sd_event_source_unref(*to_source);
*to = safe_close(*to);
} else if (errno != EAGAIN && errno != EINTR) {
- log_error("Failed to splice: %m");
+ log_error_errno(errno, "Failed to splice: %m");
return -errno;
}
}
solen = sizeof(error);
r = getsockopt(fd, SOL_SOCKET, SO_ERROR, &error, &solen);
if (r < 0) {
- log_error("Failed to issue SO_ERROR: %m");
+ log_error_errno(errno, "Failed to issue SO_ERROR: %m");
goto fail;
}
c->client_fd = socket(sa->sa_family, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
if (c->client_fd < 0) {
- log_error("Failed to get remote socket: %m");
+ log_error_errno(errno, "Failed to get remote socket: %m");
goto fail;
}
goto fail;
}
} else {
- log_error("Failed to connect to remote host: %m");
+ log_error_errno(errno, "Failed to connect to remote host: %m");
goto fail;
}
} else {
nfd = accept4(fd, NULL, NULL, SOCK_NONBLOCK|SOCK_CLOEXEC);
if (nfd < 0) {
if (errno != -EAGAIN)
- log_warning("Failed to accept() socket: %m");
+ log_warning_errno(errno, "Failed to accept() socket: %m");
} else {
getpeername_pretty(nfd, &peer);
log_debug("New connection from %s", strna(peer));
if (feof(f))
break;
- log_error("Failed to read file '%s', ignoring: %m", path);
+ log_error_errno(errno, "Failed to read file '%s', ignoring: %m", path);
return -errno;
}
if (errno == ENOENT)
return 0;
- log_error("Failed to check for system update: %m");
+ log_error_errno(errno, "Failed to check for system update: %m");
return -EINVAL;
}
p = strappenda(arg_dest, "/default.target");
if (symlink(SYSTEM_DATA_UNIT_PATH "/system-update.target", p) < 0) {
- log_error("Failed to create symlink %s: %m", p);
+ log_error_errno(errno, "Failed to create symlink %s: %m", p);
return -errno;
}
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return -errno;
} else if (pid == 0) {
/* Child */
if (errno == ENOENT)
return 0;
- log_error("Failed to open "INIT_FIFO": %m");
+ log_error_errno(errno, "Failed to open "INIT_FIFO": %m");
return -errno;
}
errno = 0;
r = loop_write(fd, &request, sizeof(request), false) != sizeof(request);
if (r) {
- log_error("Failed to write to "INIT_FIFO": %m");
+ log_error_errno(errno, "Failed to write to "INIT_FIFO": %m");
return errno > 0 ? -errno : -EIO;
}
assert(arg_action == ACTION_RELOAD || arg_action == ACTION_REEXEC);
if (kill(1, arg_action == ACTION_RELOAD ? SIGHUP : SIGTERM) < 0) {
- log_error("kill() failed: %m");
+ log_error_errno(errno, "kill() failed: %m");
return -errno;
}
/* Copy over the access mask */
if (fchmod(fileno(dst), st.st_mode & 07777) < 0)
- log_warning("Failed to change mode on %s: %m", backup);
+ log_warning_errno(errno, "Failed to change mode on %s: %m", backup);
if (fchown(fileno(dst), st.st_uid, st.st_gid)< 0)
- log_warning("Failed to change ownership of %s: %m", backup);
+ log_warning_errno(errno, "Failed to change ownership of %s: %m", backup);
ts[0] = st.st_atim;
ts[1] = st.st_mtim;
if (futimens(fileno(dst), ts) < 0)
- log_warning("Failed to fix access and modification time of %s: %m", backup);
+ log_warning_errno(errno, "Failed to fix access and modification time of %s: %m", backup);
if (rename(temp, backup) < 0)
goto fail;
return 0;
}
if (!IN_SET(errno, 0, ENOENT)) {
- log_error("Failed to check if user %s already exists: %m", i->name);
+ log_error_errno(errno, "Failed to check if user %s already exists: %m", i->name);
return -errno;
}
return -EBADMSG;
}
if (!IN_SET(errno, 0, ENOENT)) {
- log_error("Failed to check if user %s already exists in shadow database: %m", i->name);
+ log_error_errno(errno, "Failed to check if user %s already exists in shadow database: %m", i->name);
return -errno;
}
}
return 0;
}
if (!IN_SET(errno, 0, ENOENT)) {
- log_error("Failed to check if group %s already exists: %m", i->name);
+ log_error_errno(errno, "Failed to check if group %s already exists: %m", i->name);
return -errno;
}
}
}
if (ferror(f)) {
- log_error("Failed to read from file %s: %m", fn);
+ log_error_errno(errno, "Failed to read from file %s: %m", fn);
if (r == 0)
r = -EIO;
}
f = fopen(unit, "wxe");
if (!f) {
- log_error("Failed to create unit file %s: %m", unit);
+ log_error_errno(errno, "Failed to create unit file %s: %m", unit);
return -errno;
}
d = opendir(*path);
if (!d) {
if (errno != ENOENT)
- log_warning("opendir(%s) failed: %m", *path);
+ log_warning_errno(errno, "opendir(%s) failed: %m", *path);
continue;
}
d = opendir(path);
if (!d) {
if (errno != ENOENT)
- log_warning("opendir(%s) failed: %m", path);
+ log_warning_errno(errno, "opendir(%s) failed: %m", path);
continue;
}
nobody = getpwnam("nobody");
if (!nobody) {
- log_error("Could not find nobody user: %m");
+ log_error_errno(errno, "Could not find nobody user: %m");
return -EXIT_TEST_SKIP;
}
test_uid = nobody->pw_uid;
}
execl("/bin/sh", "/bin/sh", NULL);
- log_error("execl(): %m");
+ log_error_errno(errno, "execl(): %m");
return 1;
}
/* Set system clock */
if (clock_settime(CLOCK_REALTIME, &ts) < 0) {
- log_error("Failed to set local time: %m");
+ log_error_errno(errno, "Failed to set local time: %m");
return sd_bus_error_set_errnof(error, errno, "Failed to set local time: %m");
}
m->pending = true;
log_debug("Sent NTP request to %s (%s).", strna(pretty), m->current_server_name->string);
} else {
- log_debug("Sending NTP request to %s (%s) failed: %m", strna(pretty), m->current_server_name->string);
+ log_debug_errno(errno, "Sending NTP request to %s (%s) failed: %m", strna(pretty), m->current_server_name->string);
return manager_connect(m);
}
m->clock_watch_fd = timerfd_create(CLOCK_REALTIME, TFD_NONBLOCK|TFD_CLOEXEC);
if (m->clock_watch_fd < 0) {
- log_error("Failed to create timerfd: %m");
+ log_error_errno(errno, "Failed to create timerfd: %m");
return -errno;
}
if (timerfd_settime(m->clock_watch_fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) {
- log_error("Failed to set up timerfd: %m");
+ log_error_errno(errno, "Failed to set up timerfd: %m");
return -errno;
}
m->sync = true;
r = manager_adjust_clock(m, offset, leap_sec);
if (r < 0)
- log_error("Failed to call clock_adjtime(): %m");
+ log_error_errno(errno, "Failed to call clock_adjtime(): %m");
}
log_info("interval/delta/delay/jitter/drift " USEC_FMT "s/%+.3fs/%.3fs/%.3fs/%+ippm%s",
format_timestamp(date, sizeof(date), min));
if (clock_settime(CLOCK_REALTIME, timespec_store(&ts, min)) < 0)
- log_error("Failed to restore system clock: %m");
+ log_error_errno(errno, "Failed to restore system clock: %m");
}
return 0;
/* FUSE, NFS mounts, SELinux might return EACCES */
if (errno == EACCES)
- log_debug("stat(%s/%s) failed: %m", p, dent->d_name);
+ log_debug_errno(errno, "stat(%s/%s) failed: %m", p, dent->d_name);
else
- log_error("stat(%s/%s) failed: %m", p, dent->d_name);
+ log_error_errno(errno, "stat(%s/%s) failed: %m", p, dent->d_name);
r = -errno;
continue;
}
sub_dir = xopendirat(dirfd(d), dent->d_name, O_NOFOLLOW|O_NOATIME);
if (!sub_dir) {
if (errno != ENOENT) {
- log_error("opendir(%s/%s) failed: %m", p, dent->d_name);
+ log_error_errno(errno, "opendir(%s/%s) failed: %m", p, dent->d_name);
r = -errno;
}
if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) {
if (errno != ENOENT && errno != ENOTEMPTY) {
- log_error("rmdir(%s): %m", sub_path);
+ log_error_errno(errno, "rmdir(%s): %m", sub_path);
r = -errno;
}
}
if (unlinkat(dirfd(d), dent->d_name, 0) < 0) {
if (errno != ENOENT) {
- log_error("unlink(%s): %m", sub_path);
+ log_error_errno(errno, "unlink(%s): %m", sub_path);
r = -errno;
}
}
times[1] = ds->st_mtim;
if (futimens(dirfd(d), times) < 0)
- log_error("utimensat(%s): %m", p);
+ log_error_errno(errno, "utimensat(%s): %m", p);
}
return r;
if (!st_valid || m != (st.st_mode & 07777)) {
if (chmod(path, m) < 0) {
- log_error("chmod(%s) failed: %m", path);
+ log_error_errno(errno, "chmod(%s) failed: %m", path);
return -errno;
}
}
i->uid_set ? i->uid : (uid_t) -1,
i->gid_set ? i->gid : (gid_t) -1) < 0) {
- log_error("chown(%s) failed: %m", path);
+ log_error_errno(errno, "chown(%s) failed: %m", path);
return -errno;
}
if (i->type == WRITE_FILE && errno == ENOENT)
return 0;
- log_error("Failed to create file %s: %m", path);
+ log_error_errno(errno, "Failed to create file %s: %m", path);
return -errno;
}
fd = safe_close(fd);
if (stat(path, &st) < 0) {
- log_error("stat(%s) failed: %m", path);
+ log_error_errno(errno, "stat(%s) failed: %m", path);
return -errno;
}
if (errno == 0)
errno = EIO;
- log_error("glob(%s) failed: %m", i->path);
+ log_error_errno(errno, "glob(%s) failed: %m", i->path);
return -errno;
}
return log_error_errno(r, "Failed to copy files to %s: %m", i->path);
if (stat(i->argument, &a) < 0) {
- log_error("stat(%s) failed: %m", i->argument);
+ log_error_errno(errno, "stat(%s) failed: %m", i->argument);
return -errno;
}
if (stat(i->path, &b) < 0) {
- log_error("stat(%s) failed: %m", i->path);
+ log_error_errno(errno, "stat(%s) failed: %m", i->path);
return -errno;
}
return log_error_errno(r, "Failed to create directory %s: %m", i->path);
if (stat(i->path, &st) < 0) {
- log_error("stat(%s) failed: %m", i->path);
+ log_error_errno(errno, "stat(%s) failed: %m", i->path);
return -errno;
}
if (r < 0) {
if (errno != EEXIST) {
- log_error("Failed to create fifo %s: %m", i->path);
+ log_error_errno(errno, "Failed to create fifo %s: %m", i->path);
return -errno;
}
if (stat(i->path, &st) < 0) {
- log_error("stat(%s) failed: %m", i->path);
+ log_error_errno(errno, "stat(%s) failed: %m", i->path);
return -errno;
}
_cleanup_free_ char *x = NULL;
if (errno != EEXIST) {
- log_error("symlink(%s, %s) failed: %m", i->argument, i->path);
+ log_error_errno(errno, "symlink(%s, %s) failed: %m", i->argument, i->path);
return -errno;
}
}
if (errno != EEXIST) {
- log_error("Failed to create device node %s: %m", i->path);
+ log_error_errno(errno, "Failed to create device node %s: %m", i->path);
return -errno;
}
if (stat(i->path, &st) < 0) {
- log_error("stat(%s) failed: %m", i->path);
+ log_error_errno(errno, "stat(%s) failed: %m", i->path);
return -errno;
}
case REMOVE_PATH:
if (remove(instance) < 0 && errno != ENOENT) {
- log_error("remove(%s): %m", instance);
+ log_error_errno(errno, "remove(%s): %m", instance);
return -errno;
}
if (errno == ENOENT || errno == ENOTDIR)
return 0;
- log_error("Failed to open directory %s: %m", i->path);
+ log_error_errno(errno, "Failed to open directory %s: %m", i->path);
return -errno;
}
if (fstat(dirfd(d), &s) < 0) {
- log_error("stat(%s) failed: %m", i->path);
+ log_error_errno(errno, "stat(%s) failed: %m", i->path);
return -errno;
}
}
if (fstatat(dirfd(d), "..", &ps, AT_SYMLINK_NOFOLLOW) != 0) {
- log_error("stat(%s/..) failed: %m", i->path);
+ log_error_errno(errno, "stat(%s/..) failed: %m", i->path);
return -errno;
}
}
if (ferror(f)) {
- log_error("Failed to read from file %s: %m", fn);
+ log_error_errno(errno, "Failed to read from file %s: %m", fn);
if (r == 0)
r = -EIO;
}
r = connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1));
if (r < 0) {
- log_error("Failed to connect to Plymouth: %m");
+ log_error_errno(errno, "Failed to connect to Plymouth: %m");
return -errno;
}
socket_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
if (socket_fd < 0) {
- log_error("socket(): %m");
+ log_error_errno(errno, "socket(): %m");
return -errno;
}
r = sendto(socket_fd, packet, packet_length, MSG_NOSIGNAL, &sa.sa,
offsetof(struct sockaddr_un, sun_path) + strlen(socket_name));
if (r < 0) {
- log_error("Failed to send: %m");
+ log_error_errno(errno, "Failed to send: %m");
return r;
}
}
if (errno == ENOENT)
return 0;
- log_error("opendir(/run/systemd/ask-password): %m");
+ log_error_errno(errno, "opendir(/run/systemd/ask-password): %m");
return -errno;
}
} else {
/* If this fails, then try HDIO_GET_IDENTITY */
if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) {
- log_debug("HDIO_GET_IDENTITY failed for '%s': %m", node);
+ log_debug_errno(errno, "HDIO_GET_IDENTITY failed for '%s': %m", node);
rc = 2;
goto close;
}
if (errno == ENOENT)
return 1;
else {
- log_error("can't open %s: %m", config_file);
+ log_error_errno(errno, "can't open %s: %m", config_file);
return -1;
}
}
dev_scsi->use_sg = 3;
goto resend;
}
- log_debug("%s: ioctl failed: %m", dev_scsi->kernel);
+ log_debug_errno(errno, "%s: ioctl failed: %m", dev_scsi->kernel);
goto error;
}
fd = open(devname, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
if (fd < 0) {
- log_debug("scsi_id: cannot open %s: %m", devname);
+ log_debug_errno(errno, "scsi_id: cannot open %s: %m", devname);
return 1;
}
if (fstat(fd, &statbuf) < 0) {
- log_debug("scsi_id: cannot stat %s: %m", devname);
+ log_debug_errno(errno, "scsi_id: cannot stat %s: %m", devname);
err = 2;
goto out;
}
fd = open(udev_device_get_devnode(dev), O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
if (fd < 0) {
- log_error("Error, opening device '%s': %m", node);
+ log_error_errno(errno, "Error, opening device '%s': %m", node);
return EXIT_FAILURE;
}
log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)",
map[i].scan, map[i].scan, map[i].key, map[i].key);
if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0)
- log_error("Error calling EVIOCSKEYCODE on device node '%s' (scan code 0x%x, key code %d): %m", node, map[i].scan, map[i].key);
+ log_error_errno(errno, "Error calling EVIOCSKEYCODE on device node '%s' (scan code 0x%x, key code %d): %m", node, map[i].scan, map[i].key);
}
/* install list of force-release codes */
if (fd < 0) {
uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
if (uctrl->sock < 0) {
- log_error("error getting socket: %m");
+ log_error_errno(errno, "error getting socket: %m");
udev_ctrl_unref(uctrl);
return NULL;
}
}
r = setsockopt(uctrl->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
if (r < 0)
- log_warning("could not set SO_PASSCRED: %m");
+ log_warning_errno(errno, "could not set SO_PASSCRED: %m");
uctrl->saddr.sun_family = AF_LOCAL;
strscpy(uctrl->saddr.sun_path, sizeof(uctrl->saddr.sun_path), "/run/udev/control");
if (err < 0) {
err = -errno;
- log_error("bind failed: %m");
+ log_error_errno(errno, "bind failed: %m");
return err;
}
err = listen(uctrl->sock, 0);
if (err < 0) {
err = -errno;
- log_error("listen failed: %m");
+ log_error_errno(errno, "listen failed: %m");
return err;
}
conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
if (conn->sock < 0) {
if (errno != EINTR)
- log_error("unable to receive ctrl connection: %m");
+ log_error_errno(errno, "unable to receive ctrl connection: %m");
goto err;
}
/* enable receiving of the sender credentials in the messages */
r = setsockopt(conn->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
if (r < 0)
- log_warning("could not set SO_PASSCRED: %m");
+ log_warning_errno(errno, "could not set SO_PASSCRED: %m");
udev_ctrl_ref(uctrl);
return conn;
goto err;
} else {
if (!(pfd[0].revents & POLLIN)) {
- log_error("ctrl connection error: %m");
+ log_error_errno(errno, "ctrl connection error: %m");
goto err;
}
}
size = recvmsg(conn->sock, &smsg, 0);
if (size < 0) {
- log_error("unable to receive ctrl message: %m");
+ log_error_errno(errno, "unable to receive ctrl message: %m");
goto err;
}
cmsg = CMSG_FIRSTHDR(&smsg);
if (fd_stderr < 0)
dup2(fd, STDERR_FILENO);
} else
- log_error("open /dev/null failed: %m");
+ log_error_errno(errno, "open /dev/null failed: %m");
/* connect pipes to std{out,err} */
if (fd_stdout >= 0) {
execve(argv[0], argv, envp);
/* exec failed */
- log_error("failed to execute '%s' '%s': %m", argv[0], cmd);
+ log_error_errno(errno, "failed to execute '%s' '%s': %m", argv[0], cmd);
return -errno;
}
fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) {
- log_error("error creating epoll fd: %m");
+ log_error_errno(errno, "error creating epoll fd: %m");
return;
}
if (fd_stdout >= 0) {
r = epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_stdout, &ep_outpipe);
if (r < 0) {
- log_error("fail to add stdout fd to epoll: %m");
+ log_error_errno(errno, "fail to add stdout fd to epoll: %m");
return;
}
}
if (fd_stderr >= 0) {
r = epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_stderr, &ep_errpipe);
if (r < 0) {
- log_error("fail to add stderr fd to epoll: %m");
+ log_error_errno(errno, "fail to add stderr fd to epoll: %m");
return;
}
}
if (fdcount < 0) {
if (errno == EINTR)
continue;
- log_error("failed to poll: %m");
+ log_error_errno(errno, "failed to poll: %m");
return;
} else if (fdcount == 0) {
log_error("timeout '%s'", cmd);
} else if (ev[i].events & EPOLLHUP) {
r = epoll_ctl(fd_ep, EPOLL_CTL_DEL, *fd, NULL);
if (r < 0) {
- log_error("failed to remove fd from epoll: %m");
+ log_error_errno(errno, "failed to remove fd from epoll: %m");
return;
}
*fd = -1;
if (errno == EINTR)
continue;
err = -errno;
- log_error("failed to poll: %m");
+ log_error_errno(errno, "failed to poll: %m");
goto out;
}
if (fdcount == 0) {
if (errno == EINTR)
continue;
err = -errno;
- log_error("failed to poll: %m");
+ log_error_errno(errno, "failed to poll: %m");
goto out;
}
if (fdcount == 0) {
if (result != NULL || log_get_max_level() >= LOG_INFO) {
if (pipe2(outpipe, O_NONBLOCK) != 0) {
err = -errno;
- log_error("pipe failed: %m");
+ log_error_errno(errno, "pipe failed: %m");
goto out;
}
}
if (log_get_max_level() >= LOG_INFO) {
if (pipe2(errpipe, O_NONBLOCK) != 0) {
err = -errno;
- log_error("pipe failed: %m");
+ log_error_errno(errno, "pipe failed: %m");
goto out;
}
}
_exit(2 );
case -1:
- log_error("fork of '%s' failed: %m", cmd);
+ log_error_errno(errno, "fork of '%s' failed: %m", cmd);
err = -1;
goto out;
default:
mac_selinux_create_file_clear();
} while (err == -ENOENT);
if (err != 0) {
- log_error("symlink '%s' '%s' failed: %m", target, slink_tmp);
+ log_error_errno(errno, "symlink '%s' '%s' failed: %m", target, slink_tmp);
goto exit;
}
err = rename(slink_tmp, slink);
if (err != 0) {
- log_error("rename '%s' '%s' failed: %m", slink_tmp, slink);
+ log_error_errno(errno, "rename '%s' '%s' failed: %m", slink_tmp, slink);
unlink(slink_tmp);
}
exit:
if (lstat(devnode, &stats) != 0) {
err = -errno;
- log_debug("can not stat() node '%s' (%m)", devnode);
+ log_debug_errno(errno, "can not stat() node '%s' (%m)", devnode);
goto out;
}
log_debug("set permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
err = chmod(devnode, mode);
if (err < 0)
- log_warning("setting mode of %s to %#o failed: %m", devnode, mode);
+ log_warning_errno(errno, "setting mode of %s to %#o failed: %m", devnode, mode);
err = chown(devnode, uid, gid);
if (err < 0)
- log_warning("setting owner of %s to uid=%u, gid=%u failed: %m", devnode, uid, gid);
+ log_warning_errno(errno, "setting owner of %s to uid=%u, gid=%u failed: %m", devnode, uid, gid);
} else {
log_debug("preserve permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
}
f = fopen(attr, "we");
if (f != NULL) {
if (fprintf(f, "%s", value) <= 0)
- log_error("error writing ATTR{%s}: %m", attr);
+ log_error_errno(errno, "error writing ATTR{%s}: %m", attr);
fclose(f);
} else {
- log_error("error opening ATTR{%s} for writing: %m", attr);
+ log_error_errno(errno, "error opening ATTR{%s} for writing: %m", attr);
}
break;
}
strscpyl(tag_symlink, sizeof(tag_symlink), tags_dir, unescaped_filename, NULL);
r = symlink(device_node, tag_symlink);
if (r < 0 && errno != EEXIST) {
- log_error("failed to create symlink %s -> %s: %m", tag_symlink, device_node);
+ log_error_errno(errno, "failed to create symlink %s -> %s: %m", tag_symlink, device_node);
return -errno;
} else
r = 0;
int udev_watch_init(struct udev *udev) {
inotify_fd = inotify_init1(IN_CLOEXEC);
if (inotify_fd < 0)
- log_error("inotify_init failed: %m");
+ log_error_errno(errno, "inotify_init failed: %m");
return inotify_fd;
}
dir = opendir("/run/udev/watch.old");
if (dir == NULL) {
- log_error("unable to open old watches dir /run/udev/watch.old; old watches will not be restored: %m");
+ log_error_errno(errno, "unable to open old watches dir /run/udev/watch.old; old watches will not be restored: %m");
return;
}
rmdir("/run/udev/watch.old");
} else if (errno != ENOENT) {
- log_error("unable to move watches dir /run/udev/watch; old watches will not be restored: %m");
+ log_error_errno(errno, "unable to move watches dir /run/udev/watch; old watches will not be restored: %m");
}
}
log_debug("adding watch on '%s'", udev_device_get_devnode(dev));
wd = inotify_add_watch(inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);
if (wd < 0) {
- log_error("inotify_add_watch(%d, %s, %o) failed: %m",
+ log_error_errno(errno, "inotify_add_watch(%d, %s, %o) failed: %m",
inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);
return;
}
unlink(filename);
r = symlink(udev_device_get_id_filename(dev), filename);
if (r < 0)
- log_error("Failed to create symlink %s: %m", filename);
+ log_error_errno(errno, "Failed to create symlink %s: %m", filename);
udev_device_set_watch_handle(dev, wd);
}
fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) {
- log_error("error creating epoll fd: %m");
+ log_error_errno(errno, "error creating epoll fd: %m");
return 1;
}
ep_udev.events = EPOLLIN;
ep_udev.data.fd = fd_udev;
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_udev, &ep_udev) < 0) {
- log_error("fail to add fd to epoll: %m");
+ log_error_errno(errno, "fail to add fd to epoll: %m");
return 2;
}
ep_kernel.events = EPOLLIN;
ep_kernel.data.fd = fd_kernel;
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_kernel, &ep_kernel) < 0) {
- log_error("fail to add fd to epoll: %m");
+ log_error_errno(errno, "fail to add fd to epoll: %m");
return 5;
}
if (fd < 0)
continue;
if (write(fd, action, strlen(action)) < 0)
- log_debug("error writing '%s' to '%s': %m", action, filename);
+ log_debug_errno(errno, "error writing '%s' to '%s': %m", action, filename);
close(fd);
}
}
sigfillset(&mask);
fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
if (fd_signal < 0) {
- log_error("error creating signalfd %m");
+ log_error_errno(errno, "error creating signalfd %m");
rc = 2;
goto out;
}
fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) {
- log_error("error creating epoll fd: %m");
+ log_error_errno(errno, "error creating epoll fd: %m");
rc = 3;
goto out;
}
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_monitor, &ep_monitor) < 0) {
- log_error("fail to add fds to epoll: %m");
+ log_error_errno(errno, "fail to add fds to epoll: %m");
rc = 4;
goto out;
}
if (d) {
fd_lock = open(udev_device_get_devnode(d), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
if (fd_lock >= 0 && flock(fd_lock, LOCK_SH|LOCK_NB) < 0) {
- log_debug("Unable to flock(%s), skipping event handling: %m", udev_device_get_devnode(d));
+ log_debug_errno(errno, "Unable to flock(%s), skipping event handling: %m", udev_device_get_devnode(d));
err = -EWOULDBLOCK;
fd_lock = safe_close(fd_lock);
goto skip;
if (fdcount < 0) {
if (errno == EINTR)
continue;
- log_error("failed to poll: %m");
+ log_error_errno(errno, "failed to poll: %m");
goto out;
}
udev_monitor_unref(worker_monitor);
event->state = EVENT_QUEUED;
free(worker);
- log_error("fork of child failed: %m");
+ log_error_errno(errno, "fork of child failed: %m");
break;
default:
/* close monitor, but keep address around */
count = udev_monitor_send_device(monitor, worker->monitor, event->dev);
if (count < 0) {
- log_error("worker [%u] did not accept message %zi (%m), kill it", worker->pid, count);
+ log_error_errno(errno, "worker [%u] did not accept message %zi (%m), kill it", worker->pid, count);
kill(worker->pid, SIGKILL);
worker->state = WORKER_KILLED;
continue;
/* set umask before creating any file/directory */
r = chdir("/");
if (r < 0) {
- log_error("could not change dir to /: %m");
+ log_error_errno(errno, "could not change dir to /: %m");
goto exit;
}
r = mkdir("/run/udev", 0755);
if (r < 0 && errno != EEXIST) {
- log_error("could not create /run/udev: %m");
+ log_error_errno(errno, "could not create /run/udev: %m");
goto exit;
}
case 0:
break;
case -1:
- log_error("fork of daemon failed: %m");
+ log_error_errno(errno, "fork of daemon failed: %m");
rc = 4;
goto exit;
default:
fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) {
- log_error("error creating epoll fd: %m");
+ log_error_errno(errno, "error creating epoll fd: %m");
goto exit;
}
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_ctrl, &ep_ctrl) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_netlink, &ep_netlink) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_worker, &ep_worker) < 0) {
- log_error("fail to add fds to epoll: %m");
+ log_error_errno(errno, "fail to add fds to epoll: %m");
goto exit;
}
if (c->audit_fd >= 0)
if (audit_log_user_comm_message(c->audit_fd, AUDIT_SYSTEM_BOOT, "", "systemd-update-utmp", NULL, NULL, NULL, 1) < 0 &&
errno != EPERM) {
- log_error("Failed to send audit message: %m");
+ log_error_errno(errno, "Failed to send audit message: %m");
r = -errno;
}
#endif
if (c->audit_fd >= 0)
if (audit_log_user_comm_message(c->audit_fd, AUDIT_SYSTEM_SHUTDOWN, "", "systemd-update-utmp", NULL, NULL, NULL, 1) < 0 &&
errno != EPERM) {
- log_error("Failed to send audit message: %m");
+ log_error_errno(errno, "Failed to send audit message: %m");
r = -errno;
}
#endif
if (audit_log_user_comm_message(c->audit_fd, AUDIT_SYSTEM_RUNLEVEL, s, "systemd-update-utmp", NULL, NULL, NULL, 1) < 0 &&
errno != EPERM) {
- log_error("Failed to send audit message: %m");
+ log_error_errno(errno, "Failed to send audit message: %m");
r = -errno;
}
}
* don't worry about it. */
c.audit_fd = audit_open();
if (c.audit_fd < 0 && errno != EAFNOSUPPORT && errno != EPROTONOSUPPORT)
- log_error("Failed to connect to audit log: %m");
+ log_error_errno(errno, "Failed to connect to audit log: %m");
#endif
r = bus_open_system_systemd(&c.bus);
if (r < 0) {
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return -errno;
} else if (pid == 0) {
execv(args[0], (char **) args);
pid = fork();
if (pid < 0) {
- log_error("Failed to fork: %m");
+ log_error_errno(errno, "Failed to fork: %m");
return -errno;
} else if (pid == 0) {
execv(args[0], (char **) args);
fd = open_terminal(vc, O_RDWR|O_CLOEXEC);
if (fd < 0) {
- log_error("Failed to open %s: %m", vc);
+ log_error_errno(errno, "Failed to open %s: %m", vc);
return EXIT_FAILURE;
}