Since dcache support was added, we had two structs representing files: struct file and type struct filep FILE. The former was used only for listing files in ->iterate and the latter everywhere else for representing an open file (descriptor). Now, struct filep is nearly a subset of struct file with the difference that it adds two extra members: fsdev and path. Therefore, let's merge them to simplify porting kernel code. Note that struct file for dcache is still being manually created and so filesystems ported from the kernel may crash, because they expect a fully populated struct file. This doesn't affect any in-tree file systems and thus will be tackled separately. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- The follow up using the existing struct file in __opendir instead of a creating new one will follow later once I have debugged 9PFS to work correctly. --- include/driver.h | 6 +++--- include/fs.h | 14 -------------- include/linux/fs.h | 10 +++++++--- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/driver.h b/include/driver.h index 267e34294511..f61515c7b2a7 100644 --- a/include/driver.h +++ b/include/driver.h @@ -21,7 +21,7 @@ #include <param.h> -struct filep; +struct file; struct bus_type; struct generic_pm_domain; @@ -353,12 +353,12 @@ ssize_t mem_copy(struct device *dev, void *dst, const void *src, int generic_memmap_ro(struct cdev *dev, void **map, int flags); int generic_memmap_rw(struct cdev *dev, void **map, int flags); -static inline int dev_open_default(struct device *dev, struct filep *f) +static inline int dev_open_default(struct device *dev, struct file *f) { return 0; } -static inline int dev_close_default(struct device *dev, struct filep *f) +static inline int dev_close_default(struct device *dev, struct file *f) { return 0; } diff --git a/include/fs.h b/include/fs.h index 404d0e58da97..36d1be018388 100644 --- a/include/fs.h +++ b/include/fs.h @@ -19,20 +19,6 @@ struct partition; struct node_d; struct stat; -typedef struct filep { - struct fs_device *fsdev; /* The device this FILE belongs to */ - char *path; - loff_t f_pos; /* current position in stream */ -#define FILE_SIZE_STREAM ((loff_t) -1) - ulong f_flags; /* the O_* flags from open */ - - void *private_data; /* private to the filesystem driver */ - -#define f_size f_inode->i_size - struct inode *f_inode; - struct path f_path; -} FILE; - #define FS_DRIVER_NO_DEV 1 /** diff --git a/include/linux/fs.h b/include/linux/fs.h index 353e2a359d24..c58dab554041 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -220,8 +220,12 @@ struct file_system_type { struct hlist_head fs_supers; }; -struct file { +typedef struct file { + struct fs_device *fsdev; /* The device this FILE belongs to */ + char *path; struct path f_path; +#define FILE_SIZE_STREAM ((loff_t) -1) +#define f_size f_inode->i_size struct inode *f_inode; /* cached value */ #define f_dentry f_path.dentry #define f_vfsmnt f_path.mnt @@ -231,9 +235,9 @@ struct file { unsigned int f_uid, f_gid; u64 f_version; - /* needed for tty driver, and maybe others */ + /* private to the filesystem driver */ void *private_data; -}; +} FILE; struct super_operations { struct inode *(*alloc_inode)(struct super_block *sb); -- 2.39.5