From: neilbrown <neilbrown>
Date: Tue, 8 Jun 2004 03:16:36 +0000 (+0000)
Subject: Fix cache flushing problem.
X-Git-Tag: nfs-utils-1-0-6-post2
X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=509f7109bbb91112b6d8b89da523579985358401;p=nfs-utils.git

Fix cache flushing problem.
---

diff --git a/ChangeLog b/ChangeLog
index 98893a1..f7ec2da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-06-08 NeilBrown <neilb@cse.unsw.edu.au>
+
+	* utils/exportfs/exportfs.c: Don't rmtab_read if new_cache, it
+	  isn't necessary.
+	* support/nfs/cacheio.c(cache_flush): Change order in which caches
+	  are flushed so that dependancies don't keep things in the cache
+	  too long.
+	
 2004-03-18  Chip Salzenberg  <chip@pobox.com>
 
 	* debian/changelog: Version 1.0.6-2.
diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c
index 20d195c..33231b0 100644
--- a/support/nfs/cacheio.c
+++ b/support/nfs/cacheio.c
@@ -246,10 +246,16 @@ cache_flush(int force)
 	int c;
 	char stime[20];
 	char path[200];
+	/* Note: the order of these caches is important.
+	 * The need to be flushed in dependancy order. So
+	 * a cache that references items in another cache,
+	 * as nfsd.fh entries reference items in nfsd.export,
+	 * must be flushed before the cache that it references.
+	 */
 	static char *cachelist[] = {
 		"auth.unix.ip",
-		"nfsd.export",
 		"nfsd.fh",
+		"nfsd.export",
 		NULL
 	};
 	stb.st_mtime = time(0);
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
index 290d8b2..b4f0226 100644
--- a/utils/exportfs/exportfs.c
+++ b/utils/exportfs/exportfs.c
@@ -130,7 +130,8 @@ main(int argc, char **argv)
 		if (!f_export)
 			for (i = optind ; i < argc ; i++)
 				unexportfs(argv[i], f_verbose);
-		rmtab_read();
+		if (!new_cache)
+			rmtab_read();
 	}
 	if (!new_cache) {
 		xtab_mount_read();