cifs: Fix the readahead conversion to manage the batch when reading from cache
authorDavid Howells <dhowells@redhat.com>
Mon, 31 Jan 2022 17:54:43 +0000 (17:54 +0000)
committerSteve French <stfrench@microsoft.com>
Tue, 1 Feb 2022 16:36:22 +0000 (10:36 -0600)
Fix the readahead conversion to correctly manage the last batch skipping
when reading from cache.  This involves a readahead batch of one page or
one folio, so set the batch size according to the number of constituent
pages (should be 1 for a filesystem that doesn't do multipage folios yet).

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Steve French <smfrench@gmail.com>
Reviewed-by: Rohith Surabattula <rohiths.msft@gmail.com>
Reviewed-by: Shyam Prasad N <nspmangalore@gmail.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/file.c

index a50912674915389e3e82b786a5f8e23e942354c7..e7af802dcfa600293aa6bf58539dd769892ac6ff 100644 (file)
@@ -4446,7 +4446,7 @@ static void cifs_readahead(struct readahead_control *ractl)
                                 * by the cache.
                                 */
                                page = readahead_page(ractl);
-
+                               last_batch_size = 1 << thp_order(page);
                                if (cifs_readpage_from_fscache(ractl->mapping->host,
                                                               page) < 0) {
                                        /*