/* Maximum length of compressed data stored on disk */
 #define BTRFS_MAX_COMPRESSED           (SZ_128K)
+static_assert((BTRFS_MAX_COMPRESSED % PAGE_SIZE) == 0);
+
 /* Maximum size of data before compression */
 #define BTRFS_MAX_UNCOMPRESSED         (SZ_128K)
 
 
 static inline u##bits btrfs_##name(const struct extent_buffer *eb,     \
                                   const type *s)                       \
 {                                                                      \
-       BUILD_BUG_ON(sizeof(u##bits) != sizeof(((type *)0))->member);   \
+       static_assert(sizeof(u##bits) == sizeof(((type *)0))->member);  \
        return btrfs_get_##bits(eb, s, offsetof(type, member));         \
 }                                                                      \
 static inline void btrfs_set_##name(const struct extent_buffer *eb, type *s, \
                                    u##bits val)                        \
 {                                                                      \
-       BUILD_BUG_ON(sizeof(u##bits) != sizeof(((type *)0))->member);   \
+       static_assert(sizeof(u##bits) == sizeof(((type *)0))->member);  \
        btrfs_set_##bits(eb, s, offsetof(type, member), val);           \
 }                                                                      \
 static inline u##bits btrfs_token_##name(struct btrfs_map_token *token,        \
                                         const type *s)                 \
 {                                                                      \
-       BUILD_BUG_ON(sizeof(u##bits) != sizeof(((type *)0))->member);   \
+       static_assert(sizeof(u##bits) == sizeof(((type *)0))->member);  \
        return btrfs_get_token_##bits(token, s, offsetof(type, member));\
 }                                                                      \
 static inline void btrfs_set_token_##name(struct btrfs_map_token *token,\
                                          type *s, u##bits val)         \
 {                                                                      \
-       BUILD_BUG_ON(sizeof(u##bits) != sizeof(((type *)0))->member);   \
+       static_assert(sizeof(u##bits) == sizeof(((type *)0))->member);  \
        btrfs_set_token_##bits(token, s, offsetof(type, member), val);  \
 }
 
 static inline u64 btrfs_device_total_bytes(const struct extent_buffer *eb,
                                           struct btrfs_dev_item *s)
 {
-       BUILD_BUG_ON(sizeof(u64) !=
-                    sizeof(((struct btrfs_dev_item *)0))->total_bytes);
+       static_assert(sizeof(u64) ==
+                     sizeof(((struct btrfs_dev_item *)0))->total_bytes);
        return btrfs_get_64(eb, s, offsetof(struct btrfs_dev_item,
                                            total_bytes));
 }
                                                struct btrfs_dev_item *s,
                                                u64 val)
 {
-       BUILD_BUG_ON(sizeof(u64) !=
-                    sizeof(((struct btrfs_dev_item *)0))->total_bytes);
+       static_assert(sizeof(u64) ==
+                     sizeof(((struct btrfs_dev_item *)0))->total_bytes);
        WARN_ON(!IS_ALIGNED(val, eb->fs_info->sectorsize));
        btrfs_set_64(eb, s, offsetof(struct btrfs_dev_item, total_bytes), val);
 }
 
 again:
        will_compress = 0;
        nr_pages = (end >> PAGE_SHIFT) - (start >> PAGE_SHIFT) + 1;
-       BUILD_BUG_ON((BTRFS_MAX_COMPRESSED % PAGE_SIZE) != 0);
        nr_pages = min_t(unsigned long, nr_pages,
                        BTRFS_MAX_COMPRESSED / PAGE_SIZE);
 
        return inode;
 }
 
+static_assert(BTRFS_FT_UNKNOWN == FT_UNKNOWN);
+static_assert(BTRFS_FT_REG_FILE == FT_REG_FILE);
+static_assert(BTRFS_FT_DIR == FT_DIR);
+static_assert(BTRFS_FT_CHRDEV == FT_CHRDEV);
+static_assert(BTRFS_FT_BLKDEV == FT_BLKDEV);
+static_assert(BTRFS_FT_FIFO == FT_FIFO);
+static_assert(BTRFS_FT_SOCK == FT_SOCK);
+static_assert(BTRFS_FT_SYMLINK == FT_SYMLINK);
+
 static inline u8 btrfs_inode_type(struct inode *inode)
 {
-       /*
-        * Compile-time asserts that generic FT_* types still match
-        * BTRFS_FT_* types
-        */
-       BUILD_BUG_ON(BTRFS_FT_UNKNOWN != FT_UNKNOWN);
-       BUILD_BUG_ON(BTRFS_FT_REG_FILE != FT_REG_FILE);
-       BUILD_BUG_ON(BTRFS_FT_DIR != FT_DIR);
-       BUILD_BUG_ON(BTRFS_FT_CHRDEV != FT_CHRDEV);
-       BUILD_BUG_ON(BTRFS_FT_BLKDEV != FT_BLKDEV);
-       BUILD_BUG_ON(BTRFS_FT_FIFO != FT_FIFO);
-       BUILD_BUG_ON(BTRFS_FT_SOCK != FT_SOCK);
-       BUILD_BUG_ON(BTRFS_FT_SYMLINK != FT_SYMLINK);
-
        return fs_umode_to_ftype(inode->i_mode);
 }
 
 
 }
 
 #define CLUSTER_SIZE   (SZ_256K)
+static_assert(IS_ALIGNED(CLUSTER_SIZE, PAGE_SIZE));
 
 /*
  * Defrag one contiguous target range.
        LIST_HEAD(target_list);
        int ret;
 
-       BUILD_BUG_ON(!IS_ALIGNED(CLUSTER_SIZE, PAGE_SIZE));
        ret = defrag_collect_targets(inode, start, len, extent_thresh,
                                     newer_than, do_compress, false,
                                     &target_list, NULL);
                u64 last_scanned = cur;
                u64 cluster_end;
 
-               /* The cluster size 256K should always be page aligned */
-               BUILD_BUG_ON(!IS_ALIGNED(CLUSTER_SIZE, PAGE_SIZE));
-
                if (btrfs_defrag_cancelled(fs_info)) {
                        ret = -EAGAIN;
                        break;
 
 static char btrfs_unknown_feature_names[FEAT_MAX][NUM_FEATURE_BITS][BTRFS_FEATURE_NAME_MAX];
 static struct btrfs_feature_attr btrfs_feature_attrs[FEAT_MAX][NUM_FEATURE_BITS];
 
+static_assert(ARRAY_SIZE(btrfs_unknown_feature_names) ==
+             ARRAY_SIZE(btrfs_feature_attrs));
+static_assert(ARRAY_SIZE(btrfs_unknown_feature_names[0]) ==
+             ARRAY_SIZE(btrfs_feature_attrs[0]));
+
 static const u64 supported_feature_masks[FEAT_MAX] = {
        [FEAT_COMPAT]    = BTRFS_FEATURE_COMPAT_SUPP,
        [FEAT_COMPAT_RO] = BTRFS_FEATURE_COMPAT_RO_SUPP,
        struct btrfs_feature_attr *fa;
        int set, i;
 
-       BUILD_BUG_ON(ARRAY_SIZE(btrfs_unknown_feature_names) !=
-                    ARRAY_SIZE(btrfs_feature_attrs));
-       BUILD_BUG_ON(ARRAY_SIZE(btrfs_unknown_feature_names[0]) !=
-                    ARRAY_SIZE(btrfs_feature_attrs[0]));
-
        memset(btrfs_feature_attrs, 0, sizeof(btrfs_feature_attrs));
        memset(btrfs_unknown_feature_names, 0,
               sizeof(btrfs_unknown_feature_names));