]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/exports.c
See Changelog
[nfs-utils.git] / support / nfs / exports.c
index 5a8e7e9982fef7181b02f63e9e663387296f0e2a..7e0decf0b4d12cb77b868aff7eb4f7b7a48f2f15 100644 (file)
@@ -61,7 +61,7 @@ setexportent(char *fname, char *type)
 }
 
 struct exportent *
-getexportent(void)
+getexportent(int fromkernel)
 {
        static struct exportent ee;
        char            exp[512];
@@ -74,6 +74,15 @@ getexportent(void)
 
        freesquash();
        ee.e_flags = EXPORT_DEFAULT_FLAGS;
+       /* some kernels assume the default is sync rather than
+        * async.  More recent kernels always report one or other,
+        * but this test makes sure we assume same as kernel
+        * Ditto for wgather
+        */
+       if (fromkernel) {
+               ee.e_flags &= ~NFSEXP_ASYNC;
+               ee.e_flags &= ~NFSEXP_GATHERED_WRITES;
+       }
        ee.e_maptype = CLE_MAP_IDENT;
        ee.e_anonuid = -2;
        ee.e_anongid = -2;
@@ -309,6 +318,10 @@ parseopts(char *cp, struct exportent *ep)
                        ep->e_flags |= NFSEXP_CROSSMNT;
                else if (!strcmp(opt, "hide"))
                        ep->e_flags &= ~NFSEXP_CROSSMNT;
+               else if (!strcmp(opt, "crossmnt"))              /* old style */
+                       ep->e_flags |= NFSEXP_CROSSMNT;
+               else if (!strcmp(opt, "nocrossmnt"))            /* old style */
+                       ep->e_flags &= ~NFSEXP_CROSSMNT;
                else if (!strcmp(opt, "wdelay"))
                        ep->e_flags |= NFSEXP_GATHERED_WRITES;
                else if (!strcmp(opt, "no_wdelay"))