| From 14827a5c1fab0ce07807324f737144e9ff115f5f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 16 Dec 2024 20:34:45 +0000 |
| Subject: netfs: Fix is-caching check in read-retry |
| |
| From: David Howells <dhowells@redhat.com> |
| |
| [ Upstream commit d4e338de17cb6532bf805fae00db8b41e914009b ] |
| |
| netfs: Fix is-caching check in read-retry |
| |
| The read-retry code checks the NETFS_RREQ_COPY_TO_CACHE flag to determine |
| if there might be failed reads from the cache that need turning into reads |
| from the server, with the intention of skipping the complicated part if it |
| can. The code that set the flag, however, got lost during the read-side |
| rewrite. |
| |
| Fix the check to see if the cache_resources are valid instead. The flag |
| can then be removed. |
| |
| Fixes: ee4cdf7ba857 ("netfs: Speed up buffered reading") |
| Signed-off-by: David Howells <dhowells@redhat.com> |
| Link: https://lore.kernel.org/r/3752048.1734381285@warthog.procyon.org.uk |
| cc: Jeff Layton <jlayton@kernel.org> |
| cc: netfs@lists.linux.dev |
| cc: linux-fsdevel@vger.kernel.org |
| Signed-off-by: Christian Brauner <brauner@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/netfs/read_retry.c | 2 +- |
| include/linux/netfs.h | 1 - |
| 2 files changed, 1 insertion(+), 2 deletions(-) |
| |
| diff --git a/fs/netfs/read_retry.c b/fs/netfs/read_retry.c |
| index 0350592ea804..2701f7d45999 100644 |
| --- a/fs/netfs/read_retry.c |
| +++ b/fs/netfs/read_retry.c |
| @@ -49,7 +49,7 @@ static void netfs_retry_read_subrequests(struct netfs_io_request *rreq) |
| * up to the first permanently failed one. |
| */ |
| if (!rreq->netfs_ops->prepare_read && |
| - !test_bit(NETFS_RREQ_COPY_TO_CACHE, &rreq->flags)) { |
| + !rreq->cache_resources.ops) { |
| struct netfs_io_subrequest *subreq; |
| |
| list_for_each_entry(subreq, &rreq->subrequests, rreq_link) { |
| diff --git a/include/linux/netfs.h b/include/linux/netfs.h |
| index 5eaceef41e6c..474481ee8b7c 100644 |
| --- a/include/linux/netfs.h |
| +++ b/include/linux/netfs.h |
| @@ -269,7 +269,6 @@ struct netfs_io_request { |
| size_t prev_donated; /* Fallback for subreq->prev_donated */ |
| refcount_t ref; |
| unsigned long flags; |
| -#define NETFS_RREQ_COPY_TO_CACHE 1 /* Need to write to the cache */ |
| #define NETFS_RREQ_NO_UNLOCK_FOLIO 2 /* Don't unlock no_unlock_folio on completion */ |
| #define NETFS_RREQ_DONT_UNLOCK_FOLIOS 3 /* Don't unlock the folios on completion */ |
| #define NETFS_RREQ_FAILED 4 /* The request failed */ |
| -- |
| 2.39.5 |
| |