mirror of
https://github.com/reactos/reactos.git
synced 2024-09-10 12:54:51 +00:00
123 lines
4.2 KiB
C
123 lines
4.2 KiB
C
#ifndef _EXT4_H
|
|
#define _EXT4_H
|
|
|
|
#include <linux/jbd.h>
|
|
/* Temporarily we need this. */
|
|
#include <linux/ext3_fs.h>
|
|
|
|
typedef unsigned __int16 uint16_t;
|
|
typedef unsigned __int32 uint32_t;
|
|
typedef unsigned __int64 uint64_t;
|
|
|
|
typedef uint32_t ext4_lblk_t;
|
|
typedef uint64_t ext4_fsblk_t;
|
|
|
|
/*
|
|
* Flags used by ext4_map_blocks()
|
|
*/
|
|
/* Allocate any needed blocks and/or convert an unwritten
|
|
extent to be an initialized ext4 */
|
|
#define EXT4_GET_BLOCKS_CREATE 0x0001
|
|
/* Request the creation of an unwritten extent */
|
|
#define EXT4_GET_BLOCKS_UNWRIT_EXT 0x0002
|
|
#define EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT (EXT4_GET_BLOCKS_UNWRIT_EXT|\
|
|
EXT4_GET_BLOCKS_CREATE)
|
|
/* Caller is from the delayed allocation writeout path
|
|
* finally doing the actual allocation of delayed blocks */
|
|
#define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004
|
|
/* caller is from the direct IO path, request to creation of an
|
|
unwritten extents if not allocated, split the unwritten
|
|
extent if blocks has been preallocated already*/
|
|
#define EXT4_GET_BLOCKS_PRE_IO 0x0008
|
|
#define EXT4_GET_BLOCKS_CONVERT 0x0010
|
|
#define EXT4_GET_BLOCKS_IO_CREATE_EXT (EXT4_GET_BLOCKS_PRE_IO|\
|
|
EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT)
|
|
/* Convert extent to initialized after IO complete */
|
|
#define EXT4_GET_BLOCKS_IO_CONVERT_EXT (EXT4_GET_BLOCKS_CONVERT|\
|
|
EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT)
|
|
/* Eventual metadata allocation (due to growing extent tree)
|
|
* should not fail, so try to use reserved blocks for that.*/
|
|
#define EXT4_GET_BLOCKS_METADATA_NOFAIL 0x0020
|
|
/* Don't normalize allocation size (used for fallocate) */
|
|
#define EXT4_GET_BLOCKS_NO_NORMALIZE 0x0040
|
|
/* Request will not result in inode size update (user for fallocate) */
|
|
#define EXT4_GET_BLOCKS_KEEP_SIZE 0x0080
|
|
/* Do not take i_data_sem locking in ext4_map_blocks */
|
|
#define EXT4_GET_BLOCKS_NO_LOCK 0x0100
|
|
/* Do not put hole in extent cache */
|
|
#define EXT4_GET_BLOCKS_NO_PUT_HOLE 0x0200
|
|
/* Convert written extents to unwritten */
|
|
#define EXT4_GET_BLOCKS_CONVERT_UNWRITTEN 0x0400
|
|
|
|
/*
|
|
* The bit position of these flags must not overlap with any of the
|
|
* EXT4_GET_BLOCKS_*. They are used by ext4_find_extent(),
|
|
* read_extent_tree_block(), ext4_split_extent_at(),
|
|
* ext4_ext_insert_extent(), and ext4_ext_create_new_leaf().
|
|
* EXT4_EX_NOCACHE is used to indicate that the we shouldn't be
|
|
* caching the extents when reading from the extent tree while a
|
|
* truncate or punch hole operation is in progress.
|
|
*/
|
|
#define EXT4_EX_NOCACHE 0x40000000
|
|
#define EXT4_EX_FORCE_CACHE 0x20000000
|
|
|
|
/*
|
|
* Flags used by ext4_free_blocks
|
|
*/
|
|
#define EXT4_FREE_BLOCKS_METADATA 0x0001
|
|
#define EXT4_FREE_BLOCKS_FORGET 0x0002
|
|
#define EXT4_FREE_BLOCKS_VALIDATED 0x0004
|
|
#define EXT4_FREE_BLOCKS_NO_QUOT_UPDATE 0x0008
|
|
#define EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER 0x0010
|
|
#define EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER 0x0020
|
|
|
|
/*
|
|
* Flags used in mballoc's allocation_context flags field.
|
|
*
|
|
* Also used to show what's going on for debugging purposes when the
|
|
* flag field is exported via the traceport interface
|
|
*/
|
|
|
|
/* prefer goal again. length */
|
|
#define EXT4_MB_HINT_MERGE 0x0001
|
|
/* blocks already reserved */
|
|
#define EXT4_MB_HINT_RESERVED 0x0002
|
|
/* metadata is being allocated */
|
|
#define EXT4_MB_HINT_METADATA 0x0004
|
|
/* first blocks in the file */
|
|
#define EXT4_MB_HINT_FIRST 0x0008
|
|
/* search for the best chunk */
|
|
#define EXT4_MB_HINT_BEST 0x0010
|
|
/* data is being allocated */
|
|
#define EXT4_MB_HINT_DATA 0x0020
|
|
/* don't preallocate (for tails) */
|
|
#define EXT4_MB_HINT_NOPREALLOC 0x0040
|
|
/* allocate for locality group */
|
|
#define EXT4_MB_HINT_GROUP_ALLOC 0x0080
|
|
/* allocate goal blocks or none */
|
|
#define EXT4_MB_HINT_GOAL_ONLY 0x0100
|
|
/* goal is meaningful */
|
|
#define EXT4_MB_HINT_TRY_GOAL 0x0200
|
|
/* blocks already pre-reserved by delayed allocation */
|
|
#define EXT4_MB_DELALLOC_RESERVED 0x0400
|
|
/* We are doing stream allocation */
|
|
#define EXT4_MB_STREAM_ALLOC 0x0800
|
|
/* Use reserved root blocks if needed */
|
|
#define EXT4_MB_USE_ROOT_BLOCKS 0x1000
|
|
/* Use blocks from reserved pool */
|
|
#define EXT4_MB_USE_RESERVED 0x2000
|
|
|
|
|
|
#define ext4_sb_info ext3_sb_info
|
|
|
|
static inline struct ext4_sb_info * EXT4_SB(struct super_block *sb)
|
|
{
|
|
return sb->s_fs_info;
|
|
}
|
|
#define EXT4_I(i) (i)
|
|
|
|
#include <linux/ext4_jbd2.h>
|
|
#include <linux/ext4_ext.h>
|
|
|
|
#endif /* _EXT4_H */
|