Use more precise stat.st_blocks to account cache size on Unix instead of file length rounded to a file system block size. There is no similar way on Windows, so rounding to a cache->bsize is kept.
diff --git a/src/core/ngx_open_file_cache.c b/src/core/ngx_open_file_cache.c index a9c4532..a70385c 100644 --- a/src/core/ngx_open_file_cache.c +++ b/src/core/ngx_open_file_cache.c
@@ -155,6 +155,7 @@ of->uniq = ngx_file_uniq(&fi); of->mtime = ngx_file_mtime(&fi); of->size = ngx_file_size(&fi); + of->fs_size = ngx_file_fs_size(&fi); of->is_dir = ngx_is_dir(&fi); of->is_file = ngx_is_file(&fi); of->is_link = ngx_is_link(&fi); @@ -557,6 +558,7 @@ of->uniq = ngx_file_uniq(&fi); of->mtime = ngx_file_mtime(&fi); of->size = ngx_file_size(&fi); + of->fs_size = ngx_file_fs_size(&fi); of->is_dir = ngx_is_dir(&fi); of->is_file = ngx_is_file(&fi); of->is_link = ngx_is_link(&fi);
diff --git a/src/core/ngx_open_file_cache.h b/src/core/ngx_open_file_cache.h index f56dfcc..638bc5d 100644 --- a/src/core/ngx_open_file_cache.h +++ b/src/core/ngx_open_file_cache.h
@@ -20,6 +20,7 @@ ngx_file_uniq_t uniq; time_t mtime; off_t size; + off_t fs_size; off_t directio; size_t read_ahead;