1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-06 16:59:03 +03:00

automount: implement transient automounts

This commit is contained in:
Michael Olbrich 2015-12-09 15:46:46 +01:00
parent 308253c5a2
commit afb14803b3
3 changed files with 59 additions and 0 deletions

View File

@ -1105,6 +1105,9 @@ const UnitVTable automount_vtable = {
.reset_failed = automount_reset_failed,
.bus_vtable = bus_automount_vtable,
.bus_set_property = bus_automount_set_property,
.can_transient = true,
.shutdown = automount_shutdown,
.supported = automount_supported,

View File

@ -32,3 +32,57 @@ const sd_bus_vtable bus_automount_vtable[] = {
SD_BUS_PROPERTY("TimeoutIdleUSec", "t", bus_property_get_usec, offsetof(Automount, timeout_idle_usec), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_VTABLE_END
};
static int bus_automount_set_transient_property(
Automount *a,
const char *name,
sd_bus_message *message,
UnitSetPropertiesMode mode,
sd_bus_error *error) {
int r;
assert(a);
assert(name);
assert(message);
if (streq(name, "TimeoutIdleUSec")) {
usec_t timeout_idle_usec;
r = sd_bus_message_read(message, "t", &timeout_idle_usec);
if (r < 0)
return r;
if (mode != UNIT_CHECK) {
char time[FORMAT_TIMESPAN_MAX];
a->timeout_idle_usec = timeout_idle_usec;
unit_write_drop_in_format(UNIT(a), mode, name, "[Automount]\nTimeoutIdleSec=%s\n",
format_timespan(time, sizeof(time), timeout_idle_usec, USEC_PER_MSEC));
}
} else
return 0;
return 1;
}
int bus_automount_set_property(
Unit *u,
const char *name,
sd_bus_message *message,
UnitSetPropertiesMode mode,
sd_bus_error *error) {
Automount *a = AUTOMOUNT(u);
int r = 0;
assert(a);
assert(name);
assert(message);
if (u->transient && u->load_state == UNIT_STUB)
/* This is a transient unit, let's load a little more */
r = bus_automount_set_transient_property(a, name, message, mode, error);
return r;
}

View File

@ -21,3 +21,5 @@
extern const sd_bus_vtable bus_automount_vtable[];
int bus_automount_set_property(Unit *u, const char *name, sd_bus_message *message, UnitSetPropertiesMode mode, sd_bus_error *error);