diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2010-10-29 19:54:02 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2010-10-29 19:55:21 +0200 |
commit | a84f519214bf245052ad6be7b57fb68ac817cb7e (patch) | |
tree | 1c256a2c717f7dfa472411d5b9ed1017a8f63994 /src/fsck.c | |
parent | 6c6a7c015368e9f2d192c0dc45fc1f016502f0f9 (diff) |
fsck: skip checking / if it is writable
Diffstat (limited to 'src/fsck.c')
-rw-r--r-- | src/fsck.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/fsck.c b/src/fsck.c index bfa35f2e56..3c1652bc22 100644 --- a/src/fsck.c +++ b/src/fsck.c @@ -24,6 +24,7 @@ #include <string.h> #include <errno.h> #include <unistd.h> +#include <fcntl.h> #include <libudev.h> #include <dbus/dbus.h> @@ -170,6 +171,7 @@ int main(int argc, char *argv[]) { root_directory = false; } else { struct stat st; + struct timespec times[2]; /* Find root device */ @@ -182,6 +184,14 @@ int main(int argc, char *argv[]) { if (major(st.st_dev) == 0) return 0; + /* check if we are already writable */ + times[0] = st.st_atim; + times[1] = st.st_mtim; + if (utimensat(AT_FDCWD, "/", times, 0) == 0) { + log_error("Root directory is writable, skip check."); + goto finish; + } + if (!(udev = udev_new())) { log_error("Out of memory"); goto finish; |