#include <stdio.h>
#include <sys/epoll.h>
-#include <libmount.h>
-
#include "sd-messages.h"
#include "alloc-util.h"
#include "dbus-mount.h"
#include "dbus-unit.h"
#include "device.h"
-#include "escape.h"
#include "exit-status.h"
#include "format-util.h"
#include "fstab-util.h"
+#include "libmount-util.h"
#include "log.h"
#include "manager.h"
#include "mkdir.h"
#define RETRY_UMOUNT_MAX 32
-DEFINE_TRIVIAL_CLEANUP_FUNC(struct libmnt_table*, mnt_free_table);
-DEFINE_TRIVIAL_CLEANUP_FUNC(struct libmnt_iter*, mnt_free_iter);
-
static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
[MOUNT_DEAD] = UNIT_INACTIVE,
[MOUNT_MOUNTING] = UNIT_ACTIVATING,
pid_is_unwaited(m->control_pid) &&
MOUNT_STATE_WITH_PROCESS(new_state)) {
- r = unit_watch_pid(UNIT(m), m->control_pid);
+ r = unit_watch_pid(UNIT(m), m->control_pid, false);
if (r < 0)
return r;
if (r < 0)
return r;
- r = unit_watch_pid(UNIT(m), pid);
+ r = unit_watch_pid(UNIT(m), pid, true);
if (r < 0)
- /* FIXME: we need to do something here */
return r;
*_pid = pid;
assert(IN_SET(m->state, MOUNT_DEAD, MOUNT_FAILED));
- r = unit_start_limit_test(u);
+ r = unit_test_start_limit(u);
if (r < 0) {
mount_enter_dead(m, MOUNT_FAILURE_START_LIMIT_HIT);
return r;
for (;;) {
struct libmnt_fs *fs;
const char *device, *path, *options, *fstype;
- _cleanup_free_ char *d = NULL, *p = NULL;
int k;
k = mnt_table_next_fs(t, i, &fs);
if (!device || !path)
continue;
- if (cunescape(device, UNESCAPE_RELAX, &d) < 0)
- return log_oom();
-
- if (cunescape(path, UNESCAPE_RELAX, &p) < 0)
- return log_oom();
-
- device_found_node(m, d, DEVICE_FOUND_MOUNT, DEVICE_FOUND_MOUNT);
+ device_found_node(m, device, DEVICE_FOUND_MOUNT, DEVICE_FOUND_MOUNT);
- (void) mount_setup_unit(m, d, p, options, fstype, set_flags);
+ (void) mount_setup_unit(m, device, path, options, fstype, set_flags);
}
return 0;
assert(m);
- return unit_kill_common(u, who, signo, -1, MOUNT(u)->control_pid, error);
+ return unit_kill_common(u, who, signo, -1, m->control_pid, error);
}
static int mount_control_pid(Unit *u) {