linux/fs/netfs
David Howells 016dc8516a netfs: Implement unbuffered/DIO read support
Implement support for unbuffered and DIO reads in the netfs library,
utilising the existing read helper code to do block splitting and
individual queuing.  The code also handles extraction of the destination
buffer from the supplied iterator, allowing async unbuffered reads to take
place.

The read will be split up according to the rsize setting and, if supplied,
the ->clamp_length() method.  Note that the next subrequest will be issued
as soon as issue_op returns, without waiting for previous ones to finish.
The network filesystem needs to pause or handle queuing them if it doesn't
want to fire them all at the server simultaneously.

Once all the subrequests have finished, the state will be assessed and the
amount of data to be indicated as having being obtained will be
determined.  As the subrequests may finish in any order, if an intermediate
subrequest is short, any further subrequests may be copied into the buffer
and then abandoned.

In the future, this will also take care of doing an unbuffered read from
encrypted content, with the decryption being done by the library.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cachefs@redhat.com
cc: linux-fsdevel@vger.kernel.org
cc: linux-mm@kvack.org
2023-12-28 09:45:23 +00:00
..
buffered_read.c netfs: Make netfs_read_folio() handle streaming-write pages 2023-12-28 09:45:22 +00:00
buffered_write.c netfs: Allocate multipage folios in the writepath 2023-12-28 09:45:23 +00:00
direct_read.c netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00
fscache_cache.c netfs, fscache: Move fs/fscache/* into fs/netfs/ 2023-12-24 11:36:00 +00:00
fscache_cookie.c netfs, fscache: Move fs/fscache/* into fs/netfs/ 2023-12-24 11:36:00 +00:00
fscache_internal.h netfs, fscache: Combine fscache with netfs 2023-12-24 15:08:46 +00:00
fscache_io.c netfs: Move pinning-for-writeback from fscache to netfs 2023-12-24 15:08:49 +00:00
fscache_main.c netfs, fscache: Move /proc/fs/fscache to /proc/fs/netfs and put in a symlink 2023-12-24 15:08:48 +00:00
fscache_proc.c netfs, fscache: Move /proc/fs/fscache to /proc/fs/netfs and put in a symlink 2023-12-24 15:08:48 +00:00
fscache_stats.c netfs, fscache: Move /proc/fs/fscache to /proc/fs/netfs and put in a symlink 2023-12-24 15:08:48 +00:00
fscache_volume.c netfs, fscache: Move fs/fscache/* into fs/netfs/ 2023-12-24 11:36:00 +00:00
internal.h netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00
io.c netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00
iterator.c netfs: Add func to calculate pagecount/size-limited span of an iterator 2023-12-28 09:45:18 +00:00
Kconfig netfs, fscache: Combine fscache with netfs 2023-12-24 15:08:46 +00:00
locking.c netfs: Implement unbuffered/DIO vs buffered I/O locking 2023-12-24 15:08:52 +00:00
main.c netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00
Makefile netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00
misc.c netfs: Prep to use folio->private for write grouping and streaming write 2023-12-28 09:45:21 +00:00
objects.c netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00
output.c netfs: Dispatch write requests to process a writeback slice 2023-12-28 09:45:22 +00:00
stats.c netfs: Implement unbuffered/DIO read support 2023-12-28 09:45:23 +00:00