{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}
};
{ NULL, 0 }
};
+const struct fs_opts lustre_opts[] = {
+ { "flock", 0 },
+ { "localflock", 0 },
+ { NULL, 0 }
+};
+
const struct fs_opts null_opts[] = {
{ NULL, 0 }
};
#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 */
#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 */
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])