.. | .. |
---|
4 | 4 | |
---|
5 | 5 | #include <linux/btrfs.h> |
---|
6 | 6 | #include <linux/types.h> |
---|
| 7 | +#ifdef __KERNEL__ |
---|
| 8 | +#include <linux/stddef.h> |
---|
| 9 | +#else |
---|
| 10 | +#include <stddef.h> |
---|
| 11 | +#endif |
---|
7 | 12 | |
---|
8 | 13 | /* |
---|
9 | 14 | * This header contains the structure definitions and constants used |
---|
.. | .. |
---|
300 | 305 | #define BTRFS_CSUM_SIZE 32 |
---|
301 | 306 | |
---|
302 | 307 | /* 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 | +}; |
---|
304 | 314 | |
---|
305 | 315 | /* |
---|
306 | 316 | * flags definitions for directory entry item type |
---|
307 | 317 | * |
---|
308 | 318 | * Used by: |
---|
309 | 319 | * struct btrfs_dir_item.type |
---|
| 320 | + * |
---|
| 321 | + * Values 0..7 must match common file type values in fs_types.h. |
---|
310 | 322 | */ |
---|
311 | 323 | #define BTRFS_FT_UNKNOWN 0 |
---|
312 | 324 | #define BTRFS_FT_REG_FILE 1 |
---|
.. | .. |
---|
458 | 470 | #define BTRFS_SUPER_FLAG_METADUMP (1ULL << 33) |
---|
459 | 471 | #define BTRFS_SUPER_FLAG_METADUMP_V2 (1ULL << 34) |
---|
460 | 472 | #define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35) |
---|
| 473 | +#define BTRFS_SUPER_FLAG_CHANGING_FSID_V2 (1ULL << 36) |
---|
461 | 474 | |
---|
462 | 475 | |
---|
463 | 476 | /* |
---|
.. | .. |
---|
510 | 523 | __u8 type; |
---|
511 | 524 | __le64 offset; |
---|
512 | 525 | } __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 | | - |
---|
522 | 526 | |
---|
523 | 527 | /* dev extents record free space on individual devices. The owner |
---|
524 | 528 | * field points back to the chunk allocation mapping tree that allocated |
---|
.. | .. |
---|
646 | 650 | } __attribute__ ((__packed__)); |
---|
647 | 651 | |
---|
648 | 652 | /* |
---|
| 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 | +/* |
---|
649 | 662 | * this is used for both forward and backward root refs |
---|
650 | 663 | */ |
---|
651 | 664 | struct btrfs_root_ref { |
---|
.. | .. |
---|
732 | 745 | __le64 unused[4]; |
---|
733 | 746 | } __attribute__ ((__packed__)); |
---|
734 | 747 | |
---|
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 | +}; |
---|
739 | 754 | |
---|
740 | 755 | struct btrfs_file_extent_item { |
---|
741 | 756 | /* |
---|
.. | .. |
---|
803 | 818 | |
---|
804 | 819 | #define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0 |
---|
805 | 820 | #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 |
---|
811 | 821 | |
---|
812 | 822 | struct btrfs_dev_replace_item { |
---|
813 | 823 | /* |
---|
.. | .. |
---|
836 | 846 | #define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6) |
---|
837 | 847 | #define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7) |
---|
838 | 848 | #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8) |
---|
| 849 | +#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9) |
---|
| 850 | +#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10) |
---|
839 | 851 | #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \ |
---|
840 | 852 | BTRFS_SPACE_INFO_GLOBAL_RSV) |
---|
841 | 853 | |
---|
.. | .. |
---|
847 | 859 | BTRFS_RAID_SINGLE, |
---|
848 | 860 | BTRFS_RAID_RAID5, |
---|
849 | 861 | BTRFS_RAID_RAID6, |
---|
| 862 | + BTRFS_RAID_RAID1C3, |
---|
| 863 | + BTRFS_RAID_RAID1C4, |
---|
850 | 864 | BTRFS_NR_RAID_TYPES |
---|
851 | 865 | }; |
---|
852 | 866 | |
---|
.. | .. |
---|
856 | 870 | |
---|
857 | 871 | #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \ |
---|
858 | 872 | BTRFS_BLOCK_GROUP_RAID1 | \ |
---|
| 873 | + BTRFS_BLOCK_GROUP_RAID1C3 | \ |
---|
| 874 | + BTRFS_BLOCK_GROUP_RAID1C4 | \ |
---|
859 | 875 | BTRFS_BLOCK_GROUP_RAID5 | \ |
---|
860 | 876 | BTRFS_BLOCK_GROUP_RAID6 | \ |
---|
861 | 877 | BTRFS_BLOCK_GROUP_DUP | \ |
---|
862 | 878 | BTRFS_BLOCK_GROUP_RAID10) |
---|
863 | 879 | #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | \ |
---|
864 | 880 | 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) |
---|
865 | 885 | |
---|
866 | 886 | /* |
---|
867 | 887 | * We need a bit for restriper to be able to tell when chunks of type |
---|
.. | .. |
---|
907 | 927 | #define BTRFS_FREE_SPACE_USING_BITMAPS (1ULL << 0) |
---|
908 | 928 | |
---|
909 | 929 | #define BTRFS_QGROUP_LEVEL_SHIFT 48 |
---|
910 | | -static inline __u64 btrfs_qgroup_level(__u64 qgroupid) |
---|
| 930 | +static inline __u16 btrfs_qgroup_level(__u64 qgroupid) |
---|
911 | 931 | { |
---|
912 | | - return qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT; |
---|
| 932 | + return (__u16)(qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT); |
---|
913 | 933 | } |
---|
914 | 934 | |
---|
915 | 935 | /* |
---|