diff options
| -rw-r--r-- | fs/xfs/libxfs/xfs_dir2.c | 16 | ||||
| -rw-r--r-- | fs/xfs/libxfs/xfs_dir2.h | 6 | ||||
| -rw-r--r-- | fs/xfs/libxfs/xfs_dir2_priv.h | 6 | ||||
| -rw-r--r-- | fs/xfs/xfs_dir2_readdir.c | 18 | ||||
| -rw-r--r-- | fs/xfs/xfs_iops.c | 2 |
5 files changed, 24 insertions, 24 deletions
diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c index 7075aaf131f4..0246877d2d2e 100644 --- a/fs/xfs/libxfs/xfs_dir2.c +++ b/fs/xfs/libxfs/xfs_dir2.c | |||
| @@ -38,6 +38,22 @@ | |||
| 38 | 38 | ||
| 39 | struct xfs_name xfs_name_dotdot = { (unsigned char *)"..", 2, XFS_DIR3_FT_DIR }; | 39 | struct xfs_name xfs_name_dotdot = { (unsigned char *)"..", 2, XFS_DIR3_FT_DIR }; |
| 40 | 40 | ||
| 41 | /* | ||
| 42 | * @mode, if set, indicates that the type field needs to be set up. | ||
| 43 | * This uses the transformation from file mode to DT_* as defined in linux/fs.h | ||
| 44 | * for file type specification. This will be propagated into the directory | ||
| 45 | * structure if appropriate for the given operation and filesystem config. | ||
| 46 | */ | ||
| 47 | const unsigned char xfs_mode_to_ftype[S_IFMT >> S_SHIFT] = { | ||
| 48 | [0] = XFS_DIR3_FT_UNKNOWN, | ||
| 49 | [S_IFREG >> S_SHIFT] = XFS_DIR3_FT_REG_FILE, | ||
| 50 | [S_IFDIR >> S_SHIFT] = XFS_DIR3_FT_DIR, | ||
| 51 | [S_IFCHR >> S_SHIFT] = XFS_DIR3_FT_CHRDEV, | ||
| 52 | [S_IFBLK >> S_SHIFT] = XFS_DIR3_FT_BLKDEV, | ||
| 53 | [S_IFIFO >> S_SHIFT] = XFS_DIR3_FT_FIFO, | ||
| 54 | [S_IFSOCK >> S_SHIFT] = XFS_DIR3_FT_SOCK, | ||
| 55 | [S_IFLNK >> S_SHIFT] = XFS_DIR3_FT_SYMLINK, | ||
| 56 | }; | ||
| 41 | 57 | ||
| 42 | /* | 58 | /* |
| 43 | * ASCII case-insensitive (ie. A-Z) support for directories that was | 59 | * ASCII case-insensitive (ie. A-Z) support for directories that was |
diff --git a/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h index 4dff261e6ed5..874720dbd865 100644 --- a/fs/xfs/libxfs/xfs_dir2.h +++ b/fs/xfs/libxfs/xfs_dir2.h | |||
| @@ -32,6 +32,12 @@ struct xfs_dir2_data_unused; | |||
| 32 | extern struct xfs_name xfs_name_dotdot; | 32 | extern struct xfs_name xfs_name_dotdot; |
| 33 | 33 | ||
| 34 | /* | 34 | /* |
| 35 | * directory filetype conversion tables. | ||
| 36 | */ | ||
| 37 | #define S_SHIFT 12 | ||
| 38 | extern const unsigned char xfs_mode_to_ftype[]; | ||
| 39 | |||
| 40 | /* | ||
| 35 | * directory operations vector for encode/decode routines | 41 | * directory operations vector for encode/decode routines |
| 36 | */ | 42 | */ |
| 37 | struct xfs_dir_ops { | 43 | struct xfs_dir_ops { |
diff --git a/fs/xfs/libxfs/xfs_dir2_priv.h b/fs/xfs/libxfs/xfs_dir2_priv.h index 27ce0794d196..27096ba91dde 100644 --- a/fs/xfs/libxfs/xfs_dir2_priv.h +++ b/fs/xfs/libxfs/xfs_dir2_priv.h | |||
| @@ -161,12 +161,6 @@ extern int xfs_dir2_grow_inode(struct xfs_da_args *args, int space, | |||
| 161 | extern int xfs_dir_cilookup_result(struct xfs_da_args *args, | 161 | extern int xfs_dir_cilookup_result(struct xfs_da_args *args, |
| 162 | const unsigned char *name, int len); | 162 | const unsigned char *name, int len); |
| 163 | 163 | ||
| 164 | #define S_SHIFT 12 | ||
| 165 | extern const unsigned char xfs_mode_to_ftype[]; | ||
| 166 | |||
| 167 | extern unsigned char xfs_dir3_get_dtype(struct xfs_mount *mp, | ||
| 168 | __uint8_t filetype); | ||
| 169 | |||
| 170 | 164 | ||
| 171 | /* xfs_dir2_block.c */ | 165 | /* xfs_dir2_block.c */ |
| 172 | extern int xfs_dir3_block_read(struct xfs_trans *tp, struct xfs_inode *dp, | 166 | extern int xfs_dir3_block_read(struct xfs_trans *tp, struct xfs_inode *dp, |
diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c index f1b69edcdf31..d4b301a85288 100644 --- a/fs/xfs/xfs_dir2_readdir.c +++ b/fs/xfs/xfs_dir2_readdir.c | |||
| @@ -44,7 +44,7 @@ static unsigned char xfs_dir3_filetype_table[] = { | |||
| 44 | DT_FIFO, DT_SOCK, DT_LNK, DT_WHT, | 44 | DT_FIFO, DT_SOCK, DT_LNK, DT_WHT, |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
| 47 | unsigned char | 47 | static unsigned char |
| 48 | xfs_dir3_get_dtype( | 48 | xfs_dir3_get_dtype( |
| 49 | struct xfs_mount *mp, | 49 | struct xfs_mount *mp, |
| 50 | __uint8_t filetype) | 50 | __uint8_t filetype) |
| @@ -57,22 +57,6 @@ xfs_dir3_get_dtype( | |||
| 57 | 57 | ||
| 58 | return xfs_dir3_filetype_table[filetype]; | 58 | return xfs_dir3_filetype_table[filetype]; |
| 59 | } | 59 | } |
| 60 | /* | ||
| 61 | * @mode, if set, indicates that the type field needs to be set up. | ||
| 62 | * This uses the transformation from file mode to DT_* as defined in linux/fs.h | ||
| 63 | * for file type specification. This will be propagated into the directory | ||
| 64 | * structure if appropriate for the given operation and filesystem config. | ||
| 65 | */ | ||
| 66 | const unsigned char xfs_mode_to_ftype[S_IFMT >> S_SHIFT] = { | ||
| 67 | [0] = XFS_DIR3_FT_UNKNOWN, | ||
| 68 | [S_IFREG >> S_SHIFT] = XFS_DIR3_FT_REG_FILE, | ||
| 69 | [S_IFDIR >> S_SHIFT] = XFS_DIR3_FT_DIR, | ||
| 70 | [S_IFCHR >> S_SHIFT] = XFS_DIR3_FT_CHRDEV, | ||
| 71 | [S_IFBLK >> S_SHIFT] = XFS_DIR3_FT_BLKDEV, | ||
| 72 | [S_IFIFO >> S_SHIFT] = XFS_DIR3_FT_FIFO, | ||
| 73 | [S_IFSOCK >> S_SHIFT] = XFS_DIR3_FT_SOCK, | ||
| 74 | [S_IFLNK >> S_SHIFT] = XFS_DIR3_FT_SYMLINK, | ||
| 75 | }; | ||
| 76 | 60 | ||
| 77 | STATIC int | 61 | STATIC int |
| 78 | xfs_dir2_sf_getdents( | 62 | xfs_dir2_sf_getdents( |
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index ec6dcdc181ee..4b7802aff9ec 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | #include "xfs_icache.h" | 37 | #include "xfs_icache.h" |
| 38 | #include "xfs_symlink.h" | 38 | #include "xfs_symlink.h" |
| 39 | #include "xfs_da_btree.h" | 39 | #include "xfs_da_btree.h" |
| 40 | #include "xfs_dir2_priv.h" | 40 | #include "xfs_dir2.h" |
| 41 | #include "xfs_dinode.h" | 41 | #include "xfs_dinode.h" |
| 42 | #include "xfs_trans_space.h" | 42 | #include "xfs_trans_space.h" |
| 43 | 43 | ||
