From d815ba2a81ad14d9d4edc31dcd282dcc2a3a8fb9 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 15 May 2017 13:59:57 -0400 Subject: [PATCH] switchroot/remount: Check mount status before remounting, be verbose By checking the mount status, we avoid remounting things if we don't need to. And printing a single line per mount helps debugging when things go wrong. Closes: #859 Approved by: jlebon --- src/switchroot/ostree-remount.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/switchroot/ostree-remount.c b/src/switchroot/ostree-remount.c index e19de183..a6d14d08 100644 --- a/src/switchroot/ostree-remount.c +++ b/src/switchroot/ostree-remount.c @@ -64,6 +64,14 @@ main(int argc, char *argv[]) */ if (S_ISLNK (stbuf.st_mode)) continue; + /* If not a mountpoint, skip it */ + struct statvfs stvfsbuf; + if (statvfs (target, &stvfsbuf) == -1) + continue; + /* If no read-only flag, skip it */ + if ((stvfsbuf.f_flag & ST_RDONLY) == 0) + continue; + /* It's a mounted, read-only fs; remount it */ if (mount (target, target, NULL, MS_REMOUNT | MS_SILENT, NULL) < 0) { /* Also ignore ENINVAL - if the target isn't a mountpoint @@ -72,6 +80,8 @@ main(int argc, char *argv[]) if (errno != EINVAL) err (EXIT_FAILURE, "failed to remount %s", target); } + else + printf ("Remounted: %s\n", target); } exit (EXIT_SUCCESS);