linux-stable/fs/smb/client
David Howells 08f70c0a93 cifs: Fix read-performance regression by dropping readahead expansion
cifs_expand_read() is causing a performance regression of around 30% by
causing extra pagecache to be allocated for an inode in the readahead path
before we begin actually dispatching RPC requests, thereby delaying the
actual I/O.  The expansion is sized according to the rsize parameter, which
seems to be 4MiB on my test system; this is a big step up from the first
requests made by the fio test program.

Simple repro (look at read bandwidth number):
     fio --name=writetest --filename=/xfstest.test/foo --time_based --runtime=60 --size=16M --numjobs=1 --rw=read

Fix this by removing cifs_expand_readahead().  Readahead expansion is
mostly useful for when we're using the local cache if the local cache has a
block size greater than PAGE_SIZE, so we can dispense with it when not
caching.

Fixes: 69c3c023af ("cifs: Implement netfslib hooks")
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: Matthew Wilcox <willy@infradead.org>
cc: linux-cifs@vger.kernel.org
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
cc: linux-mm@kvack.org
Signed-off-by: Steve French <stfrench@microsoft.com>
2024-07-02 21:23:41 -05:00
..
asn1.c
cached_dir.c smb3: fix Open files on server counter going negative 2024-04-11 16:02:02 -05:00
cached_dir.h smb: client: make laundromat a delayed worker 2023-10-12 09:41:04 -05:00
cifs_debug.c smb: client: fix potential UAF in cifs_stats_proc_show() 2024-04-03 14:43:45 -05:00
cifs_debug.h
cifs_fs_sb.h
cifs_ioctl.h smb3: allow dumping session and tcon id to improve stats analysis and debugging 2023-11-10 02:00:30 -06:00
cifs_spnego.c cifs: spnego: add ';' in HOST_KEY_LEN 2023-11-13 16:21:34 -06:00
cifs_spnego.h
cifs_spnego_negtokeninit.asn1
cifs_swn.c
cifs_swn.h
cifs_unicode.c fs/smb/client: Use common code in client 2023-08-30 08:55:52 -05:00
cifs_unicode.h fs/smb/client: Use common code in client 2023-08-30 08:55:52 -05:00
cifsacl.c
cifsacl.h
cifsencrypt.c smb: Work around Clang __bdos() type confusion 2024-01-23 18:56:16 -06:00
cifsfs.c cifs: fix typo in module parameter enable_gcm_256 2024-06-19 14:57:11 -05:00
cifsfs.h cifs: update internal version number 2024-05-21 11:15:00 -05:00
cifsglob.h cifs: Move the 'pid' from the subreq to the req 2024-06-20 15:25:08 -05:00
cifspdu.h cifs: fix creating sockets when using sfu mount options 2024-05-31 10:55:15 -05:00
cifsproto.h cifs: Remove some code that's no longer used, part 1 2024-05-01 18:08:21 +01:00
cifsroot.c
cifssmb.c cifs: Move the 'pid' from the subreq to the req 2024-06-20 15:25:08 -05:00
connect.c cifs: Add tracing for the cifs_tcon struct refcounting 2024-04-19 16:02:09 -05:00
dfs.c smb: client: guarantee refcounted children from parent session 2024-04-02 10:09:57 -05:00
dfs.h smb: client: guarantee refcounted children from parent session 2024-04-02 10:09:57 -05:00
dfs_cache.c smb: client: refresh referral without acquiring refpath_lock 2024-04-02 10:11:43 -05:00
dfs_cache.h smb: client: ensure to try all targets when finding nested links 2023-08-20 16:05:50 -05:00
dir.c cifs: Fix caching to try to do open O_WRONLY as rdwr on server 2024-04-02 09:29:55 -05:00
dns_resolve.c
dns_resolve.h
export.c exportfs: make ->encode_fh() a mandatory method for NFS export 2023-10-28 16:15:15 +02:00
file.c cifs: Fix read-performance regression by dropping readahead expansion 2024-07-02 21:23:41 -05:00
fs_context.c cifs: reinstate original behavior again for forceuid/forcegid 2024-04-22 10:50:31 -05:00
fs_context.h cifs: reinstate original behavior again for forceuid/forcegid 2024-04-22 10:50:31 -05:00
fscache.c cifs: Remove some code that's no longer used, part 1 2024-05-01 18:08:21 +01:00
fscache.h cifs: Remove some code that's no longer used, part 1 2024-05-01 18:08:21 +01:00
inode.c cifs: fix creating sockets when using sfu mount options 2024-05-31 10:55:15 -05:00
ioctl.c smb: client: fix potential UAF in cifs_dump_full_key() 2024-04-03 14:43:45 -05:00
Kconfig cifs: Implement netfslib hooks 2024-05-01 18:08:21 +01:00
link.c smb: client: allow creating symlinks via reparse points 2024-01-07 15:46:06 -06:00
Makefile smb: client: move most of reparse point handling code to common file 2024-03-10 19:33:57 -05:00
misc.c cifs: Add tracing for the cifs_tcon struct refcounting 2024-04-19 16:02:09 -05:00
namespace.c smb: client: set correct id, uid and cruid for multiuser automounts 2024-02-12 12:46:49 -06:00
netlink.c
netlink.h
netmisc.c
nterr.c
nterr.h
ntlmssp.h cifs: Add client version details to NTLM authenticate message 2023-10-22 19:03:42 -05:00
readdir.c smb: client: parse uid, gid, mode and dev from WSL reparse points 2024-03-10 19:33:58 -05:00
reparse.c smb: client: set correct d_type for reparse DFS/DFSR and mount point 2024-03-10 19:33:58 -05:00
reparse.h smb: client: parse uid, gid, mode and dev from WSL reparse points 2024-03-10 19:33:58 -05:00
rfc1002pdu.h
sess.c cifs: reduce warning log level for server not advertising interfaces 2024-03-14 13:54:27 -05:00
smb1ops.c smb3: retrying on failed server close 2024-04-03 14:43:24 -05:00
smb2file.c smb/client: adapt to breakup of struct file_lock 2024-02-05 13:11:44 +01:00
smb2glob.h smb: client: introduce SMB2_OP_QUERY_WSL_EA 2024-03-10 19:33:58 -05:00
smb2inode.c smb: client: introduce SMB2_OP_QUERY_WSL_EA 2024-03-10 19:33:58 -05:00
smb2maperror.c cifs: new nt status codes from MS-SMB2 2024-01-18 21:01:04 -06:00
smb2misc.c cifs: Add tracing for the cifs_tcon struct refcounting 2024-04-19 16:02:09 -05:00
smb2ops.c cifs: fix creating sockets when using sfu mount options 2024-05-31 10:55:15 -05:00
smb2pdu.c cifs: Move the 'pid' from the subreq to the req 2024-06-20 15:25:08 -05:00
smb2pdu.h smb: smb2pdu.h: Avoid -Wflex-array-member-not-at-end warnings 2024-05-13 16:46:56 -05:00
smb2proto.h cifs: Cut over to using netfslib 2024-05-01 18:08:21 +01:00
smb2status.h cifs: new nt status codes from MS-SMB2 2024-01-18 21:01:04 -06:00
smb2transport.c smb: client: fix deadlock in smb2_find_smb_tcon() 2024-06-07 01:05:07 -05:00
smbdirect.c smb3: Improve exception handling in allocate_mr_list() 2024-01-07 15:46:06 -06:00
smbdirect.h
smbencrypt.c smb: client: delete "true", "false" defines 2024-01-23 12:41:02 -06:00
smberr.h
trace.c
trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00
transport.c cifs: Cut over to using netfslib 2024-05-01 18:08:21 +01:00
unc.c
winucase.c
xattr.c smb3: fix caching of ctime on setxattr 2023-11-09 10:25:58 -06:00