summaryrefslogtreecommitdiffstats
path: root/support/nfs/rmtab.c
diff options
context:
space:
mode:
Diffstat (limited to 'support/nfs/rmtab.c')
-rw-r--r--support/nfs/rmtab.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/support/nfs/rmtab.c b/support/nfs/rmtab.c
index 4cbd285..a28abf3 100644
--- a/support/nfs/rmtab.c
+++ b/support/nfs/rmtab.c
@@ -117,11 +117,24 @@ void
fendrmtabent(FILE *fp)
{
if (fp) {
- /* If it was written to, we really want
- * to flush to disk before returning
- */
- fflush(fp);
- fdatasync(fileno(fp));
+ static int have_new_cache = -1;
+ if (have_new_cache == -1) /* check only once */
+ have_new_cache = check_new_cache();
+
+ if (!have_new_cache) {
+ /*
+ * If we are using the old caching interface: exportfs
+ * uses the rmtab to determine what should be exported,
+ * so it is important that it be up-to-date.
+ *
+ * If we are using the new caching interface: the rmtab
+ * is ignored by exportfs and the fdatasync only serves
+ * to slow us down.
+ */
+ fflush(fp);
+ fdatasync(fileno(fp));
+ }
+
fclose(fp);
}
}