/* Generated by ./xlat/gen.sh from ./xlat/btrfs_defrag_flags.in; do not edit. */

#ifdef IN_MPERS

extern const struct xlat btrfs_defrag_flags[];

#else

# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
# endif
const struct xlat btrfs_defrag_flags[] = {
#if defined(BTRFS_DEFRAG_RANGE_COMPRESS) || (defined(HAVE_DECL_BTRFS_DEFRAG_RANGE_COMPRESS) && HAVE_DECL_BTRFS_DEFRAG_RANGE_COMPRESS)
  XLAT_TYPE(uint64_t, BTRFS_DEFRAG_RANGE_COMPRESS),
#endif
#if defined(BTRFS_DEFRAG_RANGE_START_IO) || (defined(HAVE_DECL_BTRFS_DEFRAG_RANGE_START_IO) && HAVE_DECL_BTRFS_DEFRAG_RANGE_START_IO)
  XLAT_TYPE(uint64_t, BTRFS_DEFRAG_RANGE_START_IO),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
