hc
2024-01-04 1543e317f1da31b75942316931e8f491a8920811
kernel/include/uapi/linux/btrfs_tree.h
....@@ -4,6 +4,11 @@
44
55 #include <linux/btrfs.h>
66 #include <linux/types.h>
7
+#ifdef __KERNEL__
8
+#include <linux/stddef.h>
9
+#else
10
+#include <stddef.h>
11
+#endif
712
813 /*
914 * This header contains the structure definitions and constants used
....@@ -300,13 +305,20 @@
300305 #define BTRFS_CSUM_SIZE 32
301306
302307 /* csum types */
303
-#define BTRFS_CSUM_TYPE_CRC32 0
308
+enum btrfs_csum_type {
309
+ BTRFS_CSUM_TYPE_CRC32 = 0,
310
+ BTRFS_CSUM_TYPE_XXHASH = 1,
311
+ BTRFS_CSUM_TYPE_SHA256 = 2,
312
+ BTRFS_CSUM_TYPE_BLAKE2 = 3,
313
+};
304314
305315 /*
306316 * flags definitions for directory entry item type
307317 *
308318 * Used by:
309319 * struct btrfs_dir_item.type
320
+ *
321
+ * Values 0..7 must match common file type values in fs_types.h.
310322 */
311323 #define BTRFS_FT_UNKNOWN 0
312324 #define BTRFS_FT_REG_FILE 1
....@@ -458,6 +470,7 @@
458470 #define BTRFS_SUPER_FLAG_METADUMP (1ULL << 33)
459471 #define BTRFS_SUPER_FLAG_METADUMP_V2 (1ULL << 34)
460472 #define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35)
473
+#define BTRFS_SUPER_FLAG_CHANGING_FSID_V2 (1ULL << 36)
461474
462475
463476 /*
....@@ -510,15 +523,6 @@
510523 __u8 type;
511524 __le64 offset;
512525 } __attribute__ ((__packed__));
513
-
514
-/* old style backrefs item */
515
-struct btrfs_extent_ref_v0 {
516
- __le64 root;
517
- __le64 generation;
518
- __le64 objectid;
519
- __le32 count;
520
-} __attribute__ ((__packed__));
521
-
522526
523527 /* dev extents record free space on individual devices. The owner
524528 * field points back to the chunk allocation mapping tree that allocated
....@@ -646,6 +650,15 @@
646650 } __attribute__ ((__packed__));
647651
648652 /*
653
+ * Btrfs root item used to be smaller than current size. The old format ends
654
+ * at where member generation_v2 is.
655
+ */
656
+static inline __u32 btrfs_legacy_root_item_size(void)
657
+{
658
+ return offsetof(struct btrfs_root_item, generation_v2);
659
+}
660
+
661
+/*
649662 * this is used for both forward and backward root refs
650663 */
651664 struct btrfs_root_ref {
....@@ -732,10 +745,12 @@
732745 __le64 unused[4];
733746 } __attribute__ ((__packed__));
734747
735
-#define BTRFS_FILE_EXTENT_INLINE 0
736
-#define BTRFS_FILE_EXTENT_REG 1
737
-#define BTRFS_FILE_EXTENT_PREALLOC 2
738
-#define BTRFS_FILE_EXTENT_TYPES 2
748
+enum {
749
+ BTRFS_FILE_EXTENT_INLINE = 0,
750
+ BTRFS_FILE_EXTENT_REG = 1,
751
+ BTRFS_FILE_EXTENT_PREALLOC = 2,
752
+ BTRFS_NR_FILE_EXTENT_TYPES = 3,
753
+};
739754
740755 struct btrfs_file_extent_item {
741756 /*
....@@ -803,11 +818,6 @@
803818
804819 #define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
805820 #define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
806
-#define BTRFS_DEV_REPLACE_ITEM_STATE_NEVER_STARTED 0
807
-#define BTRFS_DEV_REPLACE_ITEM_STATE_STARTED 1
808
-#define BTRFS_DEV_REPLACE_ITEM_STATE_SUSPENDED 2
809
-#define BTRFS_DEV_REPLACE_ITEM_STATE_FINISHED 3
810
-#define BTRFS_DEV_REPLACE_ITEM_STATE_CANCELED 4
811821
812822 struct btrfs_dev_replace_item {
813823 /*
....@@ -836,6 +846,8 @@
836846 #define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
837847 #define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7)
838848 #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
849
+#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
850
+#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
839851 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \
840852 BTRFS_SPACE_INFO_GLOBAL_RSV)
841853
....@@ -847,6 +859,8 @@
847859 BTRFS_RAID_SINGLE,
848860 BTRFS_RAID_RAID5,
849861 BTRFS_RAID_RAID6,
862
+ BTRFS_RAID_RAID1C3,
863
+ BTRFS_RAID_RAID1C4,
850864 BTRFS_NR_RAID_TYPES
851865 };
852866
....@@ -856,12 +870,18 @@
856870
857871 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \
858872 BTRFS_BLOCK_GROUP_RAID1 | \
873
+ BTRFS_BLOCK_GROUP_RAID1C3 | \
874
+ BTRFS_BLOCK_GROUP_RAID1C4 | \
859875 BTRFS_BLOCK_GROUP_RAID5 | \
860876 BTRFS_BLOCK_GROUP_RAID6 | \
861877 BTRFS_BLOCK_GROUP_DUP | \
862878 BTRFS_BLOCK_GROUP_RAID10)
863879 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | \
864880 BTRFS_BLOCK_GROUP_RAID6)
881
+
882
+#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1 | \
883
+ BTRFS_BLOCK_GROUP_RAID1C3 | \
884
+ BTRFS_BLOCK_GROUP_RAID1C4)
865885
866886 /*
867887 * We need a bit for restriper to be able to tell when chunks of type
....@@ -907,9 +927,9 @@
907927 #define BTRFS_FREE_SPACE_USING_BITMAPS (1ULL << 0)
908928
909929 #define BTRFS_QGROUP_LEVEL_SHIFT 48
910
-static inline __u64 btrfs_qgroup_level(__u64 qgroupid)
930
+static inline __u16 btrfs_qgroup_level(__u64 qgroupid)
911931 {
912
- return qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT;
932
+ return (__u16)(qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT);
913933 }
914934
915935 /*