fs: read_mapping_page() should take a struct file argument
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 9 Feb 2022 20:21:23 +0000 (20:21 +0000)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 14 Mar 2022 19:43:16 +0000 (15:43 -0400)
While read_cache_page() takes a void *, because you can pass a
pointer to anything as the first argument of filler_t, if we
are calling read_mapping_page(), it will be passed as the first
argument of ->readpage, so we know this must be a struct file
pointer, and we should let the compiler enforce that for us.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Tested-by: Mike Marshall <hubcap@omnibond.com> # orangefs
Tested-by: David Howells <dhowells@redhat.com> # afs
include/linux/pagemap.h

index 270bf51..55a80d8 100644 (file)
@@ -636,15 +636,15 @@ extern int read_cache_pages(struct address_space *mapping,
                struct list_head *pages, filler_t *filler, void *data);
 
 static inline struct page *read_mapping_page(struct address_space *mapping,
-                               pgoff_t index, void *data)
+                               pgoff_t index, struct file *file)
 {
-       return read_cache_page(mapping, index, NULL, data);
+       return read_cache_page(mapping, index, NULL, file);
 }
 
 static inline struct folio *read_mapping_folio(struct address_space *mapping,
-                               pgoff_t index, void *data)
+                               pgoff_t index, struct file *file)
 {
-       return read_cache_folio(mapping, index, NULL, data);
+       return read_cache_folio(mapping, index, NULL, file);
 }
 
 /*