X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fautomount.c;h=90beb4daaaba4ecae5541731432bae9f47405653;hp=f874951f4c6b5c76f9960d8b3624df06d979471f;hb=0faacd470dfbd24f4c6504da6f04213aa05f9d19;hpb=79008bddf679a5e0900369950eb346c9fa687107 diff --git a/src/core/automount.c b/src/core/automount.c index f874951f4..90beb4daa 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -75,7 +75,7 @@ static void repeat_unmount(const char *path) { continue; if (errno != EINVAL) - log_error("Failed to unmount: %m"); + log_error_errno(errno, "Failed to unmount: %m"); break; } @@ -300,10 +300,8 @@ static int open_dev_autofs(Manager *m) { label_fix("/dev/autofs", false, false); 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"); - return -errno; - } + if (m->dev_autofs_fd < 0) + return log_error_errno(errno, "Failed to open /dev/autofs: %m"); init_autofs_dev_ioctl(¶m); if (ioctl(m->dev_autofs_fd, AUTOFS_DEV_IOCTL_VERSION, ¶m) < 0) { @@ -422,7 +420,7 @@ int automount_send_ready(Automount *a, int status) { return ioctl_fd; if (status) - log_unit_debug(UNIT(a)->id, "Sending failure: %s", strerror(-status)); + log_unit_debug_errno(UNIT(a)->id, status, "Sending failure: %m"); else log_unit_debug(UNIT(a)->id, "Sending success."); @@ -744,7 +742,10 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo l = loop_read(a->pipe_fd, &packet, sizeof(packet), true); if (l != sizeof(packet)) { - log_unit_error(UNIT(a)->id, "Invalid read from pipe: %s", l < 0 ? strerror(-l) : "short read"); + if (l < 0) + log_unit_error_errno(UNIT(a)->id, l, "Invalid read from pipe: %m"); + else + log_unit_error(UNIT(a)->id, "Invalid read from pipe: short read"); goto fail; } @@ -770,7 +771,7 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo r = set_put(a->tokens, UINT_TO_PTR(packet.v5_packet.wait_queue_token)); if (r < 0) { - log_unit_error(UNIT(a)->id, "Failed to remember token: %s", strerror(-r)); + log_unit_error_errno(UNIT(a)->id, r, "Failed to remember token: %m"); goto fail; } @@ -806,6 +807,17 @@ static void automount_reset_failed(Unit *u) { a->result = AUTOMOUNT_SUCCESS; } +static bool automount_supported(Manager *m) { + static int supported = -1; + + assert(m); + + if (supported < 0) + supported = access("/dev/autofs", F_OK) >= 0; + + return supported; +} + static const char* const automount_state_table[_AUTOMOUNT_STATE_MAX] = { [AUTOMOUNT_DEAD] = "dead", [AUTOMOUNT_WAITING] = "waiting", @@ -858,6 +870,7 @@ const UnitVTable automount_vtable = { .bus_vtable = bus_automount_vtable, .shutdown = automount_shutdown, + .supported = automount_supported, .status_message_formats = { .finished_start_job = {