chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mount: fix up wording in the comment
[elogind.git]
/
src
/
core
/
path.c
diff --git
a/src/core/path.c
b/src/core/path.c
index 656ed6941d9037f7aa3acae08fc7740e6ad7da1d..6be9ac84bed841393fd364d8ee14381da8ce3ce8 100644
(file)
--- a/
src/core/path.c
+++ b/
src/core/path.c
@@
-21,7
+21,6
@@
#include <sys/inotify.h>
#include <sys/epoll.h>
#include <sys/inotify.h>
#include <sys/epoll.h>
-#include <sys/ioctl.h>
#include <errno.h>
#include <unistd.h>
#include <errno.h>
#include <unistd.h>
@@
-31,7
+30,6
@@
#include "mkdir.h"
#include "dbus-path.h"
#include "special.h"
#include "mkdir.h"
#include "dbus-path.h"
#include "special.h"
-#include "path-util.h"
#include "macro.h"
#include "bus-util.h"
#include "bus-error.h"
#include "macro.h"
#include "bus-util.h"
#include "bus-error.h"
@@
-157,7
+155,7
@@
void path_spec_unwatch(PathSpec *s) {
}
int path_spec_fd_event(PathSpec *s, uint32_t revents) {
}
int path_spec_fd_event(PathSpec *s, uint32_t revents) {
- u
int8_t buffer[INOTIFY_EVENT_MAX] _alignas_(struct inotify_event)
;
+ u
nion inotify_event_buffer buffer
;
struct inotify_event *e;
ssize_t l;
int r = 0;
struct inotify_event *e;
ssize_t l;
int r = 0;
@@
-167,7
+165,7
@@
int path_spec_fd_event(PathSpec *s, uint32_t revents) {
return -EINVAL;
}
return -EINVAL;
}
- l = read(s->inotify_fd, buffer, sizeof(buffer));
+ l = read(s->inotify_fd,
&
buffer, sizeof(buffer));
if (l < 0) {
if (errno == EAGAIN || errno == EINTR)
return 0;
if (l < 0) {
if (errno == EAGAIN || errno == EINTR)
return 0;
@@
-440,7
+438,12
@@
static void path_set_state(Path *p, PathState state) {
static void path_enter_waiting(Path *p, bool initial, bool recheck);
static void path_enter_waiting(Path *p, bool initial, bool recheck);
-static int path_coldplug(Unit *u) {
+static int path_enter_waiting_coldplug(Unit *u) {
+ path_enter_waiting(PATH(u), true, true);
+ return 0;
+}
+
+static int path_coldplug(Unit *u, Hashmap *deferred_work) {
Path *p = PATH(u);
assert(p);
Path *p = PATH(u);
assert(p);
@@
-449,9
+452,10
@@
static int path_coldplug(Unit *u) {
if (p->deserialized_state != p->state) {
if (p->deserialized_state == PATH_WAITING ||
if (p->deserialized_state != p->state) {
if (p->deserialized_state == PATH_WAITING ||
- p->deserialized_state == PATH_RUNNING)
- path_enter_waiting(p, true, true);
- else
+ p->deserialized_state == PATH_RUNNING) {
+ hashmap_put(deferred_work, u, &path_enter_waiting_coldplug);
+ path_set_state(p, PATH_WAITING);
+ } else
path_set_state(p, p->deserialized_state);
}
path_set_state(p, p->deserialized_state);
}
@@
-572,7
+576,7
@@
static int path_start(Unit *u) {
p->result = PATH_SUCCESS;
path_enter_waiting(p, true, true);
p->result = PATH_SUCCESS;
path_enter_waiting(p, true, true);
- return
0
;
+ return
1
;
}
static int path_stop(Unit *u) {
}
static int path_stop(Unit *u) {
@@
-582,7
+586,7
@@
static int path_stop(Unit *u) {
assert(p->state == PATH_WAITING || p->state == PATH_RUNNING);
path_enter_dead(p, PATH_SUCCESS);
assert(p->state == PATH_WAITING || p->state == PATH_RUNNING);
path_enter_dead(p, PATH_SUCCESS);
- return
0
;
+ return
1
;
}
static int path_serialize(Unit *u, FILE *f, FDSet *fds) {
}
static int path_serialize(Unit *u, FILE *f, FDSet *fds) {