chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-rtnl-message: store reference to the bus in the message
[elogind.git]
/
src
/
core
/
mount.c
diff --git
a/src/core/mount.c
b/src/core/mount.c
index 09efa1b6e0649f652f814cdc319d2432c95d14e5..45c0040bd1e0541f30086518b748aa6fc9b4d08d 100644
(file)
--- a/
src/core/mount.c
+++ b/
src/core/mount.c
@@
-750,8
+750,8
@@
static void mount_dump(Unit *u, FILE *f, const char *prefix) {
if (m->control_pid > 0)
fprintf(f,
if (m->control_pid > 0)
fprintf(f,
- "%sControl PID:
%lu
\n",
- prefix,
(unsigned long)
m->control_pid);
+ "%sControl PID:
"PID_FMT"
\n",
+ prefix, m->control_pid);
exec_context_dump(&m->exec_context, f, prefix);
kill_context_dump(&m->kill_context, f, prefix);
exec_context_dump(&m->exec_context, f, prefix);
kill_context_dump(&m->kill_context, f, prefix);
@@
-854,8
+854,14
@@
static void mount_enter_signal(Mount *m, MountState state, MountResult f) {
goto fail;
mount_set_state(m, state);
goto fail;
mount_set_state(m, state);
- } else if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL)
+ } else if (state == MOUNT_REMOUNTING_SIGTERM)
+ mount_enter_signal(m, MOUNT_REMOUNTING_SIGKILL, MOUNT_SUCCESS);
+ else if (state == MOUNT_REMOUNTING_SIGKILL)
mount_enter_mounted(m, MOUNT_SUCCESS);
mount_enter_mounted(m, MOUNT_SUCCESS);
+ else if (state == MOUNT_MOUNTING_SIGTERM)
+ mount_enter_signal(m, MOUNT_MOUNTING_SIGKILL, MOUNT_SUCCESS);
+ else if (state == MOUNT_UNMOUNTING_SIGTERM)
+ mount_enter_signal(m, MOUNT_UNMOUNTING_SIGKILL, MOUNT_SUCCESS);
else
mount_enter_dead(m, MOUNT_SUCCESS);
else
mount_enter_dead(m, MOUNT_SUCCESS);
@@
-1093,7
+1099,7
@@
static int mount_serialize(Unit *u, FILE *f, FDSet *fds) {
unit_serialize_item(u, f, "reload-result", mount_result_to_string(m->reload_result));
if (m->control_pid > 0)
unit_serialize_item(u, f, "reload-result", mount_result_to_string(m->reload_result));
if (m->control_pid > 0)
- unit_serialize_item_format(u, f, "control-pid",
"%lu", (unsigned long)
m->control_pid);
+ unit_serialize_item_format(u, f, "control-pid",
PID_FMT,
m->control_pid);
if (m->control_command_id >= 0)
unit_serialize_item(u, f, "control-command", mount_exec_command_to_string(m->control_command_id));
if (m->control_command_id >= 0)
unit_serialize_item(u, f, "control-command", mount_exec_command_to_string(m->control_command_id));
@@
-1378,12
+1384,13
@@
static int mount_add_one(
const char *options,
const char *fstype,
bool set_flags) {
const char *options,
const char *fstype,
bool set_flags) {
- int r;
- Unit *u;
- bool delete;
- char *e, *w = NULL, *o = NULL, *f = NULL;
- MountParameters *p;
+
+ _cleanup_free_ char *e = NULL, *w = NULL, *o = NULL, *f = NULL;
bool load_extras = false;
bool load_extras = false;
+ MountParameters *p;
+ bool delete;
+ Unit *u;
+ int r;
assert(m);
assert(what);
assert(m);
assert(what);
@@
-1409,20
+1416,13
@@
static int mount_add_one(
u = manager_get_unit(m, e);
if (!u) {
u = manager_get_unit(m, e);
if (!u) {
- const char* const target =
- fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
-
delete = true;
u = unit_new(m, sizeof(Mount));
delete = true;
u = unit_new(m, sizeof(Mount));
- if (!u) {
- free(e);
+ if (!u)
return -ENOMEM;
return -ENOMEM;
- }
r = unit_add_name(u, e);
r = unit_add_name(u, e);
- free(e);
-
if (r < 0)
goto fail;
if (r < 0)
goto fail;
@@
-1438,20
+1438,26
@@
static int mount_add_one(
goto fail;
}
goto fail;
}
- r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
- if (r < 0)
- goto fail;
- if (should_umount(MOUNT(u))) {
- r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
+ if (m->running_as == SYSTEMD_SYSTEM) {
+ const char* target;
+
+ target = fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
+
+ r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
if (r < 0)
goto fail;
if (r < 0)
goto fail;
+
+ if (should_umount(MOUNT(u))) {
+ r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
+ if (r < 0)
+ goto fail;
+ }
}
unit_add_to_load_queue(u);
} else {
delete = false;
}
unit_add_to_load_queue(u);
} else {
delete = false;
- free(e);
if (!MOUNT(u)->where) {
MOUNT(u)->where = strdup(where);
if (!MOUNT(u)->where) {
MOUNT(u)->where = strdup(where);
@@
-1489,12
+1495,15
@@
static int mount_add_one(
free(p->what);
p->what = w;
free(p->what);
p->what = w;
+ w = NULL;
free(p->options);
p->options = o;
free(p->options);
p->options = o;
+ o = NULL;
free(p->fstype);
p->fstype = f;
free(p->fstype);
p->fstype = f;
+ f = NULL;
if (load_extras) {
r = mount_add_extras(MOUNT(u));
if (load_extras) {
r = mount_add_extras(MOUNT(u));
@@
-1507,10
+1516,6
@@
static int mount_add_one(
return 0;
fail:
return 0;
fail:
- free(w);
- free(o);
- free(f);
-
if (delete && u)
unit_free(u);
if (delete && u)
unit_free(u);
@@
-1584,6
+1589,20
@@
static void mount_shutdown(Manager *m) {
}
}
}
}
+static int mount_get_timeout(Unit *u, uint64_t *timeout) {
+ Mount *m = MOUNT(u);
+ int r;
+
+ if (!m->timer_event_source)
+ return 0;
+
+ r = sd_event_source_get_time(m->timer_event_source, timeout);
+ if (r < 0)
+ return r;
+
+ return 1;
+}
+
static int mount_enumerate(Manager *m) {
int r;
assert(m);
static int mount_enumerate(Manager *m) {
int r;
assert(m);
@@
-1797,6
+1816,8
@@
const UnitVTable mount_vtable = {
.bus_set_property = bus_mount_set_property,
.bus_commit_properties = bus_mount_commit_properties,
.bus_set_property = bus_mount_set_property,
.bus_commit_properties = bus_mount_commit_properties,
+ .get_timeout = mount_get_timeout,
+
.enumerate = mount_enumerate,
.shutdown = mount_shutdown,
.enumerate = mount_enumerate,
.shutdown = mount_shutdown,