X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fpath.c;h=3624bfcac7f771365e0a113786d3c6f540b1ae88;hb=652212b0c2b60b9ef9b2e24eae82401f880fa21a;hp=51e8d1dbcc7a92c67f909df056ac1872e9c9799d;hpb=718db96199eb307751264e4163555662c9a389fa;p=elogind.git diff --git a/src/core/path.c b/src/core/path.c index 51e8d1dbc..3624bfcac 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -71,7 +71,7 @@ int path_spec_watch(PathSpec *s, sd_event_io_handler_t handler) { goto fail; } - r = sd_event_add_io(s->unit->manager->event, s->inotify_fd, EPOLLIN, handler, s, &s->event_source); + r = sd_event_add_io(s->unit->manager->event, &s->event_source, s->inotify_fd, EPOLLIN, handler, s); if (r < 0) goto fail; @@ -99,7 +99,8 @@ int path_spec_watch(PathSpec *s, sd_event_io_handler_t handler) { break; } - log_warning("Failed to add watch on %s: %m", s->path); + log_warning("Failed to add watch on %s: %s", s->path, + errno == ENOSPC ? "too many watches" : strerror(-r)); r = -errno; if (cut) *cut = tmp; @@ -135,7 +136,7 @@ int path_spec_watch(PathSpec *s, sd_event_io_handler_t handler) { } 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; @@ -152,11 +153,7 @@ void path_spec_unwatch(PathSpec *s) { assert(s); s->event_source = sd_event_source_unref(s->event_source); - - if (s->inotify_fd >= 0) { - close_nointr_nofail(s->inotify_fd); - s->inotify_fd = -1; - } + s->inotify_fd = safe_close(s->inotify_fd); } int path_spec_fd_event(PathSpec *s, uint32_t revents) { @@ -171,10 +168,8 @@ int path_spec_fd_event(PathSpec *s, uint32_t revents) { return -EINVAL; } - if (ioctl(s->inotify_fd, FIONREAD, &l) < 0) { - log_error("FIONREAD failed: %m"); - return -errno; - } + if (ioctl(s->inotify_fd, FIONREAD, &l) < 0) + return log_error_errno(errno, "FIONREAD failed: %m"); assert(l > 0); @@ -183,10 +178,8 @@ int path_spec_fd_event(PathSpec *s, uint32_t revents) { return log_oom(); k = read(s->inotify_fd, buf, l); - if (k < 0) { - log_error("Failed to read inotify event: %m"); - return -errno; - } + if (k < 0) + return log_error_errno(errno, "Failed to read inotify event: %m"); e = (struct inotify_event*) buf; @@ -253,7 +246,7 @@ static void path_spec_mkdir(PathSpec *s, mode_t mode) { r = mkdir_p_label(s->path, mode); if (r < 0) - log_warning("mkdir(%s) failed: %s", s->path, strerror(-r)); + log_warning_errno(r, "mkdir(%s) failed: %m", s->path); } static void path_spec_dump(PathSpec *s, FILE *f, const char *prefix) { @@ -323,7 +316,7 @@ static int path_verify(Path *p) { return 0; if (!p->specs) { - log_error_unit(UNIT(p)->id, + log_unit_error(UNIT(p)->id, "%s lacks path setting. Refusing.", UNIT(p)->id); return -EINVAL; } @@ -565,8 +558,7 @@ static void path_enter_waiting(Path *p, bool initial, bool recheck) { return; fail: - log_warning("%s failed to enter waiting state: %s", - UNIT(p)->id, strerror(-r)); + log_warning_errno(r, "%s failed to enter waiting state: %m", UNIT(p)->id); path_enter_dead(p, PATH_FAILURE_RESOURCES); } @@ -727,7 +719,7 @@ static void path_trigger_notify(Unit *u, Unit *other) { if (p->state == PATH_RUNNING && UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other))) { - log_debug_unit(UNIT(p)->id, + log_unit_debug(UNIT(p)->id, "%s got notified about unit deactivation.", UNIT(p)->id); @@ -761,16 +753,16 @@ DEFINE_STRING_TABLE_LOOKUP(path_state, PathState); static const char* const path_type_table[_PATH_TYPE_MAX] = { [PATH_EXISTS] = "PathExists", [PATH_EXISTS_GLOB] = "PathExistsGlob", + [PATH_DIRECTORY_NOT_EMPTY] = "DirectoryNotEmpty", [PATH_CHANGED] = "PathChanged", [PATH_MODIFIED] = "PathModified", - [PATH_DIRECTORY_NOT_EMPTY] = "DirectoryNotEmpty" }; DEFINE_STRING_TABLE_LOOKUP(path_type, PathType); static const char* const path_result_table[_PATH_RESULT_MAX] = { [PATH_SUCCESS] = "success", - [PATH_FAILURE_RESOURCES] = "resources" + [PATH_FAILURE_RESOURCES] = "resources", }; DEFINE_STRING_TABLE_LOOKUP(path_result, PathResult); @@ -805,6 +797,5 @@ const UnitVTable path_vtable = { .reset_failed = path_reset_failed, .bus_interface = "org.freedesktop.systemd1.Path", - .bus_vtable = bus_path_vtable, - .bus_changing_properties = bus_path_changing_properties + .bus_vtable = bus_path_vtable };