mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
nilfs2: use common implementation of file type
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>
This commit is contained in:
parent
093ebfbbf3
commit
9abca1a71c
|
|
@ -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 @@ int nilfs_add_link(struct dentry *dentry, struct inode *inode)
|
|||
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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user