1 #ifndef _EXT4_H 2 #define _EXT4_H 3 4 #include <linux/jbd.h> 5 /* Temporarily we need this. */ 6 #include <linux/ext3_fs.h> 7 8 typedef unsigned __int16 uint16_t; 9 typedef unsigned __int32 uint32_t; 10 typedef unsigned __int64 uint64_t; 11 12 typedef uint32_t ext4_lblk_t; 13 typedef uint64_t ext4_fsblk_t; 14 15 /* 16 * Flags used by ext4_map_blocks() 17 */ 18 /* Allocate any needed blocks and/or convert an unwritten 19 extent to be an initialized ext4 */ 20 #define EXT4_GET_BLOCKS_CREATE 0x0001 21 /* Request the creation of an unwritten extent */ 22 #define EXT4_GET_BLOCKS_UNWRIT_EXT 0x0002 23 #define EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT (EXT4_GET_BLOCKS_UNWRIT_EXT|\ 24 EXT4_GET_BLOCKS_CREATE) 25 /* Caller is from the delayed allocation writeout path 26 * finally doing the actual allocation of delayed blocks */ 27 #define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004 28 /* caller is from the direct IO path, request to creation of an 29 unwritten extents if not allocated, split the unwritten 30 extent if blocks has been preallocated already*/ 31 #define EXT4_GET_BLOCKS_PRE_IO 0x0008 32 #define EXT4_GET_BLOCKS_CONVERT 0x0010 33 #define EXT4_GET_BLOCKS_IO_CREATE_EXT (EXT4_GET_BLOCKS_PRE_IO|\ 34 EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT) 35 /* Convert extent to initialized after IO complete */ 36 #define EXT4_GET_BLOCKS_IO_CONVERT_EXT (EXT4_GET_BLOCKS_CONVERT|\ 37 EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT) 38 /* Eventual metadata allocation (due to growing extent tree) 39 * should not fail, so try to use reserved blocks for that.*/ 40 #define EXT4_GET_BLOCKS_METADATA_NOFAIL 0x0020 41 /* Don't normalize allocation size (used for fallocate) */ 42 #define EXT4_GET_BLOCKS_NO_NORMALIZE 0x0040 43 /* Request will not result in inode size update (user for fallocate) */ 44 #define EXT4_GET_BLOCKS_KEEP_SIZE 0x0080 45 /* Do not take i_data_sem locking in ext4_map_blocks */ 46 #define EXT4_GET_BLOCKS_NO_LOCK 0x0100 47 /* Do not put hole in extent cache */ 48 #define EXT4_GET_BLOCKS_NO_PUT_HOLE 0x0200 49 /* Convert written extents to unwritten */ 50 #define EXT4_GET_BLOCKS_CONVERT_UNWRITTEN 0x0400 51 52 /* 53 * The bit position of these flags must not overlap with any of the 54 * EXT4_GET_BLOCKS_*. They are used by ext4_find_extent(), 55 * read_extent_tree_block(), ext4_split_extent_at(), 56 * ext4_ext_insert_extent(), and ext4_ext_create_new_leaf(). 57 * EXT4_EX_NOCACHE is used to indicate that the we shouldn't be 58 * caching the extents when reading from the extent tree while a 59 * truncate or punch hole operation is in progress. 60 */ 61 #define EXT4_EX_NOCACHE 0x40000000 62 #define EXT4_EX_FORCE_CACHE 0x20000000 63 64 /* 65 * Flags used by ext4_free_blocks 66 */ 67 #define EXT4_FREE_BLOCKS_METADATA 0x0001 68 #define EXT4_FREE_BLOCKS_FORGET 0x0002 69 #define EXT4_FREE_BLOCKS_VALIDATED 0x0004 70 #define EXT4_FREE_BLOCKS_NO_QUOT_UPDATE 0x0008 71 #define EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER 0x0010 72 #define EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER 0x0020 73 74 /* 75 * Flags used in mballoc's allocation_context flags field. 76 * 77 * Also used to show what's going on for debugging purposes when the 78 * flag field is exported via the traceport interface 79 */ 80 81 /* prefer goal again. length */ 82 #define EXT4_MB_HINT_MERGE 0x0001 83 /* blocks already reserved */ 84 #define EXT4_MB_HINT_RESERVED 0x0002 85 /* metadata is being allocated */ 86 #define EXT4_MB_HINT_METADATA 0x0004 87 /* first blocks in the file */ 88 #define EXT4_MB_HINT_FIRST 0x0008 89 /* search for the best chunk */ 90 #define EXT4_MB_HINT_BEST 0x0010 91 /* data is being allocated */ 92 #define EXT4_MB_HINT_DATA 0x0020 93 /* don't preallocate (for tails) */ 94 #define EXT4_MB_HINT_NOPREALLOC 0x0040 95 /* allocate for locality group */ 96 #define EXT4_MB_HINT_GROUP_ALLOC 0x0080 97 /* allocate goal blocks or none */ 98 #define EXT4_MB_HINT_GOAL_ONLY 0x0100 99 /* goal is meaningful */ 100 #define EXT4_MB_HINT_TRY_GOAL 0x0200 101 /* blocks already pre-reserved by delayed allocation */ 102 #define EXT4_MB_DELALLOC_RESERVED 0x0400 103 /* We are doing stream allocation */ 104 #define EXT4_MB_STREAM_ALLOC 0x0800 105 /* Use reserved root blocks if needed */ 106 #define EXT4_MB_USE_ROOT_BLOCKS 0x1000 107 /* Use blocks from reserved pool */ 108 #define EXT4_MB_USE_RESERVED 0x2000 109 110 111 #define ext4_sb_info ext3_sb_info 112 113 static inline struct ext4_sb_info * EXT4_SB(struct super_block *sb) 114 { 115 return sb->s_fs_info; 116 } 117 #define EXT4_I(i) (i) 118 119 #include <linux/ext4_jbd2.h> 120 #include <linux/ext4_ext.h> 121 122 #endif /* _EXT4_H */ 123