From 2dbd4a9454f127f600e5764b7883a472eeb32be0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 16 Jun 2014 01:02:27 +0200 Subject: [PATCH] mount: add new SloppyOptions= setting for mount units, mapping to mount(8)'s "-s" switch --- man/systemd.mount.xml | 15 +++++++++++++++ src/core/dbus-mount.c | 1 + src/core/load-fragment-gperf.gperf.m4 | 1 + src/core/mount.c | 4 ++-- src/core/mount.h | 2 ++ 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 657cf11be..2fbad3728 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -250,6 +250,21 @@ setting is optional. + + SloppyOptions= + + Takes a boolean + argument. If true parsing of the + options specified in + Options= is + relaxed, and unknown mount options are + tolerated. This corresponds with + mount8's + -s + switch. Defaults to + off. + + DirectoryMode= Directories of mount diff --git a/src/core/dbus-mount.c b/src/core/dbus-mount.c index e27019d71..53fe4edc3 100644 --- a/src/core/dbus-mount.c +++ b/src/core/dbus-mount.c @@ -117,6 +117,7 @@ const sd_bus_vtable bus_mount_vtable[] = { SD_BUS_PROPERTY("TimeoutUSec", "t", bus_property_get_usec, offsetof(Mount, timeout_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("ControlPID", "u", bus_property_get_pid, offsetof(Mount, control_pid), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), SD_BUS_PROPERTY("DirectoryMode", "u", bus_property_get_mode, offsetof(Mount, directory_mode), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("SloppyOptions", "b", bus_property_get_bool, offsetof(Mount, sloppy_options), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Result", "s", property_get_result, offsetof(Mount, result), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), BUS_EXEC_COMMAND_VTABLE("ExecMount", offsetof(Mount, exec_command[MOUNT_EXEC_MOUNT]), SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION), BUS_EXEC_COMMAND_VTABLE("ExecUnmount", offsetof(Mount, exec_command[MOUNT_EXEC_UNMOUNT]), SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION), diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index d97c5c6f5..3471ccbe0 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -274,6 +274,7 @@ Mount.Options, config_parse_string, 0, Mount.Type, config_parse_string, 0, offsetof(Mount, parameters_fragment.fstype) Mount.TimeoutSec, config_parse_sec, 0, offsetof(Mount, timeout_usec) Mount.DirectoryMode, config_parse_mode, 0, offsetof(Mount, directory_mode) +Mount.SloppyOptions, config_parse_bool, 0, offsetof(Mount, sloppy_options) EXEC_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl CGROUP_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl KILL_CONTEXT_CONFIG_ITEMS(Mount)m4_dnl diff --git a/src/core/mount.c b/src/core/mount.c index ca21ec7d0..aea2ab17c 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -935,7 +935,7 @@ static void mount_enter_mounting(Mount *m) { r = exec_command_set( m->control_command, "/bin/mount", - "-n", + m->sloppy_options ? "-ns" : "-n", m->parameters_fragment.what, m->where, "-t", m->parameters_fragment.fstype ? m->parameters_fragment.fstype : "auto", @@ -983,7 +983,7 @@ static void mount_enter_remounting(Mount *m) { r = exec_command_set( m->control_command, "/bin/mount", - "-n", + m->sloppy_options ? "-ns" : "-n", m->parameters_fragment.what, m->where, "-t", m->parameters_fragment.fstype ? m->parameters_fragment.fstype : "auto", diff --git a/src/core/mount.h b/src/core/mount.h index a53423cc2..2dcb663cb 100644 --- a/src/core/mount.h +++ b/src/core/mount.h @@ -88,6 +88,8 @@ struct Mount { bool just_mounted:1; bool just_changed:1; + bool sloppy_options; + MountResult result; MountResult reload_result; -- 2.30.2