Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: 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>

authored by

Max Kellermann and committed by
Christian Brauner
3dc00bca 314ee703

+12 -13
+12 -12
fs/netfs/buffered_read.c
··· 78 78 * [!] NOTE: This must be run in the same thread as ->issue_read() was called 79 79 * in as we access the readahead_control struct. 80 80 */ 81 - static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq) 81 + static ssize_t netfs_prepare_read_iterator(struct netfs_io_subrequest *subreq, 82 + struct readahead_control *ractl) 82 83 { 83 84 struct netfs_io_request *rreq = subreq->rreq; 84 85 size_t rsize = subreq->len; ··· 87 86 if (subreq->source == NETFS_DOWNLOAD_FROM_SERVER) 88 87 rsize = umin(rsize, rreq->io_streams[0].sreq_max_len); 89 88 90 - if (rreq->ractl) { 89 + if (ractl) { 91 90 /* If we don't have sufficient folios in the rolling buffer, 92 91 * extract a folioq's worth from the readahead region at a time 93 92 * into the buffer. Note that this acquires a ref on each page ··· 100 99 while (rreq->submitted < subreq->start + rsize) { 101 100 ssize_t added; 102 101 103 - added = rolling_buffer_load_from_ra(&rreq->buffer, rreq->ractl, 102 + added = rolling_buffer_load_from_ra(&rreq->buffer, ractl, 104 103 &put_batch); 105 104 if (added < 0) 106 105 return added; ··· 212 211 * slicing up the region to be read according to available cache blocks and 213 212 * network rsize. 214 213 */ 215 - static void netfs_read_to_pagecache(struct netfs_io_request *rreq) 214 + static void netfs_read_to_pagecache(struct netfs_io_request *rreq, 215 + struct readahead_control *ractl) 216 216 { 217 217 struct netfs_inode *ictx = netfs_inode(rreq->inode); 218 218 unsigned long long start = rreq->start; ··· 293 291 break; 294 292 295 293 issue: 296 - slice = netfs_prepare_read_iterator(subreq); 294 + slice = netfs_prepare_read_iterator(subreq, ractl); 297 295 if (slice < 0) { 298 296 ret = slice; 299 297 subreq->error = ret; ··· 361 359 362 360 netfs_rreq_expand(rreq, ractl); 363 361 364 - rreq->ractl = ractl; 365 362 rreq->submitted = rreq->start; 366 363 if (rolling_buffer_init(&rreq->buffer, rreq->debug_id, ITER_DEST) < 0) 367 364 goto cleanup_free; 368 - netfs_read_to_pagecache(rreq); 365 + netfs_read_to_pagecache(rreq, ractl); 369 366 370 367 netfs_put_request(rreq, true, netfs_rreq_trace_put_return); 371 368 return; ··· 390 389 if (added < 0) 391 390 return added; 392 391 rreq->submitted = rreq->start + added; 393 - rreq->ractl = (struct readahead_control *)1UL; 394 392 return 0; 395 393 } 396 394 ··· 459 459 iov_iter_bvec(&rreq->buffer.iter, ITER_DEST, bvec, i, rreq->len); 460 460 rreq->submitted = rreq->start + flen; 461 461 462 - netfs_read_to_pagecache(rreq); 462 + netfs_read_to_pagecache(rreq, NULL); 463 463 464 464 if (sink) 465 465 folio_put(sink); ··· 528 528 if (ret < 0) 529 529 goto discard; 530 530 531 - netfs_read_to_pagecache(rreq); 531 + netfs_read_to_pagecache(rreq, NULL); 532 532 ret = netfs_wait_for_read(rreq); 533 533 netfs_put_request(rreq, false, netfs_rreq_trace_put_return); 534 534 return ret < 0 ? ret : 0; ··· 685 685 if (ret < 0) 686 686 goto error_put; 687 687 688 - netfs_read_to_pagecache(rreq); 688 + netfs_read_to_pagecache(rreq, NULL); 689 689 ret = netfs_wait_for_read(rreq); 690 690 if (ret < 0) 691 691 goto error; ··· 750 750 if (ret < 0) 751 751 goto error_put; 752 752 753 - netfs_read_to_pagecache(rreq); 753 + netfs_read_to_pagecache(rreq, NULL); 754 754 ret = netfs_wait_for_read(rreq); 755 755 netfs_put_request(rreq, false, netfs_rreq_trace_put_return); 756 756 return ret < 0 ? ret : 0;
-1
include/linux/netfs.h
··· 228 228 struct kiocb *iocb; /* AIO completion vector */ 229 229 struct netfs_cache_resources cache_resources; 230 230 struct netfs_io_request *copy_to_cache; /* Request to write just-read data to the cache */ 231 - struct readahead_control *ractl; /* Readahead descriptor */ 232 231 struct list_head proc_link; /* Link in netfs_iorequests */ 233 232 struct netfs_io_stream io_streams[2]; /* Streams of parallel I/O operations */ 234 233 #define NR_IO_STREAMS 2 //wreq->nr_io_streams