diff options
Diffstat (limited to 'fs/btrfs/ctree.h')
| -rw-r--r-- | fs/btrfs/ctree.h | 22 | 
1 files changed, 20 insertions, 2 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index e2f14b5258b..efb2feb7cd4 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -509,6 +509,7 @@ struct btrfs_super_block {  #define BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF	(1ULL << 6)  #define BTRFS_FEATURE_INCOMPAT_RAID56		(1ULL << 7) +#define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA	(1ULL << 8)  #define BTRFS_FEATURE_COMPAT_SUPP		0ULL  #define BTRFS_FEATURE_COMPAT_RO_SUPP		0ULL @@ -519,7 +520,8 @@ struct btrfs_super_block {  	 BTRFS_FEATURE_INCOMPAT_BIG_METADATA |		\  	 BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO |		\  	 BTRFS_FEATURE_INCOMPAT_RAID56 |		\ -	 BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF) +	 BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF |		\ +	 BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA)  /*   * A leaf is full of items. offset and size tell us where to find @@ -1809,6 +1811,12 @@ struct btrfs_ioctl_defrag_range_args {   */  #define BTRFS_EXTENT_ITEM_KEY	168 +/* + * The same as the BTRFS_EXTENT_ITEM_KEY, except it's metadata we already know + * the length, so we save the level in key->offset instead of the length. + */ +#define BTRFS_METADATA_ITEM_KEY	169 +  #define BTRFS_TREE_BLOCK_REF_KEY	176  #define BTRFS_EXTENT_DATA_REF_KEY	178 @@ -3006,7 +3014,7 @@ int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans,  int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len);  int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans,  			     struct btrfs_root *root, u64 bytenr, -			     u64 num_bytes, u64 *refs, u64 *flags); +			     u64 offset, int metadata, u64 *refs, u64 *flags);  int btrfs_pin_extent(struct btrfs_root *root,  		     u64 bytenr, u64 num, int reserved);  int btrfs_pin_extent_for_log_replay(struct btrfs_root *root, @@ -3669,6 +3677,16 @@ static inline void __btrfs_set_fs_incompat(struct btrfs_fs_info *fs_info,  	}  } +#define btrfs_fs_incompat(fs_info, opt) \ +	__btrfs_fs_incompat((fs_info), BTRFS_FEATURE_INCOMPAT_##opt) + +static inline int __btrfs_fs_incompat(struct btrfs_fs_info *fs_info, u64 flag) +{ +	struct btrfs_super_block *disk_super; +	disk_super = fs_info->super_copy; +	return !!(btrfs_super_incompat_flags(disk_super) & flag); +} +  /*   * Call btrfs_abort_transaction as early as possible when an error condition is   * detected, that way the exact line number is reported.  |