From: Simon Glass <simon.glass@canonical.com> Move the generic VFS operation stubs from ext4_uboot.h to include/linux/fs.h where they belong. This includes: - generic_file_read_iter(), generic_write_checks() - generic_perform_write(), generic_write_sync() - generic_atomic_write_valid() - generic_buffers_fsync_noflush() - generic_fillattr(), generic_fill_statx_atomic_writes() - generic_file_llseek_size() - generic_ci_validate_strict_name() - generic_read_dir(), generic_check_addressable() Co-developed-by: Claude (Anthropic) Signed-off-by: Simon Glass <simon.glass@canonical.com> --- fs/ext4l/ext4_uboot.h | 21 +-------------------- include/linux/fs.h | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h index d3ad76f2618..35626a95cf8 100644 --- a/fs/ext4l/ext4_uboot.h +++ b/fs/ext4l/ext4_uboot.h @@ -224,18 +224,10 @@ struct dx_hash_info { #define file_modified(file) ({ (void)(file); 0; }) #define file_accessed(file) do { (void)(file); } while (0) -/* Generic file operations - stubs for file.c */ -#define generic_file_read_iter(iocb, to) ({ (void)(iocb); (void)(to); 0L; }) -#define generic_write_checks(iocb, from) ({ (void)(iocb); (void)(from); 0L; }) -#define generic_perform_write(iocb, from) ({ (void)(iocb); (void)(from); 0L; }) -#define generic_write_sync(iocb, count) ({ (void)(iocb); (count); }) -#define generic_atomic_write_valid(iocb, from) ({ (void)(iocb); (void)(from); 0; }) #define vfs_setpos(file, offset, maxsize) ({ (void)(file); (void)(maxsize); (offset); }) #define daxdev_mapping_supported(f, i, d) ({ (void)(f); (void)(i); (void)(d); 1; }) -#define generic_ci_validate_strict_name(d, n) ({ (void)(d); (void)(n); 1; }) - #include <linux/minmax.h> /* Memory retry wait */ @@ -284,7 +276,6 @@ struct dx_hash_info { /* Sync operations - stubs */ #define sync_mapping_buffers(m) ({ (void)(m); 0; }) #define sync_inode_metadata(i, w) ({ (void)(i); (void)(w); 0; }) -#define generic_buffers_fsync_noflush(f, s, e, d) ({ (void)(f); (void)(s); (void)(e); (void)(d); 0; }) #define file_write_and_wait_range(f, s, e) ({ (void)(f); (void)(s); (void)(e); 0; }) #define file_check_and_advance_wb_err(f) ({ (void)(f); 0; }) @@ -311,8 +302,6 @@ extern struct inode *iget_locked(struct super_block *sb, unsigned long ino); #define setattr_prepare(m, d, a) ({ (void)(m); (void)(d); (void)(a); 0; }) #define setattr_copy(m, i, a) do { } while (0) #define posix_acl_chmod(m, i, mo) ({ (void)(m); (void)(i); (void)(mo); 0; }) -#define generic_fillattr(m, req, i, s) do { } while (0) -#define generic_fill_statx_atomic_writes(s, u_m, u_M, g) do { } while (0) /* File operations */ #define file_update_time(f) do { } while (0) @@ -332,13 +321,6 @@ extern struct inode *iget_locked(struct super_block *sb, unsigned long ino); /* FSTR_INIT - fscrypt_str initializer (fscrypt_str defined in ext4_fscrypt.h) */ #define FSTR_INIT(n, l) { .name = (n), .len = (l) } -/* File llseek */ -#define generic_file_llseek_size(f, o, w, m, e) ({ (void)(f); (void)(o); (void)(w); (void)(m); (void)(e); 0LL; }) - -/* generic_read_dir - stub function (needs to be a real function for struct init) */ -ssize_t generic_read_dir(struct file *f, char __user *buf, size_t count, - loff_t *ppos); - /* struct_size - use linux/overflow.h */ #include <linux/overflow.h> @@ -472,8 +454,7 @@ void free_page(unsigned long addr); void *fs_dax_get_by_bdev(struct block_device *bdev, u64 *start, u64 *len, void *holder); -/* Block device size - declarations for stub.c */ -int generic_check_addressable(unsigned int blocksize_bits, u64 num_blocks); +/* Block device size - declaration for stub.c */ unsigned int bdev_max_discard_sectors(struct block_device *bdev); #include <linux/mbcache.h> diff --git a/include/linux/fs.h b/include/linux/fs.h index f50a081b32b..3fa54146f44 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -638,4 +638,37 @@ struct inode_operations { umode_t); }; +/* + * Generic VFS operations - stubs for U-Boot + */ + +/* Generic file I/O operations */ +#define generic_file_read_iter(iocb, to) ({ (void)(iocb); (void)(to); 0L; }) +#define generic_write_checks(iocb, from) ({ (void)(iocb); (void)(from); 0L; }) +#define generic_perform_write(iocb, from) ({ (void)(iocb); (void)(from); 0L; }) +#define generic_write_sync(iocb, count) ({ (void)(iocb); (count); }) +#define generic_atomic_write_valid(iocb, from) ({ (void)(iocb); (void)(from); 0; }) + +/* Generic fsync operation */ +#define generic_buffers_fsync_noflush(f, s, e, d) \ + ({ (void)(f); (void)(s); (void)(e); (void)(d); 0; }) + +/* Generic attribute operations */ +#define generic_fillattr(m, req, i, s) do { } while (0) +#define generic_fill_statx_atomic_writes(s, u_m, u_M, g) do { } while (0) + +/* Generic seek operation */ +#define generic_file_llseek_size(f, o, w, m, e) \ + ({ (void)(f); (void)(o); (void)(w); (void)(m); (void)(e); 0LL; }) + +/* Case-insensitive name validation - not supported */ +#define generic_ci_validate_strict_name(d, n) ({ (void)(d); (void)(n); 1; }) + +/* Generic directory read - implemented in ext4l/stub.c */ +ssize_t generic_read_dir(struct file *f, char __user *buf, size_t count, + loff_t *ppos); + +/* Block addressability check - implemented in ext4l/stub.c */ +int generic_check_addressable(unsigned int blocksize_bits, u64 num_blocks); + #endif /* _LINUX_FS_H */ -- 2.43.0