1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-18 12:31:11 +00:00
David Howells ee4cdf7ba8
netfs: Speed up buffered reading
Improve the efficiency of buffered reads in a number of ways:

 (1) Overhaul the algorithm in general so that it's a lot more compact and
     split the read submission code between buffered and unbuffered
     versions.  The unbuffered version can be vastly simplified.

 (2) Read-result collection is handed off to a work queue rather than being
     done in the I/O thread.  Multiple subrequests can be processes
     simultaneously.

 (3) When a subrequest is collected, any folios it fully spans are
     collected and "spare" data on either side is donated to either the
     previous or the next subrequest in the sequence.

Notes:

 (*) Readahead expansion is massively slows down fio, presumably because it
     causes a load of extra allocations, both folio and xarray, up front
     before RPC requests can be transmitted.

 (*) RDMA with cifs does appear to work, both with SIW and RXE.

 (*) PG_private_2-based reading and copy-to-cache is split out into its own
     file and altered to use folio_queue.  Note that the copy to the cache
     now creates a new write transaction against the cache and adds the
     folios to be copied into it.  This allows it to use part of the
     writeback I/O code.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Link: https://lore.kernel.org/r/20240814203850.2240469-20-dhowells@redhat.com/ # v2
Signed-off-by: Christian Brauner <brauner@kernel.org>
2024-09-12 12:20:41 +02:00
..
2024-07-27 10:53:06 -07:00
2024-07-18 09:34:02 -07:00
2024-07-19 11:57:55 -07:00
2024-05-16 08:56:49 -07:00
2024-05-27 13:39:51 +02:00
2024-05-23 12:04:36 -07:00
2024-07-18 17:17:30 -07:00
2024-07-25 10:42:22 -07:00
2024-07-09 17:01:46 +02:00
2024-07-03 19:29:59 -07:00
2024-07-08 01:51:05 -06:00
2024-07-22 11:32:05 -07:00
2024-07-16 16:42:37 -07:00
2024-06-24 18:29:20 +02:00
2024-07-09 17:58:20 +02:00
2024-08-02 09:33:35 -07:00
2024-07-15 11:39:44 -07:00
2024-06-11 12:57:49 -05:00
2024-06-21 15:40:55 +05:30
2024-05-27 11:08:31 +02:00
2024-08-12 22:03:27 +02:00
2024-07-09 17:01:46 +02:00
2024-05-21 15:29:01 -07:00
2024-09-12 12:20:41 +02:00
2024-05-19 14:36:17 -07:00
2024-08-29 06:20:44 +12:00
2024-07-03 19:29:52 -07:00
2024-05-27 16:50:03 +02:00
2024-06-24 22:24:56 -07:00
2024-06-17 12:30:07 -07:00
2024-05-22 11:53:02 -07:00
2024-07-03 19:30:23 -07:00
2024-06-05 19:19:26 -07:00
2024-07-10 12:14:54 -07:00
2024-07-16 14:50:44 -07:00
2024-07-25 10:42:22 -07:00
2024-07-31 09:57:18 -07:00
2024-09-01 14:43:08 -07:00
2024-08-15 22:16:14 -07:00
2024-07-23 11:43:40 -07:00
2024-09-12 12:20:41 +02:00
2024-07-08 13:47:27 -04:00
2024-06-24 22:25:02 -07:00
2024-07-26 08:06:15 -06:00
2024-06-28 09:52:05 +02:00
2024-07-19 12:39:34 -07:00
2024-07-25 10:42:22 -07:00
2024-07-25 10:42:22 -07:00
2024-07-25 10:42:22 -07:00
2024-07-25 13:18:41 -07:00
2024-07-10 17:52:47 +02:00
2024-07-02 18:59:33 -07:00
2024-07-20 12:41:03 -07:00
2024-07-10 07:59:03 +02:00
2024-07-18 12:19:20 -07:00
2024-08-09 09:43:46 -07:00
2024-09-12 12:20:39 +02:00
2024-07-29 12:53:37 -07:00
2024-08-15 22:16:14 -07:00
2024-06-24 18:16:44 +01:00