]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nilfs2: use common implementation of file type
authorHuang Xiaojia <huangxiaojia2@huawei.com>
Mon, 26 Aug 2024 17:41:09 +0000 (02:41 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 2 Sep 2024 03:43:42 +0000 (20:43 -0700)
Patch series "nilfs2: assorted cleanups".

This is a collection of cleanup patches, with only the last three focused
on the log writer thread, the rest are miscellaneous.

Patches 1/8, 4/8, and 7/8 adopt common implementations, 2/8 uses a generic
macro, 5/8 removes dead code, 6/8 removes an unnecessary reference, and
3/8 and 8/8 each simplify a paticular messy implementation.

This patch (of 8):

Deduplicate the nilfs2 file type conversion implementation.

Link: https://lkml.kernel.org/r/20240826174116.5008-1-konishi.ryusuke@gmail.com
Link: https://lkml.kernel.org/r/20240815013442.1220909-1-huangxiaojia2@huawei.com
Link: https://lkml.kernel.org/r/20240826174116.5008-2-konishi.ryusuke@gmail.com
Signed-off-by: Huang Xiaojia <huangxiaojia2@huawei.com>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/nilfs2/dir.c

index 4a29b0138d75f5c07fc4c7e3cb4e419f3a34b0dd..ba6bc6efcf1102fee0127835dfd7a044cbb715fc 100644 (file)
@@ -231,37 +231,6 @@ static struct nilfs_dir_entry *nilfs_next_entry(struct nilfs_dir_entry *p)
                                          nilfs_rec_len_from_disk(p->rec_len));
 }
 
-static unsigned char
-nilfs_filetype_table[NILFS_FT_MAX] = {
-       [NILFS_FT_UNKNOWN]      = DT_UNKNOWN,
-       [NILFS_FT_REG_FILE]     = DT_REG,
-       [NILFS_FT_DIR]          = DT_DIR,
-       [NILFS_FT_CHRDEV]       = DT_CHR,
-       [NILFS_FT_BLKDEV]       = DT_BLK,
-       [NILFS_FT_FIFO]         = DT_FIFO,
-       [NILFS_FT_SOCK]         = DT_SOCK,
-       [NILFS_FT_SYMLINK]      = DT_LNK,
-};
-
-#define S_SHIFT 12
-static unsigned char
-nilfs_type_by_mode[(S_IFMT >> S_SHIFT) + 1] = {
-       [S_IFREG >> S_SHIFT]    = NILFS_FT_REG_FILE,
-       [S_IFDIR >> S_SHIFT]    = NILFS_FT_DIR,
-       [S_IFCHR >> S_SHIFT]    = NILFS_FT_CHRDEV,
-       [S_IFBLK >> S_SHIFT]    = NILFS_FT_BLKDEV,
-       [S_IFIFO >> S_SHIFT]    = NILFS_FT_FIFO,
-       [S_IFSOCK >> S_SHIFT]   = NILFS_FT_SOCK,
-       [S_IFLNK >> S_SHIFT]    = NILFS_FT_SYMLINK,
-};
-
-static void nilfs_set_de_type(struct nilfs_dir_entry *de, struct inode *inode)
-{
-       umode_t mode = inode->i_mode;
-
-       de->file_type = nilfs_type_by_mode[(mode & S_IFMT)>>S_SHIFT];
-}
-
 static int nilfs_readdir(struct file *file, struct dir_context *ctx)
 {
        loff_t pos = ctx->pos;
@@ -297,10 +266,7 @@ static int nilfs_readdir(struct file *file, struct dir_context *ctx)
                        if (de->inode) {
                                unsigned char t;
 
-                               if (de->file_type < NILFS_FT_MAX)
-                                       t = nilfs_filetype_table[de->file_type];
-                               else
-                                       t = DT_UNKNOWN;
+                               t = fs_ftype_to_dtype(de->file_type);
 
                                if (!dir_emit(ctx, de->name, de->name_len,
                                                le64_to_cpu(de->inode), t)) {
@@ -444,7 +410,7 @@ void nilfs_set_link(struct inode *dir, struct nilfs_dir_entry *de,
        err = nilfs_prepare_chunk(folio, from, to);
        BUG_ON(err);
        de->inode = cpu_to_le64(inode->i_ino);
-       nilfs_set_de_type(de, inode);
+       de->file_type = fs_umode_to_ftype(inode->i_mode);
        nilfs_commit_chunk(folio, mapping, from, to);
        inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
 }
@@ -531,7 +497,7 @@ got_it:
        de->name_len = namelen;
        memcpy(de->name, name, namelen);
        de->inode = cpu_to_le64(inode->i_ino);
-       nilfs_set_de_type(de, inode);
+       de->file_type = fs_umode_to_ftype(inode->i_mode);
        nilfs_commit_chunk(folio, folio->mapping, from, to);
        inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
        nilfs_mark_inode_dirty(dir);
@@ -612,14 +578,14 @@ int nilfs_make_empty(struct inode *inode, struct inode *parent)
        de->rec_len = nilfs_rec_len_to_disk(NILFS_DIR_REC_LEN(1));
        memcpy(de->name, ".\0\0", 4);
        de->inode = cpu_to_le64(inode->i_ino);
-       nilfs_set_de_type(de, inode);
+       de->file_type = fs_umode_to_ftype(inode->i_mode);
 
        de = (struct nilfs_dir_entry *)(kaddr + NILFS_DIR_REC_LEN(1));
        de->name_len = 2;
        de->rec_len = nilfs_rec_len_to_disk(chunk_size - NILFS_DIR_REC_LEN(1));
        de->inode = cpu_to_le64(parent->i_ino);
        memcpy(de->name, "..\0", 4);
-       nilfs_set_de_type(de, inode);
+       de->file_type = fs_umode_to_ftype(inode->i_mode);
        kunmap_local(kaddr);
        nilfs_commit_chunk(folio, mapping, 0, chunk_size);
 fail: