diff options
Diffstat (limited to 'fs/btrfs/btrfs_inode.h')
| -rw-r--r-- | fs/btrfs/btrfs_inode.h | 27 | 
1 files changed, 26 insertions, 1 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index c652e19ad74e..76ee1452c57b 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -51,6 +51,13 @@ enum {  	 * the file range, inode's io_tree).  	 */  	BTRFS_INODE_NO_DELALLOC_FLUSH, +	/* +	 * Set when we are working on enabling verity for a file. Computing and +	 * writing the whole Merkle tree can take a while so we want to prevent +	 * races where two separate tasks attempt to simultaneously start verity +	 * on the same file. +	 */ +	BTRFS_INODE_VERITY_IN_PROGRESS,  };  /* in memory btrfs inode */ @@ -189,8 +196,10 @@ struct btrfs_inode {  	 */  	u64 csum_bytes; -	/* flags field from the on disk inode */ +	/* Backwards incompatible flags, lower half of inode_item::flags  */  	u32 flags; +	/* Read-only compatibility flags, upper half of inode_item::flags */ +	u32 ro_flags;  	/*  	 * Counters to keep track of the number of extent item's we may use due @@ -348,6 +357,22 @@ struct btrfs_dio_private {  	u8 csums[];  }; +/* + * btrfs_inode_item stores flags in a u64, btrfs_inode stores them in two + * separate u32s. These two functions convert between the two representations. + */ +static inline u64 btrfs_inode_combine_flags(u32 flags, u32 ro_flags) +{ +	return (flags | ((u64)ro_flags << 32)); +} + +static inline void btrfs_inode_split_flags(u64 inode_item_flags, +					   u32 *flags, u32 *ro_flags) +{ +	*flags = (u32)inode_item_flags; +	*ro_flags = (u32)(inode_item_flags >> 32); +} +  /* Array of bytes with variable length, hexadecimal format 0x1234 */  #define CSUM_FMT				"0x%*phN"  #define CSUM_FMT_VALUE(size, bytes)		size, bytes  |