]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
Never set flushtime for a cache in the future.
authorNeil Brown <neilb@suse.de>
Sun, 4 Feb 2007 21:57:36 +0000 (08:57 +1100)
committerNeil Brown <neilb@suse.de>
Sun, 4 Feb 2007 21:57:36 +0000 (08:57 +1100)
If 'etab' happens to have a timestamp in the future, this will get
copied to the flush-time for various caches,  and no exports will
work until that time arrives.  So clamp the flushtime to 'now'.

support/nfs/cacheio.c

index 36473cf3b911beb1fa7670a2a57225b58c8130bc..a4bfedbbc02eb1e3522dea1172be1973ff54b3de 100644 (file)
@@ -247,6 +247,7 @@ cache_flush(int force)
        int c;
        char stime[20];
        char path[200];
+       time_t now;
        /* 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,
@@ -259,8 +260,10 @@ cache_flush(int force)
                "nfsd.export",
                NULL
        };
+       now = time(0);
        if (force ||
-           stat(_PATH_ETAB, &stb) != 0)
+           stat(_PATH_ETAB, &stb) != 0 ||
+           stb.st_mtime > now)
                stb.st_mtime = time(0);
        
        sprintf(stime, "%ld\n", stb.st_mtime);