chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
manager: add newly created units to gc queue
[elogind.git]
/
manager.c
diff --git
a/manager.c
b/manager.c
index 46b187658d3534cc52892391e097b2ad6a485f40..688d9fa65b28e831217faee879cf4977a241006f 100644
(file)
--- a/
manager.c
+++ b/
manager.c
@@
-57,7
+57,7
@@
#define GC_QUEUE_ENTRIES_MAX 16
/* As soon as 5s passed since a unit was added to our GC queue, make sure to run a gc sweep */
#define GC_QUEUE_ENTRIES_MAX 16
/* As soon as 5s passed since a unit was added to our GC queue, make sure to run a gc sweep */
-#define GC_QUEUE_USEC_MAX (
5
*USEC_PER_SEC)
+#define GC_QUEUE_USEC_MAX (
10
*USEC_PER_SEC)
static int enable_special_signals(Manager *m) {
char fd;
static int enable_special_signals(Manager *m) {
char fd;
@@
-68,7
+68,7
@@
static int enable_special_signals(Manager *m) {
if (reboot(RB_DISABLE_CAD) < 0)
log_warning("Failed to enable ctrl-alt-del handling: %m");
if (reboot(RB_DISABLE_CAD) < 0)
log_warning("Failed to enable ctrl-alt-del handling: %m");
- if ((fd = open_terminal("/dev/tty0", O_RDWR)) < 0)
+ if ((fd = open_terminal("/dev/tty0", O_RDWR
|O_NOCTTY
)) < 0)
log_warning("Failed to open /dev/tty0: %m");
else {
/* Enable that we get SIGWINCH on kbrequest */
log_warning("Failed to open /dev/tty0: %m");
else {
/* Enable that we get SIGWINCH on kbrequest */
@@
-149,12
+149,12
@@
static char** session_dirs(void) {
}
if ((e = getenv("XDG_CONFIG_DIRS")))
}
if ((e = getenv("XDG_CONFIG_DIRS")))
- config_dirs = strv_split(e, ":");
- else
- config_dirs = strv_new("/etc/xdg", NULL);
+ if (!(config_dirs = strv_split(e, ":")))
+ goto fail;
- if (!config_dirs)
- goto fail;
+ /* We don't treat /etc/xdg/systemd here as the spec
+ * suggests because we assume that that is a link to
+ * /etc/systemd/ anyway. */
if ((e = getenv("XDG_DATA_HOME"))) {
if (asprintf(&data_home, "%s/systemd/session", e) < 0)
if ((e = getenv("XDG_DATA_HOME"))) {
if (asprintf(&data_home, "%s/systemd/session", e) < 0)
@@
-1563,7
+1563,7
@@
int manager_load_unit_prepare(Manager *m, const char *name, const char *path, Un
if ((ret = manager_get_unit(m, name))) {
*_ret = ret;
if ((ret = manager_get_unit(m, name))) {
*_ret = ret;
- return
0
;
+ return
1
;
}
if (!(ret = unit_new(m)))
}
if (!(ret = unit_new(m)))
@@
-1582,6
+1582,7
@@
int manager_load_unit_prepare(Manager *m, const char *name, const char *path, Un
unit_add_to_load_queue(ret);
unit_add_to_dbus_queue(ret);
unit_add_to_load_queue(ret);
unit_add_to_dbus_queue(ret);
+ unit_add_to_gc_queue(ret);
if (_ret)
*_ret = ret;
if (_ret)
*_ret = ret;
@@
-1590,7
+1591,6
@@
int manager_load_unit_prepare(Manager *m, const char *name, const char *path, Un
}
int manager_load_unit(Manager *m, const char *name, const char *path, Unit **_ret) {
}
int manager_load_unit(Manager *m, const char *name, const char *path, Unit **_ret) {
- Unit *ret;
int r;
assert(m);
int r;
assert(m);
@@
-1598,13
+1598,13
@@
int manager_load_unit(Manager *m, const char *name, const char *path, Unit **_re
/* This will load the service information files, but not actually
* start any services or anything. */
/* This will load the service information files, but not actually
* start any services or anything. */
- if ((r = manager_load_unit_prepare(m, name, path,
&ret)) <
0)
+ if ((r = manager_load_unit_prepare(m, name, path,
_ret)) !=
0)
return r;
manager_dispatch_load_queue(m);
if (_ret)
return r;
manager_dispatch_load_queue(m);
if (_ret)
- *_ret = unit_follow_merge(ret);
+ *_ret = unit_follow_merge(
*_
ret);
return 0;
}
return 0;
}
@@
-1949,19
+1949,19
@@
int manager_loop(Manager *m) {
sleep(1);
}
sleep(1);
}
- if (manager_dispatch_
cleanup
_queue(m) > 0)
+ if (manager_dispatch_
load
_queue(m) > 0)
continue;
continue;
- if (manager_dispatch_
gc
_queue(m) > 0)
+ if (manager_dispatch_
run
_queue(m) > 0)
continue;
continue;
- if (
manager_dispatch_load_queue
(m) > 0)
+ if (
bus_dispatch
(m) > 0)
continue;
continue;
- if (manager_dispatch_
run
_queue(m) > 0)
+ if (manager_dispatch_
cleanup
_queue(m) > 0)
continue;
continue;
- if (
bus_dispatch
(m) > 0)
+ if (
manager_dispatch_gc_queue
(m) > 0)
continue;
if (manager_dispatch_dbus_queue(m) > 0)
continue;
if (manager_dispatch_dbus_queue(m) > 0)