[Concept,09/10] ext4l: Add readpage.c to build

Message ID 20251221113820.812060-10-sjg@u-boot.org
State New
Headers
Series ext4l: Add more ext4 files to the build (part E) |

Commit Message

Simon Glass Dec. 21, 2025, 11:38 a.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

Add the readpage module (readpage.c) to the build. This implements
ext4's page reading infrastructure for reading file data.

Stubs added for:
- mempool operations (mempool_t, mempool_alloc, etc.)
- folio read operations (folio_end_read, folio_set_mappedtodisk)
- fscrypt read operations (fscrypt_decrypt_bio, etc.)
- fsverity operations (fsverity_verify_bio, etc.)
- readahead operations (readahead_count, readahead_folio)
- prefetchw and block_read_full_folio

Remove ext4_mpage_readpages stub now implemented in readpage.c.

Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 fs/ext4l/Makefile     |  3 ++-
 fs/ext4l/ext4_uboot.h | 40 ++++++++++++++++++++++++++++++++++++++++
 fs/ext4l/readpage.c   | 16 +---------------
 fs/ext4l/stub.c       |  6 +-----
 4 files changed, 44 insertions(+), 21 deletions(-)
  

Patch

diff --git a/fs/ext4l/Makefile b/fs/ext4l/Makefile
index 506e76b959e..3116ac3be39 100644
--- a/fs/ext4l/Makefile
+++ b/fs/ext4l/Makefile
@@ -8,6 +8,7 @@  obj-y := interface.o stub.o
 obj-y	+= balloc.o bitmap.o block_validity.o dir.o ext4_jbd2.o extents.o \
 		extents_status.o file.o fsync.o hash.o ialloc.o \
 		indirect.o inline.o inode.o mballoc.o \
-		namei.o page_io.o super.o symlink.o xattr.o \
+		namei.o page-io.o readpage.o \
+		super.o symlink.o xattr.o \
 		xattr_hurd.o xattr_trusted.o \
 		xattr_user.o orphan.o
diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h
index c5895dc902a..a6ffc91b7de 100644
--- a/fs/ext4l/ext4_uboot.h
+++ b/fs/ext4l/ext4_uboot.h
@@ -2664,4 +2664,44 @@  bool __folio_start_writeback(struct folio *folio, bool keep_write);
 #define bio_add_folio(bio, folio, len, off) \
 	({ (void)(bio); (void)(folio); (void)(len); (void)(off); 1; })
 
+/*
+ * Stubs for readpage.c
+ */
+
+/* mempool - memory pool stubs */
+typedef void *mempool_t;
+#define mempool_alloc(pool, gfp)	({ (void)(pool); (void)(gfp); (void *)NULL; })
+#define mempool_free(elem, pool)	do { (void)(elem); (void)(pool); } while (0)
+#define mempool_create_slab_pool(n, c)	({ (void)(n); (void)(c); (mempool_t *)NULL; })
+#define mempool_destroy(pool)		do { (void)(pool); } while (0)
+
+/* folio read operations */
+#define folio_end_read(f, success)	do { (void)(f); (void)(success); } while (0)
+#define folio_set_mappedtodisk(f)	do { (void)(f); } while (0)
+
+/* fscrypt stubs for readpage.c */
+#define fscrypt_decrypt_bio(bio)	({ (void)(bio); 0; })
+#define fscrypt_enqueue_decrypt_work(work) do { (void)(work); } while (0)
+#define fscrypt_mergeable_bio(bio, inode, blk) \
+	({ (void)(bio); (void)(inode); (void)(blk); 1; })
+#define fscrypt_set_bio_crypt_ctx(bio, inode, blk, gfp) \
+	do { (void)(bio); (void)(inode); (void)(blk); (void)(gfp); } while (0)
+
+/* fsverity stubs */
+#define fsverity_verify_bio(bio)	do { (void)(bio); } while (0)
+#define fsverity_enqueue_verify_work(work) do { (void)(work); } while (0)
+#define fsverity_verify_folio(f)	({ (void)(f); 1; })
+#define IS_VERITY(inode)		(0)
+
+/* readahead operations */
+#define readahead_count(rac)		({ (void)(rac); 0UL; })
+#define readahead_folio(rac)		({ (void)(rac); (struct folio *)NULL; })
+
+/* prefetch operations */
+#define prefetchw(addr)			do { (void)(addr); } while (0)
+
+/* block read operations */
+#define block_read_full_folio(folio, get_block) \
+	({ (void)(folio); (void)(get_block); 0; })
+
 #endif /* __EXT4_UBOOT_H__ */
diff --git a/fs/ext4l/readpage.c b/fs/ext4l/readpage.c
index f329daf6e5c..94361c01f08 100644
--- a/fs/ext4l/readpage.c
+++ b/fs/ext4l/readpage.c
@@ -28,21 +28,7 @@ 
  *
  */
 
-#include <linux/kernel.h>
-#include <linux/export.h>
-#include <linux/mm.h>
-#include <linux/kdev_t.h>
-#include <linux/gfp.h>
-#include <linux/bio.h>
-#include <linux/fs.h>
-#include <linux/buffer_head.h>
-#include <linux/blkdev.h>
-#include <linux/highmem.h>
-#include <linux/prefetch.h>
-#include <linux/mpage.h>
-#include <linux/writeback.h>
-#include <linux/backing-dev.h>
-#include <linux/pagevec.h>
+#include "ext4_uboot.h"
 
 #include "ext4.h"
 
diff --git a/fs/ext4l/stub.c b/fs/ext4l/stub.c
index 935e93f49f1..87637ecbd8c 100644
--- a/fs/ext4l/stub.c
+++ b/fs/ext4l/stub.c
@@ -240,11 +240,7 @@  int jbd2_transaction_committed(void *journal, unsigned int tid)
 
 /* __ext4_warning_inode is now in super.c */
 
-/* Readahead */
-int ext4_mpage_readpages(void *mapping, void *rac, void *folio)
-{
-	return 0;
-}
+/* ext4_mpage_readpages is now in readpage.c */
 
 /* ext4_readpage_inline is now in inline.c */