NFS: Trigger the "ls -l" readdir heuristic sooner
authorBenjamin Coddington <bcodding@redhat.com>
Tue, 20 Sep 2022 17:00:21 +0000 (13:00 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 28 Nov 2022 03:09:59 +0000 (22:09 -0500)
commit85aa8ddc3818718208c3cfdfda9c8c908c9dead1
treefdb2f79aab4b032fbed7d8c9b63a5c7f0fe43d72
parentc528f70f504434eaff993a5ddd52203a2010d51f
NFS: Trigger the "ls -l" readdir heuristic sooner

Since commit 1a34c8c9a49e ("NFS: Support larger readdir buffers") has
updated dtsize, and with recent improvements to the READDIRPLUS helper
heuristic, the heuristic may not trigger until many dentries are emitted
to userspace.   This will cause many thousands of GETATTR calls for "ls
-l" when the directory's pagecache has already been populated.  This
manifests as poor performance for long directory listings after an
initially fast "ls -l".

Fix this by emitting only 17 entries for any first pass through the NFS
directory's ->iterate_shared(), which allows userpace to prime the
counters for the heuristic.

Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/dir.c