btrfs-progs: test/convert: Add test case for invalid large inline data extent
[platform/upstream/btrfs-progs.git] / mkfs / common.h
index 2a18839..f6b60c2 100644 (file)
 #include "kerncompat.h"
 #include "common-defs.h"
 
+#define BTRFS_MKFS_SYSTEM_GROUP_SIZE SZ_4M
+#define BTRFS_MKFS_SMALL_VOLUME_SIZE SZ_1G
+
+/*
+ * Tree root blocks created during mkfs
+ */
+enum btrfs_mkfs_block {
+       MKFS_SUPER_BLOCK = 0,
+       MKFS_ROOT_TREE,
+       MKFS_EXTENT_TREE,
+       MKFS_CHUNK_TREE,
+       MKFS_DEV_TREE,
+       MKFS_FS_TREE,
+       MKFS_CSUM_TREE,
+       MKFS_BLOCK_COUNT
+};
+
 struct btrfs_mkfs_config {
-       char *label;
-       char fs_uuid[BTRFS_UUID_UNPARSED_SIZE];
-       char chunk_uuid[BTRFS_UUID_UNPARSED_SIZE];
-       u64 blocks[8];
-       u64 num_bytes;
+       /* Label of the new filesystem */
+       const char *label;
+       /* Blck sizes */
        u32 nodesize;
        u32 sectorsize;
        u32 stripesize;
+       /* Bitfield of incompat features, BTRFS_FEATURE_INCOMPAT_* */
        u64 features;
+       /* Size of the filesystem in bytes */
+       u64 num_bytes;
+
+       /* Output fields, set during creation */
+
+       /* Logical addresses of superblock [0] and other tree roots */
+       u64 blocks[MKFS_BLOCK_COUNT + 1];
+       char fs_uuid[BTRFS_UUID_UNPARSED_SIZE];
+       char chunk_uuid[BTRFS_UUID_UNPARSED_SIZE];
 
-       /* Super bytenr after make_btrfs */
+       /* Superblock offset after make_btrfs */
        u64 super_bytenr;
 };
 
 int make_btrfs(int fd, struct btrfs_mkfs_config *cfg);
+u64 btrfs_min_dev_size(u32 nodesize, int mixed, u64 meta_profile,
+                      u64 data_profile);
+int test_minimum_size(const char *file, u64 min_dev_size);
+int is_vol_small(const char *file);
+int test_num_disk_vs_raid(u64 metadata_profile, u64 data_profile,
+       u64 dev_cnt, int mixed, int ssd);
+int test_status_for_mkfs(const char *file, bool force_overwrite);
+int test_dev_for_mkfs(const char *file, int force_overwrite);
 
 #endif