diff options
author | Chris Mason <chris.mason@oracle.com> | 2012-03-28 20:32:46 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2012-03-28 20:32:46 -0400 |
commit | 1c691b330a19a1344df89bcb0f4cacd99e8b289a (patch) | |
tree | b3143a9875a773d33b9b8f60e98c7e5fae003b6a /fs/btrfs/ctree.h | |
parent | 1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225 (diff) | |
parent | 213e64da90d14537cd63f7090d6c4d1fcc75d9f8 (diff) |
Merge branch 'for-chris' of git://github.com/idryomov/btrfs-unstable into for-linus
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r-- | fs/btrfs/ctree.h | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index ed2d196f7a84..5b8ef8eb3521 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -851,6 +851,21 @@ struct btrfs_csum_item { | |||
851 | */ | 851 | */ |
852 | #define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48) | 852 | #define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48) |
853 | 853 | ||
854 | #define BTRFS_EXTENDED_PROFILE_MASK (BTRFS_BLOCK_GROUP_PROFILE_MASK | \ | ||
855 | BTRFS_AVAIL_ALLOC_BIT_SINGLE) | ||
856 | |||
857 | static inline u64 chunk_to_extended(u64 flags) | ||
858 | { | ||
859 | if ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0) | ||
860 | flags |= BTRFS_AVAIL_ALLOC_BIT_SINGLE; | ||
861 | |||
862 | return flags; | ||
863 | } | ||
864 | static inline u64 extended_to_chunk(u64 flags) | ||
865 | { | ||
866 | return flags & ~BTRFS_AVAIL_ALLOC_BIT_SINGLE; | ||
867 | } | ||
868 | |||
854 | struct btrfs_block_group_item { | 869 | struct btrfs_block_group_item { |
855 | __le64 used; | 870 | __le64 used; |
856 | __le64 chunk_objectid; | 871 | __le64 chunk_objectid; |
@@ -2723,24 +2738,6 @@ static inline void free_fs_info(struct btrfs_fs_info *fs_info) | |||
2723 | kfree(fs_info->super_for_commit); | 2738 | kfree(fs_info->super_for_commit); |
2724 | kfree(fs_info); | 2739 | kfree(fs_info); |
2725 | } | 2740 | } |
2726 | /** | ||
2727 | * profile_is_valid - tests whether a given profile is valid and reduced | ||
2728 | * @flags: profile to validate | ||
2729 | * @extended: if true @flags is treated as an extended profile | ||
2730 | */ | ||
2731 | static inline int profile_is_valid(u64 flags, int extended) | ||
2732 | { | ||
2733 | u64 mask = ~BTRFS_BLOCK_GROUP_PROFILE_MASK; | ||
2734 | |||
2735 | flags &= ~BTRFS_BLOCK_GROUP_TYPE_MASK; | ||
2736 | if (extended) | ||
2737 | mask &= ~BTRFS_AVAIL_ALLOC_BIT_SINGLE; | ||
2738 | |||
2739 | if (flags & mask) | ||
2740 | return 0; | ||
2741 | /* true if zero or exactly one bit set */ | ||
2742 | return (flags & (~flags + 1)) == flags; | ||
2743 | } | ||
2744 | 2741 | ||
2745 | /* root-item.c */ | 2742 | /* root-item.c */ |
2746 | int btrfs_find_root_ref(struct btrfs_root *tree_root, | 2743 | int btrfs_find_root_ref(struct btrfs_root *tree_root, |