X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lib%2Fext2fs%2Fext2fs.h;h=58733413f3052b46e5cf41d5d856b794c441d0cb;hb=c60d513a70d57afbfb20305241d3000f9c698a02;hp=722f8dc73590a19322eb65f65eef9395fb52ddc7;hpb=2ab7d79d28289753be87035f06ec2d346b574759;p=tools%2Fe2fsprogs.git diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index 722f8dc..5873341 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -569,6 +569,7 @@ typedef struct ext2_icount *ext2_icount_t; EXT4_FEATURE_INCOMPAT_FLEX_BG|\ EXT4_FEATURE_INCOMPAT_MMP|\ EXT4_FEATURE_INCOMPAT_EA_INODE|\ + EXT4_FEATURE_INCOMPAT_DIRDATA|\ EXT4_FEATURE_INCOMPAT_64BIT) #else #define EXT2_LIB_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE|\ @@ -579,6 +580,7 @@ typedef struct ext2_icount *ext2_icount_t; EXT4_FEATURE_INCOMPAT_FLEX_BG|\ EXT4_FEATURE_INCOMPAT_MMP|\ EXT4_FEATURE_INCOMPAT_EA_INODE|\ + EXT4_FEATURE_INCOMPAT_DIRDATA|\ EXT4_FEATURE_INCOMPAT_64BIT) #endif #ifdef CONFIG_QUOTA @@ -1701,6 +1703,25 @@ _INLINE_ blk_t ext2fs_inode_data_blocks(ext2_filsys fs, return ext2fs_inode_data_blocks2(fs, inode); } +_INLINE_ struct ext2_dx_root_info *get_ext2_dx_root_info(ext2_filsys fs, + char *buf) +{ + struct ext2_dir_entry_2 *de = (struct ext2_dir_entry_2 *)buf; + + if (!(fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_DIRDATA)) + return (struct ext2_dx_root_info *)(buf + + __EXT2_DIR_REC_LEN(1) + + __EXT2_DIR_REC_LEN(2)); + + /* get dotdot first */ + de = (struct ext2_dir_entry_2 *)((char *)de + de->rec_len); + + /* dx root info is after dotdot entry */ + de = (struct ext2_dir_entry_2 *)((char *)de + EXT2_DIR_REC_LEN(de)); + + return (struct ext2_dx_root_info *)de; +} + /* * This is an efficient, overflow safe way of calculating ceil((1.0 * a) / b) */