fs: consolidate duplicate dt_type helpers
There are three copies of the same dt_type helper sprinkled around the tree. Convert them to use the common fs_umode_to_dtype function instead, which has the added advantage of properly returning DT_UNKNOWN when given a mode that contains an unrecognized type. Cc: Chuck Lever <chuck.lever@oracle.com> Cc: Phillip Potter <phil@philpotter.co.uk> Suggested-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Jeff Layton <jlayton@kernel.org> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Christian Brauner <brauner@kernel.org> Message-Id: <20230330104144.75547-1-jlayton@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
4f704d9a83
commit
364595a685
|
@ -1599,12 +1599,6 @@ static int configfs_dir_close(struct inode *inode, struct file *file)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Relationship between s_mode and the DT_xxx types */
|
||||
static inline unsigned char dt_type(struct configfs_dirent *sd)
|
||||
{
|
||||
return (sd->s_mode >> 12) & 15;
|
||||
}
|
||||
|
||||
static int configfs_readdir(struct file *file, struct dir_context *ctx)
|
||||
{
|
||||
struct dentry *dentry = file->f_path.dentry;
|
||||
|
@ -1654,7 +1648,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx)
|
|||
name = configfs_get_name(next);
|
||||
len = strlen(name);
|
||||
|
||||
if (!dir_emit(ctx, name, len, ino, dt_type(next)))
|
||||
if (!dir_emit(ctx, name, len, ino,
|
||||
fs_umode_to_dtype(next->s_mode)))
|
||||
return 0;
|
||||
|
||||
spin_lock(&configfs_dirent_lock);
|
||||
|
|
|
@ -1748,12 +1748,6 @@ int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent,
|
|||
return error;
|
||||
}
|
||||
|
||||
/* Relationship between mode and the DT_xxx types */
|
||||
static inline unsigned char dt_type(struct kernfs_node *kn)
|
||||
{
|
||||
return (kn->mode >> 12) & 15;
|
||||
}
|
||||
|
||||
static int kernfs_dir_fop_release(struct inode *inode, struct file *filp)
|
||||
{
|
||||
kernfs_put(filp->private_data);
|
||||
|
@ -1831,7 +1825,7 @@ static int kernfs_fop_readdir(struct file *file, struct dir_context *ctx)
|
|||
pos;
|
||||
pos = kernfs_dir_next_pos(ns, parent, ctx->pos, pos)) {
|
||||
const char *name = pos->name;
|
||||
unsigned int type = dt_type(pos);
|
||||
unsigned int type = fs_umode_to_dtype(pos->mode);
|
||||
int len = strlen(name);
|
||||
ino_t ino = kernfs_ino(pos);
|
||||
|
||||
|
|
|
@ -174,12 +174,6 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence)
|
|||
}
|
||||
EXPORT_SYMBOL(dcache_dir_lseek);
|
||||
|
||||
/* Relationship between i_mode and the DT_xxx types */
|
||||
static inline unsigned char dt_type(struct inode *inode)
|
||||
{
|
||||
return (inode->i_mode >> 12) & 15;
|
||||
}
|
||||
|
||||
/*
|
||||
* Directory is locked and all positive dentries in it are safe, since
|
||||
* for ramfs-type trees they can't go away without unlink() or rmdir(),
|
||||
|
@ -206,7 +200,8 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
|
|||
|
||||
while ((next = scan_positives(cursor, p, 1, next)) != NULL) {
|
||||
if (!dir_emit(ctx, next->d_name.name, next->d_name.len,
|
||||
d_inode(next)->i_ino, dt_type(d_inode(next))))
|
||||
d_inode(next)->i_ino,
|
||||
fs_umode_to_dtype(d_inode(next)->i_mode)))
|
||||
break;
|
||||
ctx->pos++;
|
||||
p = &next->d_child;
|
||||
|
|
Loading…
Reference in New Issue