f2fs: use common file type conversion
Subsystems (2)
PATCH v6 4/7 f2fs: use common file type conversion
Deduplicate the f2fs file type conversion implementation and remove F2FS_FT_* definitions - file systems that use the same file types as defined by POSIX do not need to define their own versions and can use the common helper functions decared in fs_types.h and implemented in fs_types.c
Common implementation can be found via commit:bbe7449e2599 "fs: common implementation of file type"
Signed-off-by Amir Goldstein <[email protected]>
Signed-off-by Phillip Potter <[email protected]>
Reviewed-by Chao Yu <[email protected]>
Reviewed-by Jan Kara <[email protected]>
--- fs/f2fs/dir.c | 27 ++------------------------- fs/f2fs/inline.c | 2 +- include/linux/f2fs_fs.h | 15 --------------- 3 files changed, 3 insertions(+), 41 deletions(-)
fs/f2fs/dir.c +2 -25
@@ -36,37 +36,14 @@ static unsigned int bucket_blocks(unsigned int level)return 4 ; } -static unsigned char f2fs_filetype_table[F2FS_FT_MAX ] = { - [F2FS_FT_UNKNOWN ] =DT_UNKNOWN , - [F2FS_FT_REG_FILE ] =DT_REG , - [F2FS_FT_DIR ] =DT_DIR , - [F2FS_FT_CHRDEV ] =DT_CHR , - [F2FS_FT_BLKDEV ] =DT_BLK , - [F2FS_FT_FIFO ] =DT_FIFO , - [F2FS_FT_SOCK ] =DT_SOCK , - [F2FS_FT_SYMLINK ] =DT_LNK , -}; - -static unsigned char f2fs_type_by_mode[S_IFMT >>S_SHIFT ] = { - [S_IFREG >>S_SHIFT ] =F2FS_FT_REG_FILE , - [S_IFDIR >>S_SHIFT ] =F2FS_FT_DIR , - [S_IFCHR >>S_SHIFT ] =F2FS_FT_CHRDEV , - [S_IFBLK >>S_SHIFT ] =F2FS_FT_BLKDEV , - [S_IFIFO >>S_SHIFT ] =F2FS_FT_FIFO , - [S_IFSOCK >>S_SHIFT ] =F2FS_FT_SOCK , - [S_IFLNK >>S_SHIFT ] =F2FS_FT_SYMLINK , -}; -static void set_de_type (struct f2fs_dir_entry *de,umode_t mode) { - de->file_type = f2fs_type_by_mode[(mode &S_IFMT ) >>S_SHIFT ]; + de->file_type =fs_umode_to_ftype (mode); }unsigned char f2fs_get_de_type (struct f2fs_dir_entry *de) { -if (de->file_type <F2FS_FT_MAX ) -return f2fs_filetype_table[de->file_type]; -return DT_UNKNOWN ; +return fs_ftype_to_dtype (de->file_type); } static unsigned long dir_block_index(unsigned int level,
fs/f2fs/inline.c +1 -1
@@ -458,7 +458,7 @@ static int f2fs_add_inline_entries(struct inode *dir, void *inline_dentry) new_name.len =le16_to_cpu (de->name_len); ino =le32_to_cpu (de->ino); - fake_mode =f2fs_get_de_type (de) <<S_SHIFT ; + fake_mode =f2fs_get_de_type (de) <<S_DT_SHIFT ; err =f2fs_add_regular_entry (dir, &new_name,NULL ,NULL , ino, fake_mode);
include/linux/f2fs_fs.h +0 -15
@@ -526,21 +526,6 @@ struct f2fs_dentry_block { __u8 filename[NR_DENTRY_IN_BLOCK][F2FS_SLOT_LEN]; } __packed; -/* file types used in inode_info->flags */ -enum { -F2FS_FT_UNKNOWN , -F2FS_FT_REG_FILE , -F2FS_FT_DIR , -F2FS_FT_CHRDEV , -F2FS_FT_BLKDEV , -F2FS_FT_FIFO , -F2FS_FT_SOCK , -F2FS_FT_SYMLINK , -F2FS_FT_MAX -}; - -#define S_SHIFT 12 -#define F2FS_DEF_PROJID 0/* default project ID */ #endif /* _LINUX_F2FS_FS_H */
Signature · 1 line
2.20.1