Whamcloud - gitweb
LU-111 Fix force options parsing
[fs/lustre-release.git] / lustre / utils / mount_lustre.c
index 8130da8..464dca9 100644 (file)
@@ -49,6 +49,7 @@
 #include <errno.h>
 #include <string.h>
 #include <sys/mount.h>
+#include <linux/fs.h>
 #include <mntent.h>
 #include <getopt.h>
 #include "obdctl.h"
@@ -233,6 +234,9 @@ static const struct opt_map opt_map[] = {
   { "relatime", 0, MS_RELATIME },  /* set file access time on read */
   { "norelatime",1,MS_RELATIME },  /* do not set file access time on read */
 #endif
+#ifdef MS_STRICTATIME
+  { "strictatime",0,MS_STRICTATIME },  /* update access time strictly */
+#endif
   { "auto",     0, 0         },      /* Can be mounted using -a */
   { "noauto",   0, 0         },      /* Can only be mounted explicitly */
   { "nousers",  1, 0         },      /* Forbid ordinary user to mount */
@@ -304,7 +308,7 @@ int parse_options(char *orig_options, int *flagp)
                                 retry = 0;
                 } else if (val && strncmp(arg, "mgssec", 6) == 0) {
                         append_option(options, opt);
-                } else if (strncmp(opt, "force", 5) == 0) {
+                } else if (strcmp(opt, "force") == 0) {
                         //XXX special check for 'force' option
                         ++force;
                         printf("force: %d\n", force);
@@ -313,6 +317,12 @@ int parse_options(char *orig_options, int *flagp)
                         append_option(options, opt);
                 }
         }
+#ifdef MS_STRICTATIME
+                /* set strictatime to default if NOATIME or RELATIME
+                   not given explicit */
+        if (!(*flagp & (MS_NOATIME | MS_RELATIME)))
+                *flagp |= MS_STRICTATIME;
+#endif
         strcpy(orig_options, options);
         free(options);
         return 0;
@@ -710,9 +720,8 @@ int main(int argc, char *const argv[])
                         usource, target, strerror(errno));
                 if (errno == ENODEV)
                         fprintf(stderr, "Are the lustre modules loaded?\n"
-                                "Check /etc/modprobe.conf and /proc/filesystems"
-                                "\nNote 'alias lustre llite' should be removed"
-                                " from modprobe.conf\n");
+                                "Check /etc/modprobe.conf and "
+                                "/proc/filesystems\n");
                 if (errno == ENOTBLK)
                         fprintf(stderr, "Do you need -o loop?\n");
                 if (errno == ENOMEDIUM)