Expose the maximum cache size setting as a flag
Allow the user to customize the size of the sshfs cache by adding a new max_cache_size flag and turning the hardcoded constant into a variable.
This commit is contained in:
parent
d1ddbbcae5
commit
ebfeebd468
|
|
@ -3,6 +3,8 @@ Draft notes for upcoming release
|
|||
|
||||
* Integrated osxfuse's copy of sshfs, which means that sshfs now works
|
||||
on OS X out of the box.
|
||||
* Added -o cache_max_size=N option to let users tune the maximum size of
|
||||
the cache in number of entries.
|
||||
|
||||
Release 2.7 (2015-01-28)
|
||||
------------------------
|
||||
|
|
|
|||
7
cache.c
7
cache.c
|
|
@ -15,7 +15,7 @@
|
|||
#include <pthread.h>
|
||||
|
||||
#define DEFAULT_CACHE_TIMEOUT_SECS 20
|
||||
#define MAX_CACHE_SIZE 10000
|
||||
#define DEFAULT_MAX_CACHE_SIZE 10000
|
||||
#define MIN_CACHE_CLEAN_INTERVAL 5
|
||||
#define CACHE_CLEAN_INTERVAL 60
|
||||
|
||||
|
|
@ -24,6 +24,7 @@ struct cache {
|
|||
unsigned stat_timeout_secs;
|
||||
unsigned dir_timeout_secs;
|
||||
unsigned link_timeout_secs;
|
||||
unsigned max_size;
|
||||
struct fuse_cache_operations *next_oper;
|
||||
GHashTable *table;
|
||||
pthread_mutex_t lock;
|
||||
|
|
@ -71,7 +72,7 @@ static void cache_clean(void)
|
|||
{
|
||||
time_t now = time(NULL);
|
||||
if (now > cache.last_cleaned + MIN_CACHE_CLEAN_INTERVAL &&
|
||||
(g_hash_table_size(cache.table) > MAX_CACHE_SIZE ||
|
||||
(g_hash_table_size(cache.table) > cache.max_size ||
|
||||
now > cache.last_cleaned + CACHE_CLEAN_INTERVAL)) {
|
||||
g_hash_table_foreach_remove(cache.table,
|
||||
(GHRFunc) cache_clean_entry, &now);
|
||||
|
|
@ -576,6 +577,7 @@ static const struct fuse_opt cache_opts[] = {
|
|||
{ "cache_stat_timeout=%u", offsetof(struct cache, stat_timeout_secs), 0 },
|
||||
{ "cache_dir_timeout=%u", offsetof(struct cache, dir_timeout_secs), 0 },
|
||||
{ "cache_link_timeout=%u", offsetof(struct cache, link_timeout_secs), 0 },
|
||||
{ "cache_max_size=%u", offsetof(struct cache, max_size), 0 },
|
||||
FUSE_OPT_END
|
||||
};
|
||||
|
||||
|
|
@ -584,6 +586,7 @@ int cache_parse_options(struct fuse_args *args)
|
|||
cache.stat_timeout_secs = DEFAULT_CACHE_TIMEOUT_SECS;
|
||||
cache.dir_timeout_secs = DEFAULT_CACHE_TIMEOUT_SECS;
|
||||
cache.link_timeout_secs = DEFAULT_CACHE_TIMEOUT_SECS;
|
||||
cache.max_size = DEFAULT_MAX_CACHE_SIZE;
|
||||
cache.on = 1;
|
||||
|
||||
return fuse_opt_parse(args, &cache, cache_opts, NULL);
|
||||
|
|
|
|||
1
sshfs.c
1
sshfs.c
|
|
@ -3377,6 +3377,7 @@ static void usage(const char *progname)
|
|||
" -o sync_readdir synchronous readdir\n"
|
||||
" -o sshfs_debug print some debugging information\n"
|
||||
" -o cache=BOOL enable caching {yes,no} (default: yes)\n"
|
||||
" -o cache_max_size=N sets the maximum size of the cache (default: 10000)\n"
|
||||
" -o cache_timeout=N sets timeout for caches in seconds (default: 20)\n"
|
||||
" -o cache_X_timeout=N sets timeout for {stat,dir,link} cache\n"
|
||||
" -o workaround=LIST colon separated list of workarounds\n"
|
||||
|
|
|
|||
Loading…
Reference in New Issue