aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ctree.h
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2012-03-28 20:32:46 -0400
committerChris Mason <chris.mason@oracle.com>2012-03-28 20:32:46 -0400
commit1c691b330a19a1344df89bcb0f4cacd99e8b289a (patch)
treeb3143a9875a773d33b9b8f60e98c7e5fae003b6a /fs/btrfs/ctree.h
parent1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225 (diff)
parent213e64da90d14537cd63f7090d6c4d1fcc75d9f8 (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.h33
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
857static 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}
864static inline u64 extended_to_chunk(u64 flags)
865{
866 return flags & ~BTRFS_AVAIL_ALLOC_BIT_SINGLE;
867}
868
854struct btrfs_block_group_item { 869struct 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 */
2731static 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 */
2746int btrfs_find_root_ref(struct btrfs_root *tree_root, 2743int btrfs_find_root_ref(struct btrfs_root *tree_root,