chiark / gitweb /
dbus: make data pointer for properties read-only
[elogind.git] / mount-setup.c
index 12605ebb4d158c9614be932f1b660b778c732ebb..f3041941ac4326d070b1325a6a159c9f7da83cb2 100644 (file)
@@ -29,6 +29,8 @@
 
 #include "mount-setup.h"
 #include "log.h"
+#include "macro.h"
+#include "util.h"
 
 enum {
         MOUNT_WHAT,
@@ -39,12 +41,13 @@ enum {
 };
 
 static const char *table[] = {
-        "proc",    "/proc",         "proc",     "rw",
-        "sysfs",   "/sys",          "sysfs",    "rw",
-        "devtmps", "/dev",          "devtmpfs", "mode=755",
-        "tmpfs",   "/dev/shm",      "tmpfs",    "mode=1777",
-        "devpts",  "/dev/pts",      "devpts",   "rw",
-        "cgroup",  "/cgroup/debug", "cgroup",   "debug",
+        "proc",    "/proc",             "proc",     NULL,
+        "sysfs",   "/sys",              "sysfs",    NULL,
+        "devtmps", "/dev",              "devtmpfs", "mode=755",
+        "tmpfs",   "/dev/shm",          "tmpfs",    "mode=1777",
+        "devpts",  "/dev/pts",          "devpts",   NULL,
+        "cgroup",  "/cgroup/debug",     "cgroup",   "debug",
+        "debugfs", "/sys/kernel/debug", "debugfs",  NULL,
         NULL
 };
 
@@ -85,11 +88,15 @@ static int mount_one(const char *t[]) {
         if (r > 0)
                 return 0;
 
+        /* The access mode here doesn't really matter too much, since
+         * the mounted file system will take precedence anyway. */
+        mkdir_p(t[MOUNT_WHERE], 0755);
+
         log_debug("Mounting %s to %s of type %s with options %s.",
                   t[MOUNT_WHAT],
                   t[MOUNT_WHERE],
                   t[MOUNT_TYPE],
-                  t[MOUNT_OPTIONS]);
+                  strna(t[MOUNT_OPTIONS]));
 
         if (mount(t[MOUNT_WHAT],
                   t[MOUNT_WHERE],