mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
fs/nfs: Fix readdir slow-start regression
Commit580f236737("NFS: Adjust the amount of readahead performed by NFS readdir") reduces the amount of readahead names caching done by the client. The downside of this approach is READDIR now may suffer from a slow-start issue, where initially it will fetch names that fit in a single page, then in 2, 4, 8 until the maximum supported transfer size (usually 1M). This patch tries to take a balanced approach between mitigating the slow-start issue still maintaining some efficiency gains. Fixes:580f236737("NFS: Adjust the amount of readahead performed by NFS readdir") Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
This commit is contained in:
parent
5248d8474e
commit
42e7c876b1
|
|
@ -72,7 +72,7 @@ const struct address_space_operations nfs_dir_aops = {
|
|||
.free_folio = nfs_readdir_clear_array,
|
||||
};
|
||||
|
||||
#define NFS_INIT_DTSIZE PAGE_SIZE
|
||||
#define NFS_INIT_DTSIZE SZ_64K
|
||||
|
||||
static struct nfs_open_dir_context *
|
||||
alloc_nfs_open_dir_context(struct inode *dir)
|
||||
|
|
@ -83,7 +83,7 @@ alloc_nfs_open_dir_context(struct inode *dir)
|
|||
ctx = kzalloc(sizeof(*ctx), GFP_KERNEL_ACCOUNT);
|
||||
if (ctx != NULL) {
|
||||
ctx->attr_gencount = nfsi->attr_gencount;
|
||||
ctx->dtsize = NFS_INIT_DTSIZE;
|
||||
ctx->dtsize = min(NFS_SERVER(dir)->dtsize, NFS_INIT_DTSIZE);
|
||||
spin_lock(&dir->i_lock);
|
||||
if (list_empty(&nfsi->open_files) &&
|
||||
(nfsi->cache_validity & NFS_INO_DATA_INVAL_DEFER))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user