Unverified Commit 3dc00bca authored by Max Kellermann's avatar Max Kellermann Committed by Christian Brauner
Browse files

fs/netfs: remove `netfs_io_request.ractl`



Since this field is only used by netfs_prepare_read_iterator() when
called by netfs_readahead(), we can simply pass it as parameter.  This
shrinks the struct from 576 to 568 bytes.

Signed-off-by: default avatarMax Kellermann <max.kellermann@ionos.com>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/20250519134813.2975312-8-dhowells@redhat.com


cc: Paulo Alcantara <pc@manguebit.com>
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 314ee703
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -78,7 +78,8 @@ static int netfs_begin_cache_read(struct netfs_io_request *rreq, struct netfs_in
 * [!] NOTE: This must be run in the same thread as ->issue_read() was called
 * in as we access the readahead_control struct.
 */
static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq)
static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq,
					   struct readahead_control *ractl)
{
	struct netfs_io_request *rreq = subreq->rreq;
	size_t rsize = subreq->len;
@@ -86,7 +87,7 @@ static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq)
	if (subreq->source == NETFS_DOWNLOAD_FROM_SERVER)
		rsize = umin(rsize, rreq->io_streams[0].sreq_max_len);

	if (rreq->ractl) {
	if (ractl) {
		/* If we don't have sufficient folios in the rolling buffer,
		 * extract a folioq's worth from the readahead region at a time
		 * into the buffer.  Note that this acquires a ref on each page
@@ -99,7 +100,7 @@ static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq)
		while (rreq->submitted < subreq->start + rsize) {
			ssize_t added;

			added = rolling_buffer_load_from_ra(&rreq->buffer, rreq->ractl,
			added = rolling_buffer_load_from_ra(&rreq->buffer, ractl,
							    &put_batch);
			if (added < 0)
				return added;
@@ -211,7 +212,8 @@ static void netfs_issue_read(struct netfs_io_request *rreq,
 * slicing up the region to be read according to available cache blocks and
 * network rsize.
 */
static void netfs_read_to_pagecache(struct netfs_io_request *rreq)
static void netfs_read_to_pagecache(struct netfs_io_request *rreq,
				    struct readahead_control *ractl)
{
	struct netfs_inode *ictx = netfs_inode(rreq->inode);
	unsigned long long start = rreq->start;
@@ -291,7 +293,7 @@ static void netfs_read_to_pagecache(struct netfs_io_request *rreq)
		break;

	issue:
		slice = netfs_prepare_read_iterator(subreq);
		slice = netfs_prepare_read_iterator(subreq, ractl);
		if (slice < 0) {
			ret = slice;
			subreq->error = ret;
@@ -359,11 +361,10 @@ void netfs_readahead(struct readahead_control *ractl)

	netfs_rreq_expand(rreq, ractl);

	rreq->ractl = ractl;
	rreq->submitted = rreq->start;
	if (rolling_buffer_init(&rreq->buffer, rreq->debug_id, ITER_DEST) < 0)
		goto cleanup_free;
	netfs_read_to_pagecache(rreq);
	netfs_read_to_pagecache(rreq, ractl);

	netfs_put_request(rreq, true, netfs_rreq_trace_put_return);
	return;
@@ -389,7 +390,6 @@ static int netfs_create_singular_buffer(struct netfs_io_request *rreq, struct fo
	if (added < 0)
		return added;
	rreq->submitted = rreq->start + added;
	rreq->ractl = (struct readahead_control *)1UL;
	return 0;
}

@@ -459,7 +459,7 @@ static int netfs_read_gaps(struct file *file, struct folio *folio)
	iov_iter_bvec(&rreq->buffer.iter, ITER_DEST, bvec, i, rreq->len);
	rreq->submitted = rreq->start + flen;

	netfs_read_to_pagecache(rreq);
	netfs_read_to_pagecache(rreq, NULL);

	if (sink)
		folio_put(sink);
@@ -528,7 +528,7 @@ int netfs_read_folio(struct file *file, struct folio *folio)
	if (ret < 0)
		goto discard;

	netfs_read_to_pagecache(rreq);
	netfs_read_to_pagecache(rreq, NULL);
	ret = netfs_wait_for_read(rreq);
	netfs_put_request(rreq, false, netfs_rreq_trace_put_return);
	return ret < 0 ? ret : 0;
@@ -685,7 +685,7 @@ int netfs_write_begin(struct netfs_inode *ctx,
	if (ret < 0)
		goto error_put;

	netfs_read_to_pagecache(rreq);
	netfs_read_to_pagecache(rreq, NULL);
	ret = netfs_wait_for_read(rreq);
	if (ret < 0)
		goto error;
@@ -750,7 +750,7 @@ int netfs_prefetch_for_write(struct file *file, struct folio *folio,
	if (ret < 0)
		goto error_put;

	netfs_read_to_pagecache(rreq);
	netfs_read_to_pagecache(rreq, NULL);
	ret = netfs_wait_for_read(rreq);
	netfs_put_request(rreq, false, netfs_rreq_trace_put_return);
	return ret < 0 ? ret : 0;
+0 −1
Original line number Diff line number Diff line
@@ -228,7 +228,6 @@ struct netfs_io_request {
	struct kiocb		*iocb;		/* AIO completion vector */
	struct netfs_cache_resources cache_resources;
	struct netfs_io_request	*copy_to_cache;	/* Request to write just-read data to the cache */
	struct readahead_control *ractl;	/* Readahead descriptor */
	struct list_head	proc_link;	/* Link in netfs_iorequests */
	struct netfs_io_stream	io_streams[2];	/* Streams of parallel I/O operations */
#define NR_IO_STREAMS 2 //wreq->nr_io_streams