afs: Bound afs_DoBulkStat dir scan 53/13253/3
authorAndrew Deason <adeason@sinenomine.net>
Sun, 8 Jul 2018 20:00:02 +0000 (15:00 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 3 Jul 2020 01:56:30 +0000 (21:56 -0400)
commitba8b92401b8cb2f5a5306313c2702cb36cba083c
tree508a68e2a18ee58759455504742b2697e4decd84
parent6c808e05adb0609e02cd61e3c6c4c09eb93c1630
afs: Bound afs_DoBulkStat dir scan

Currently, afs_DoBulkStat will scan the entire directory blob, looking
for entries to stat. If all or almost all entries are already stat'd,
we'll scan through the entire directory, doing nontrivial work on
each entry (we grab afs_xvcache, at least). All of this work is pretty
pointless, since the entries are already cached and so we won't do
anything. If many processes are trying to acquire afs_xvcache, this
can contribute to performance issues.

To avoid this, provide a constant bound on the number of entries we'll
search through: nentries * 4. The current arbitrary limits cap
nentries at 30, so this means we're capping the afs_DoBulkStat search
to 120 entries.

Change-Id: I66e9af5b27844ddf6cf37c8286fcc65f8e0d3f96
Reviewed-on: https://gerrit.openafs.org/13253
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/afs/VNOPS/afs_vnop_lookup.c