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(-) 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 */ -- 2.43.0