summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaulo Alcantara <pc@cjr.nz>2021-06-04 19:25:32 -0300
committerSteve French <stfrench@microsoft.com>2021-06-20 21:28:17 -0500
commitc950fc7af9a7c20b60d7c1ffe5fd4d982ec8cd6c (patch)
tree80a23f61ea944deed111556ae74d2e579aef9e0a
parent42caeba713b12ee0dfc085f6fb2f7cde2a64f91a (diff)
downloadlinux-c950fc7af9a7c20b60d7c1ffe5fd4d982ec8cd6c.tar.gz
linux-c950fc7af9a7c20b60d7c1ffe5fd4d982ec8cd6c.tar.bz2
linux-c950fc7af9a7c20b60d7c1ffe5fd4d982ec8cd6c.zip
cifs: set a minimum of 2 minutes for refreshing dfs cache
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>
-rw-r--r--fs/cifs/dfs_cache.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/cifs/dfs_cache.c b/fs/cifs/dfs_cache.c
index 66be23975aec..d9c2c75a2989 100644
--- a/fs/cifs/dfs_cache.c
+++ b/fs/cifs/dfs_cache.c
@@ -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;