Skip to content

Commit

Permalink
automount: implement transient automounts
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelolbrich committed Jun 6, 2016
1 parent 308253c commit afb1480
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/core/automount.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
54 changes: 54 additions & 0 deletions src/core/dbus-automount.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
2 changes: 2 additions & 0 deletions src/core/dbus-automount.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

0 comments on commit afb1480

Please sign in to comment.