summaryrefslogtreecommitdiff
path: root/src/switchroot/ostree-mount-util.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2013-06-04 13:18:36 -0400
committerColin Walters <walters@verbum.org>2013-06-04 15:59:52 -0400
commit7e882cc2cff988c128b0b3dba9092c220ab52c75 (patch)
treea6e821184aef7f68aa05fd1ab71cb798857fff38 /src/switchroot/ostree-mount-util.c
parent26baee6c3b16d35db28de1b8d3e62ae57856496f (diff)
downloadostree-7e882cc2cff988c128b0b3dba9092c220ab52c75.tar.gz
dracut: Add ostree-remount
Linux creates a copy of the soure mount flags when creating a bind mount; if the source is read-only, then the bind mount is. The problem is that systemd will remount the rootfs read/write, but each mount (/home, /var etc.) will still be read-only. We need to remount every bind mount except for /usr to read-write too. This only "worked" with the old ostree-switch-root because it effectively force mounted the rootfs read-write always, ignoring the "ro" flag.
Diffstat (limited to 'src/switchroot/ostree-mount-util.c')
-rw-r--r--src/switchroot/ostree-mount-util.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/switchroot/ostree-mount-util.c b/src/switchroot/ostree-mount-util.c
new file mode 100644
index 00000000..c993c238
--- /dev/null
+++ b/src/switchroot/ostree-mount-util.c
@@ -0,0 +1,50 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2011,2013 Colin Walters <walters@verbum.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Colin Walters <walters@verbum.org>
+ */
+
+#define _GNU_SOURCE
+
+#include <stdarg.h>
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "ostree-mount-util.h"
+
+int
+perrorv (const char *format, ...)
+{
+ va_list args;
+ char buf[1024];
+ char *p;
+
+ p = strerror_r (errno, buf, sizeof (buf));
+
+ va_start (args, format);
+
+ vfprintf (stderr, format, args);
+ fprintf (stderr, ": %s\n", p);
+ fflush (stderr);
+
+ va_end (args);
+
+ return 0;
+}