From 9ad8979ff15e1b894ee1f4bb6a2535a1a2c20d65 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 26 Jun 2012 14:09:00 +0000 Subject: mount: support strictatime option. Closes 5240 Signed-off-by: Denys Vlasenko --- diff --git a/util-linux/mount.c b/util-linux/mount.c index b6c94d7..525fdcc 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -113,6 +113,12 @@ #ifndef MS_RELATIME # define MS_RELATIME (1 << 21) #endif +#ifndef MS_STRICTATIME +# define MS_STRICTATIME (1 << 24) +#endif + +/* Any ~MS_FOO value has this bit set: */ +#define BB_MS_INVERTED_VALUE (1u << 31) #include "libbb.h" #if ENABLE_FEATURE_MOUNT_LABEL @@ -240,6 +246,7 @@ static const int32_t mount_options[] = { /* "nomand" */ ~MS_MANDLOCK, /* "relatime" */ MS_RELATIME, /* "norelatime" */ ~MS_RELATIME, + /* "strictatime" */ MS_STRICTATIME, /* "loud" */ ~MS_SILENT, /* "rbind" */ MS_BIND|MS_RECURSIVE, @@ -297,6 +304,7 @@ static const char mount_option_str[] = "nomand\0" "relatime\0" "norelatime\0" + "strictatime\0" "loud\0" "rbind\0" @@ -473,7 +481,7 @@ static unsigned long parse_mount_options(char *options, char **unrecognized) && (options[opt_len] == '\0' || options[opt_len] == '=') ) { unsigned long fl = mount_options[i]; - if ((long)fl < 0) + if (fl & BB_MS_INVERTED_VALUE) flags &= fl; else flags |= fl; -- cgit v0.9.0.1-2-gef13