- add handling for noatime,nodiratime,mandlock for linux
authorChristos Zoulas <christos@zoulas.com>
Fri, 14 Sep 2012 18:17:58 +0000 (14:17 -0400)
committerChristos Zoulas <christos@zoulas.com>
Fri, 14 Sep 2012 18:17:58 +0000 (14:17 -0400)
- add locking keyword support for lustre

ChangeLog
conf/mount/mount_linux.c
m4/macros/header_templates.m4

index 3684bc4e028baa62693bd0f77ec577d252b4be0a..ed8a5871a668b19d318040c028e42c2dcaae2242 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-09-14  Christos Zoulas <christos@zoulas.com>
+
+       * add locking option handling for lustre
+       * fix noatime, nodiratime, mandlock for linux
+
 2012-07-25  Christos Zoulas <christos@zoulas.com>
 
        * bug fixes for lustre rhost parsing
index 63eeddb679605b5d2459167b6e3353f73e26d871..05ede82fd99a672c216e4dcd9ae65b8f2d8eec20 100644 (file)
@@ -89,6 +89,18 @@ const struct opt_map opt_map[] =
   {MNTTAB_OPT_SUB,     1,      MNT2_GEN_OPT_NOSUB},
   {MNTTAB_OPT_NOSUB,   0,      MNT2_GEN_OPT_NOSUB},
 #endif /* MNT2_GEN_OPT_NOSUB */
+#ifdef MNT2_GEN_OPT_SYNCHRONOUS
+  {"synchronous",      0,      MNT2_GEN_OPT_SYNCHRONOUS},
+#endif /* MNT2_GEN_OPT_SYNCHRONOUS */
+#ifdef MNT2_GEN_OPT_MANDLOCK
+  {"mandlock",         0,      MNT2_GEN_OPT_MANDLOCK},
+#endif /* MNT2_GEN_OPT_MANDLOCK */
+#ifdef MNT2_GEN_OPT_NOATIME
+  {"noatime",          0,      MNT2_GEN_OPT_NOATIME},
+#endif /* MNT2_GEN_OPT_NOATIME */
+#ifdef MNT2_GEN_OPT_NODIRATIME
+  {"nodiratime",       0,      MNT2_GEN_OPT_NODIRATIME},
+#endif /* MNT2_GEN_OPT_NODIRATIME */
   {NULL,               0,      0}
 };
 
@@ -131,6 +143,12 @@ const struct fs_opts autofs_opts[] = {
   { NULL,      0 }
 };
 
+const struct fs_opts lustre_opts[] = {
+  { "flock",           0 },
+  { "localflock",      0 },
+  { NULL,              0 }
+};
+
 const struct fs_opts null_opts[] = {
   { NULL,      0 }
 };
@@ -207,7 +225,7 @@ parse_opts(char *type, const char *optstr, int *flags, char **xopts, int *noauto
 #endif /* MOUNT_TYPE_LOFS */
 #ifdef MOUNT_TYPE_LUSTRE
     if (STREQ(type, MOUNT_TYPE_LUSTRE)) {
-      dev_opts = null_opts;
+      dev_opts = lustre_opts;
       goto do_opts;
     }
 #endif /* MOUNT_TYPE_LUSTRE */
@@ -494,10 +512,13 @@ mount_linux_nonfs(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data)
 
 #ifdef MOUNT_TYPE_LUSTRE
   if (STREQ(type, MOUNT_TYPE_LUSTRE)) {
+    char *topts;
     if (*extra_opts)
-      extra_opts = str3cat(extra_opts, ",device=", mnt->mnt_fsname, "");
+      topts = strvcat(extra_opts, ",device=", mnt->mnt_fsname, NULL);
     else
-      extra_opts = str3cat(extra_opts, "device=", mnt->mnt_fsname, "");
+      topts = strvcat("device=", mnt->mnt_fsname, NULL);
+    free(extra_opts);
+    extra_opts = topts;
   }
 #endif /* MOUNT_TYPE_LOFS */
 
index 86a1c65c91304a268250000015bc8417be3a1a5d..254f330b7727a06952a0951792ec4cbd53887a3e 100644 (file)
@@ -557,6 +557,15 @@ AH_TEMPLATE([MNT2_GEN_OPT_SYNC],
 AH_TEMPLATE([MNT2_GEN_OPT_SYNCHRONOUS],
 [synchronous filesystem access (same as SYNC)])
 
+AH_TEMPLATE([MNT2_GEN_OPT_NOATIME],
+[don't update access times])
+
+AH_TEMPLATE([MNT2_GEN_OPT_NODIRATIME],
+[don't update directory access times])
+
+AH_TEMPLATE([MNT2_GEN_OPT_MANDLOCK],
+[honor mandatory locking requests])
+
 AH_TEMPLATE([MNT2_GEN_OPT_SYS5],
 [Mount with Sys 5-specific semantics])