source: bootcd/isolinux/syslinux-6.03/extlinux/btrfs.h @ 26ffad7

Last change on this file since 26ffad7 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 4.8 KB
Line 
1#ifndef _BTRFS_H_
2#define _BTRFS_H_
3
4#include <asm/types.h>
5#include <linux/ioctl.h>
6
7#define BTRFS_SUPER_MAGIC 0x9123683E
8#define BTRFS_SUPER_INFO_OFFSET (64 * 1024)
9#define BTRFS_SUPER_INFO_SIZE 4096
10#define BTRFS_MAGIC "_BHRfS_M"
11#define BTRFS_MAGIC_L 8
12#define BTRFS_CSUM_SIZE 32
13#define BTRFS_FSID_SIZE 16
14#define BTRFS_UUID_SIZE 16
15
16/* Fixed areas reserved for the boot loader */
17#define BTRFS_BOOT_AREA_A_OFFSET        0
18#define BTRFS_BOOT_AREA_A_SIZE          BTRFS_SUPER_INFO_OFFSET
19#define BTRFS_BOOT_AREA_B_OFFSET        (256 * 1024)
20#define BTRFS_BOOT_AREA_B_SIZE          ((1024-256) * 1024)
21
22typedef __u64 u64;
23typedef __u32 u32;
24typedef __u16 u16;
25typedef __u8 u8;
26typedef u64 __le64;
27typedef u16 __le16;
28
29#define BTRFS_ROOT_BACKREF_KEY  144
30#define BTRFS_ROOT_TREE_DIR_OBJECTID 6ULL
31#define BTRFS_DIR_ITEM_KEY      84
32
33/*
34 *  * this is used for both forward and backward root refs
35 *   */
36struct btrfs_root_ref {
37        __le64 dirid;
38        __le64 sequence;
39        __le16 name_len;
40} __attribute__ ((__packed__));
41
42struct btrfs_disk_key {
43        __le64 objectid;
44        u8 type;
45        __le64 offset;
46} __attribute__ ((__packed__));
47
48struct btrfs_dir_item {
49        struct btrfs_disk_key location;
50        __le64 transid;
51        __le16 data_len;
52        __le16 name_len;
53        u8 type;
54} __attribute__ ((__packed__));
55
56struct btrfs_super_block {
57        uint8_t csum[32];
58        uint8_t fsid[16];
59        uint64_t bytenr;
60        uint64_t flags;
61        uint8_t magic[8];
62        uint64_t generation;
63        uint64_t root;
64        uint64_t chunk_root;
65        uint64_t log_root;
66        uint64_t log_root_transid;
67        uint64_t total_bytes;
68        uint64_t bytes_used;
69        uint64_t root_dir_objectid;
70        uint64_t num_devices;
71        uint32_t sectorsize;
72        uint32_t nodesize;
73        uint32_t leafsize;
74        uint32_t stripesize;
75        uint32_t sys_chunk_array_size;
76        uint64_t chunk_root_generation;
77        uint64_t compat_flags;
78        uint64_t compat_ro_flags;
79        uint64_t incompat_flags;
80        uint16_t csum_type;
81        uint8_t root_level;
82        uint8_t chunk_root_level;
83        uint8_t log_root_level;
84        struct btrfs_dev_item {
85                uint64_t devid;
86                uint64_t total_bytes;
87                uint64_t bytes_used;
88                uint32_t io_align;
89                uint32_t io_width;
90                uint32_t sector_size;
91                uint64_t type;
92                uint64_t generation;
93                uint64_t start_offset;
94                uint32_t dev_group;
95                uint8_t seek_speed;
96                uint8_t bandwidth;
97                uint8_t uuid[16];
98                uint8_t fsid[16];
99        } __attribute__ ((__packed__)) dev_item;
100        uint8_t label[256];
101} __attribute__ ((__packed__));
102
103#define BTRFS_IOCTL_MAGIC 0x94
104#define BTRFS_VOL_NAME_MAX 255
105#define BTRFS_PATH_NAME_MAX 4087
106
107struct btrfs_ioctl_vol_args {
108        __s64 fd;
109        char name[BTRFS_PATH_NAME_MAX + 1];
110};
111
112struct btrfs_ioctl_search_key {
113        /* which root are we searching.  0 is the tree of tree roots */
114        __u64 tree_id;
115
116        /* keys returned will be >= min and <= max */
117        __u64 min_objectid;
118        __u64 max_objectid;
119
120        /* keys returned will be >= min and <= max */
121        __u64 min_offset;
122        __u64 max_offset;
123
124        /* max and min transids to search for */
125        __u64 min_transid;
126        __u64 max_transid;
127
128        /* keys returned will be >= min and <= max */
129        __u32 min_type;
130        __u32 max_type;
131
132        /*
133         * how many items did userland ask for, and how many are we
134         * returning
135         */
136        __u32 nr_items;
137
138        /* align to 64 bits */
139        __u32 unused;
140
141        /* some extra for later */
142        __u64 unused1;
143        __u64 unused2;
144        __u64 unused3;
145        __u64 unused4;
146};
147
148struct btrfs_ioctl_search_header {
149        __u64 transid;
150        __u64 objectid;
151        __u64 offset;
152        __u32 type;
153        __u32 len;
154} __attribute__((may_alias));
155
156#define BTRFS_DEVICE_PATH_NAME_MAX 1024
157struct btrfs_ioctl_dev_info_args {
158        __u64 devid;                            /* in/out */
159        __u8 uuid[BTRFS_UUID_SIZE];             /* in/out */
160        __u64 bytes_used;                       /* out */
161        __u64 total_bytes;                      /* out */
162        __u64 unused[379];                      /* pad to 4k */
163        __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];  /* out */
164};
165
166struct btrfs_ioctl_fs_info_args {
167        __u64 max_id;                           /* out */
168        __u64 num_devices;                      /* out */
169        __u8 fsid[BTRFS_FSID_SIZE];             /* out */
170        __u64 reserved[124];                    /* pad to 1k */
171};
172
173#define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key))
174/*
175 * the buf is an array of search headers where
176 * each header is followed by the actual item
177 * the type field is expanded to 32 bits for alignment
178 */
179struct btrfs_ioctl_search_args {
180        struct btrfs_ioctl_search_key key;
181        char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
182};
183
184#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, \
185                                   struct btrfs_ioctl_search_args)
186#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \
187                                 struct btrfs_ioctl_dev_info_args)
188#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, \
189                               struct btrfs_ioctl_fs_info_args)
190
191#endif
Note: See TracBrowser for help on using the repository browser.