Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143992872
D54554.id169321.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D54554.id169321.diff
View Options
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -406,31 +406,34 @@
#define CACHE_ZONE_ALIGNMENT UMA_ALIGNOF(struct namecache_ts)
/*
- * TODO: the initial value of CACHE_PATH_CUTOFF was inherited from the
- * 4.4 BSD codebase. Later on struct namecache was tweaked to become
- * smaller and the value was bumped to retain the total size, but it
- * was never re-evaluated for suitability. A simple test counting
- * lengths during package building shows that the value of 45 covers
- * about 86% of all added entries, reaching 99% at 65.
+ * TODO: the initial value of CACHE_PATH_CUTOFF (39) was inherited from
+ * the * 4.4 BSD codebase. Later on struct namecache was tweaked to
+ * become smaller and the value was bumped to 39 to retain the total
+ * size, but it was never re-evaluated for suitability. It was again
+ * bumped to 45 on 64-bit systems and 41 on 32-bit systems (the current
+ * values which are now computed at compile time rather than hardcoded).
+ * A simple test counting lengths during package building
+ * shows that the value of 45 covers about 86% of all added entries,
+ * reaching 99% at 65.
*
* Regardless of the above, use of dedicated zones instead of malloc may be
* inducing additional waste. This may be hard to address as said zones are
* tied to VFS SMR. Even if retaining them, the current split should be
* re-evaluated.
*/
-#ifdef __LP64__
-#define CACHE_PATH_CUTOFF 45
-#else
-#define CACHE_PATH_CUTOFF 41
-#endif
+#define CACHE_PATH_CUTOFF_MIN 40
+#define CACHE_STRUCT_LEN(pathlen) \
+ (offsetof(struct namecache, nc_name) + (pathlen) + 1)
+#define CACHE_PATH_CUTOFF \
+ (roundup2(CACHE_STRUCT_LEN(CACHE_PATH_CUTOFF_MIN), \
+ _Alignof(struct namecache_ts)) - CACHE_STRUCT_LEN(0))
#define CACHE_ZONE_SMALL_SIZE \
- (offsetof(struct namecache, nc_name) + CACHE_PATH_CUTOFF + 1)
+ CACHE_STRUCT_LEN(CACHE_PATH_CUTOFF)
#define CACHE_ZONE_SMALL_TS_SIZE \
(offsetof(struct namecache_ts, nc_nc) + CACHE_ZONE_SMALL_SIZE)
#define CACHE_ZONE_LARGE_SIZE \
- roundup2(offsetof(struct namecache, nc_name) + NAME_MAX + 1, \
- _Alignof(struct namecache_ts))
+ roundup2(CACHE_STRUCT_LEN(NAME_MAX), _Alignof(struct namecache_ts))
#define CACHE_ZONE_LARGE_TS_SIZE \
(offsetof(struct namecache_ts, nc_nc) + CACHE_ZONE_LARGE_SIZE)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Feb 4, 2:09 AM (6 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27590962
Default Alt Text
D54554.id169321.diff (2 KB)
Attached To
Mode
D54554: cache: avoid hardcoded CACHE_PATH_CUTOFF
Attached
Detach File
Event Timeline
Log In to Comment