mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-29 08:20:42 +01:00
mount: let a readdirplus stop taking references at a cap
The inode table only shrinks when the kernel returns a reference, so a walk over a large tree grows it with every child it touches and nothing gives any of it back until the kernel reclaims dentries. On a mount with tens of millions of files that is most of the process's heap. -maxInodeEntries stops the speculative half of that. Past the cap a readdirplus still reports every name, but leaves the EntryOut zeroed: Linux reads a zero nodeid as 'no attributes for this entry', takes no reference, and looks up the ones the client actually needs. A LOOKUP is never refused, so the table can still grow past the cap by what a client really asks for, and nothing here evicts. Default 0 keeps today's behavior.
This commit is contained in:
1 parent
ed75a61fb0
commit
bd3b75b534
7 files changed
+75
-7
No files matched your search
@@ -204,6 +204,7 @@ func buildSeaweedFileSystem(option *MountOptions, p fileSystemParams) *mount.WFS
|
||||
WriteBufferSizeMB: *option.writeBufferSizeMB,
|
||||
CacheMetaTTlSec: *option.cacheMetaTtlSec,
|
||||
CacheDirMaxEntries: *option.cacheDirMaxEntries,
|
||||
MaxInodeEntries: *option.maxInodeEntries,
|
||||
DataCenter: *option.dataCenter,
|
||||
Quota: int64(*option.collectionQuota) * 1024 * 1024,
|
||||
LogicalDiskUsage: *option.logicalDiskUsage,
|
||||
|
||||
Reference in new issue
Block a user