]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fs/netfs: remove `netfs_io_request.ractl`
authorMax Kellermann <max.kellermann@ionos.com>
Mon, 19 May 2025 13:48:03 +0000 (14:48 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 21 May 2025 12:34:38 +0000 (14:34 +0200)
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: Max Kellermann <max.kellermann@ionos.com>
Signed-off-by: David 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: Christian Brauner <brauner@kernel.org>
fs/netfs/buffered_read.c
include/linux/netfs.h

index 0d1b6d35ff3b80d967bc888cdb27eefe006cd298..5f53634a386254829454c347f1f83c234325a738 100644 (file)
@@ -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 @@ retry:
        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;
index 33f145f7f2c2ca7ff368ab935c3675b63b7735d6..2b127527544ea3e12a6c1c28def17f1f51bff71f 100644 (file)
@@ -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