diff options
author | Tao Ma <boyu.mt@taobao.com> | 2012-12-10 23:05:59 +0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2012-12-10 23:05:59 +0400 |
commit | 65d165d9366dbf783d0102177006d47c8859ba31 (patch) | |
tree | 39a1699951de4aafad0a81a77d3b20de38925ee9 /fs/ext4/ext4.h | |
parent | 3c47d54170b6a678875566b1b8d6dcf57904e49b (diff) | |
download | linux-65d165d9366dbf783d0102177006d47c8859ba31.tar.xz |
ext4: let ext4_readdir handle inline data
For "." and "..", we just call filldir by ourselves
instead of iterating the real dir entry.
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4.h')
-rw-r--r-- | fs/ext4/ext4.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 689ce1d696b8..e3a74658c63c 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1989,6 +1989,18 @@ static inline void ext4_update_dx_flag(struct inode *inode) EXT4_FEATURE_COMPAT_DIR_INDEX)) ext4_clear_inode_flag(inode, EXT4_INODE_INDEX); } +static unsigned char ext4_filetype_table[] = { + DT_UNKNOWN, DT_REG, DT_DIR, DT_CHR, DT_BLK, DT_FIFO, DT_SOCK, DT_LNK +}; + +static inline unsigned char get_dtype(struct super_block *sb, int filetype) +{ + if (!EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FILETYPE) || + (filetype >= EXT4_FT_MAX)) + return DT_UNKNOWN; + + return ext4_filetype_table[filetype]; +} /* fsync.c */ extern int ext4_sync_file(struct file *, loff_t, loff_t, int); |