/* Generated by ./xlat/gen.sh from ./xlat/btrfs_space_info_flags.in; do not edit. */
#if !(defined(BTRFS_BLOCK_GROUP_DATA) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_DATA) && HAVE_DECL_BTRFS_BLOCK_GROUP_DATA))
# define BTRFS_BLOCK_GROUP_DATA (1ULL << 0)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_SYSTEM) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_SYSTEM) && HAVE_DECL_BTRFS_BLOCK_GROUP_SYSTEM))
# define BTRFS_BLOCK_GROUP_SYSTEM (1ULL << 1)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_METADATA) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_METADATA) && HAVE_DECL_BTRFS_BLOCK_GROUP_METADATA))
# define BTRFS_BLOCK_GROUP_METADATA (1ULL << 2)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_RAID0) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_RAID0) && HAVE_DECL_BTRFS_BLOCK_GROUP_RAID0))
# define BTRFS_BLOCK_GROUP_RAID0 (1ULL << 3)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_RAID1) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_RAID1) && HAVE_DECL_BTRFS_BLOCK_GROUP_RAID1))
# define BTRFS_BLOCK_GROUP_RAID1 (1ULL << 4)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_DUP) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_DUP) && HAVE_DECL_BTRFS_BLOCK_GROUP_DUP))
# define BTRFS_BLOCK_GROUP_DUP (1ULL << 5)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_RAID10) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_RAID10) && HAVE_DECL_BTRFS_BLOCK_GROUP_RAID10))
# define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_RAID5) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_RAID5) && HAVE_DECL_BTRFS_BLOCK_GROUP_RAID5))
# define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7)
#endif
#if !(defined(BTRFS_BLOCK_GROUP_RAID6) || (defined(HAVE_DECL_BTRFS_BLOCK_GROUP_RAID6) && HAVE_DECL_BTRFS_BLOCK_GROUP_RAID6))
# define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
#endif
#if !(defined(BTRFS_AVAIL_ALLOC_BIT_SINGLE) || (defined(HAVE_DECL_BTRFS_AVAIL_ALLOC_BIT_SINGLE) && HAVE_DECL_BTRFS_AVAIL_ALLOC_BIT_SINGLE))
# define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48)
#endif
#if !(defined(BTRFS_SPACE_INFO_GLOBAL_RSV) || (defined(HAVE_DECL_BTRFS_SPACE_INFO_GLOBAL_RSV) && HAVE_DECL_BTRFS_SPACE_INFO_GLOBAL_RSV))
# define BTRFS_SPACE_INFO_GLOBAL_RSV (1ULL << 49)
#endif

#ifdef IN_MPERS

extern const struct xlat btrfs_space_info_flags[];

#else

# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
# endif
const struct xlat btrfs_space_info_flags[] = {
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_DATA),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_SYSTEM),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_METADATA),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID0),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID1),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_DUP),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID10),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID5),
 XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID6),
 XLAT_TYPE(uint64_t, BTRFS_AVAIL_ALLOC_BIT_SINGLE),
 XLAT_TYPE(uint64_t, BTRFS_SPACE_INFO_GLOBAL_RSV),
 XLAT_END
};

#endif /* !IN_MPERS */
