netfs: Pass a flag to ->prepare_write() to say if there's no alloc'd space
authorDavid Howells <dhowells@redhat.com>
Wed, 20 Oct 2021 13:30:37 +0000 (14:30 +0100)
committerDavid Howells <dhowells@redhat.com>
Fri, 7 Jan 2022 09:22:19 +0000 (09:22 +0000)
Pass a flag to ->prepare_write() to indicate if there's definitely no
space allocated in the cache yet (for instance if we've already checked as
we were asked to do a read).

Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
cc: linux-cachefs@redhat.com
Link: https://lore.kernel.org/r/163819583123.215744.12783808230464471417.stgit@warthog.procyon.org.uk/
Link: https://lore.kernel.org/r/163906886835.143852.6689886781122679769.stgit@warthog.procyon.org.uk/
Link: https://lore.kernel.org/r/163967079100.1823006.12889542712309574359.stgit@warthog.procyon.org.uk/
Link: https://lore.kernel.org/r/164021489334.640689.3131206613015409076.stgit@warthog.procyon.org.uk/
fs/netfs/read_helper.c
include/linux/netfs.h

index 75c76cbb27ccfd130943f8a9810f5854e4cb09f6..9dd76b8914f269fa7083357017220e97c3ec9ab0 100644 (file)
@@ -323,7 +323,7 @@ static void netfs_rreq_do_write_to_cache(struct netfs_read_request *rreq)
                }
 
                ret = cres->ops->prepare_write(cres, &subreq->start, &subreq->len,
-                                              rreq->i_size);
+                                              rreq->i_size, true);
                if (ret < 0) {
                        trace_netfs_failure(rreq, subreq, ret, netfs_fail_prepare_write);
                        trace_netfs_sreq(subreq, netfs_sreq_trace_write_skip);
index ca0683b9e3d11cf4a93c7d8ea73e23ebbecf016d..1ea22fc488180c1ee88e9c31d1c612dc8213c177 100644 (file)
@@ -232,7 +232,8 @@ struct netfs_cache_ops {
         * actually do.
         */
        int (*prepare_write)(struct netfs_cache_resources *cres,
-                            loff_t *_start, size_t *_len, loff_t i_size);
+                            loff_t *_start, size_t *_len, loff_t i_size,
+                            bool no_space_allocated_yet);
 };
 
 struct readahead_control;