]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cifs: set a minimum of 2 minutes for refreshing dfs cache
authorPaulo Alcantara <pc@cjr.nz>
Fri, 4 Jun 2021 22:25:32 +0000 (19:25 -0300)
committerSteve French <stfrench@microsoft.com>
Mon, 21 Jun 2021 02:28:17 +0000 (21:28 -0500)
We don't want to refresh the dfs cache in very short intervals, so
setting a minimum interval of 2 minutes is OK.

If it needs to be refreshed immediately, one could have the cache
cleared with

$ echo 0 > /proc/fs/cifs/dfscache

and then remounting the dfs share.

Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/dfs_cache.c

index 66be23975aecc49f570239791557150edce9feeb..d9c2c75a2989b51f8145e2538bae70568e9f83fe 100644 (file)
@@ -24,6 +24,7 @@
 
 #define CACHE_HTABLE_SIZE 32
 #define CACHE_MAX_ENTRIES 64
+#define CACHE_MIN_TTL 120 /* 2 minutes */
 
 #define IS_INTERLINK_SET(v) ((v) & (DFSREF_REFERRAL_SERVER | \
                                    DFSREF_STORAGE_SERVER))
@@ -492,7 +493,7 @@ static int copy_ref_data(const struct dfs_info3_param *refs, int numrefs,
 {
        int i;
 
-       ce->ttl = refs[0].ttl;
+       ce->ttl = max_t(int, refs[0].ttl, CACHE_MIN_TTL);
        ce->etime = get_expire_time(ce->ttl);
        ce->srvtype = refs[0].server_type;
        ce->hdr_flags = refs[0].flags;