Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1910 from benpeart/fscache_statistics-gfw
Browse files Browse the repository at this point in the history
fscache: add fscache hit statistics
dscho authored and Git for Windows Build Agent committed Jan 7, 2025

Verified

This commit was signed with the committer’s verified signature. The key has expired.
chfast Paweł Bylica
2 parents 65418be + f1f5c6a commit 7cad3d6
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions compat/win32/fscache.c
Original file line number Diff line number Diff line change
@@ -11,6 +11,10 @@ static int initialized;
static volatile long enabled;
static struct hashmap map;
static CRITICAL_SECTION mutex;
static unsigned int lstat_requests;
static unsigned int opendir_requests;
static unsigned int fscache_requests;
static unsigned int fscache_misses;
static struct trace_key trace_fscache = TRACE_KEY_INIT(FSCACHE);

/*
@@ -265,6 +269,8 @@ static void fscache_clear(void)
{
hashmap_clear_and_free(&map, struct fsentry, ent);
hashmap_init(&map, (hashmap_cmp_fn)fsentry_cmp, NULL, 0);
lstat_requests = opendir_requests = 0;
fscache_misses = fscache_requests = 0;
}

/*
@@ -311,6 +317,7 @@ static struct fsentry *fscache_get(struct fsentry *key)
int dir_not_found;

EnterCriticalSection(&mutex);
fscache_requests++;
/* check if entry is in cache */
fse = fscache_get_wait(key);
if (fse) {
@@ -374,6 +381,7 @@ static struct fsentry *fscache_get(struct fsentry *key)
}

/* add directory listing to the cache */
fscache_misses++;
fscache_add(fse);

/* lookup file entry if requested (fse already points to directory) */
@@ -411,6 +419,8 @@ int fscache_enable(int enable)
return 0;

InitializeCriticalSection(&mutex);
lstat_requests = opendir_requests = 0;
fscache_misses = fscache_requests = 0;
hashmap_init(&map, (hashmap_cmp_fn) fsentry_cmp, NULL, 0);
initialized = 1;
}
@@ -427,6 +437,10 @@ int fscache_enable(int enable)
opendir = dirent_opendir;
lstat = mingw_lstat;
EnterCriticalSection(&mutex);
trace_printf_key(&trace_fscache, "fscache: lstat %u, opendir %u, "
"total requests/misses %u/%u\n",
lstat_requests, opendir_requests,
fscache_requests, fscache_misses);
fscache_clear();
LeaveCriticalSection(&mutex);
}
@@ -459,6 +473,7 @@ int fscache_lstat(const char *filename, struct stat *st)
if (!fscache_enabled(filename))
return mingw_lstat(filename, st);

lstat_requests++;
/* split filename into path + name */
len = strlen(filename);
if (len && is_dir_sep(filename[len - 1]))
@@ -540,6 +555,7 @@ DIR *fscache_opendir(const char *dirname)
if (!fscache_enabled(dirname))
return dirent_opendir(dirname);

opendir_requests++;
/* prepare name (strip trailing '/', replace '.') */
len = strlen(dirname);
if ((len == 1 && dirname[0] == '.') ||

0 comments on commit 7cad3d6

Please sign in to comment.