lwext4_rs/
lwext4.rs

1/* automatically generated by rust-bindgen 0.72.1 */
2
3#[repr(C)]
4#[derive(Default)]
5pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
6impl<T> __IncompleteArrayField<T> {
7    #[inline]
8    pub const fn new() -> Self {
9        __IncompleteArrayField(::std::marker::PhantomData, [])
10    }
11    #[inline]
12    pub fn as_ptr(&self) -> *const T {
13        self as *const _ as *const T
14    }
15    #[inline]
16    pub fn as_mut_ptr(&mut self) -> *mut T {
17        self as *mut _ as *mut T
18    }
19    #[inline]
20    pub unsafe fn as_slice(&self, len: usize) -> &[T] {
21        ::std::slice::from_raw_parts(self.as_ptr(), len)
22    }
23    #[inline]
24    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
25        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
26    }
27}
28impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
29    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
30        fmt.write_str("__IncompleteArrayField")
31    }
32}
33pub const F_SET_EXT2: u32 = 2;
34pub const F_SET_EXT3: u32 = 3;
35pub const F_SET_EXT4: u32 = 4;
36pub const CONFIG_EXT_FEATURE_SET_LVL: u32 = 4;
37pub const CONFIG_JOURNALING_ENABLE: u32 = 1;
38pub const CONFIG_XATTR_ENABLE: u32 = 1;
39pub const CONFIG_EXTENTS_ENABLE: u32 = 1;
40pub const CONFIG_HAVE_OWN_ERRNO: u32 = 0;
41pub const CONFIG_DEBUG_PRINTF: u32 = 1;
42pub const CONFIG_DEBUG_ASSERT: u32 = 1;
43pub const CONFIG_HAVE_OWN_ASSERT: u32 = 1;
44pub const CONFIG_BLOCK_DEV_ENABLE_STATS: u32 = 1;
45pub const CONFIG_BLOCK_DEV_CACHE_SIZE: u32 = 32;
46pub const CONFIG_EXT4_MAX_BLOCKDEV_NAME: u32 = 32;
47pub const CONFIG_EXT4_BLOCKDEVS_COUNT: u32 = 2;
48pub const CONFIG_EXT4_MAX_MP_NAME: u32 = 32;
49pub const CONFIG_EXT4_MOUNTPOINTS_COUNT: u32 = 2;
50pub const CONFIG_HAVE_OWN_OFLAGS: u32 = 1;
51pub const CONFIG_MAX_TRUNCATE_SIZE: u32 = 16777216;
52pub const CONFIG_UNALIGNED_ACCESS: u32 = 0;
53pub const CONFIG_USE_USER_MALLOC: u32 = 0;
54pub const __bool_true_false_are_defined: u32 = 1;
55pub const true_: u32 = 1;
56pub const false_: u32 = 0;
57pub const SPLAY_NEGINF: i32 = -1;
58pub const SPLAY_INF: u32 = 1;
59pub const RB_BLACK: u32 = 0;
60pub const RB_RED: u32 = 1;
61pub const RB_NEGINF: i32 = -1;
62pub const RB_INF: u32 = 1;
63pub const EXT4_CHECKSUM_CRC32C: u32 = 1;
64pub const UUID_SIZE: u32 = 16;
65pub const EXT4_SUPERBLOCK_MAGIC: u32 = 61267;
66pub const EXT4_SUPERBLOCK_SIZE: u32 = 1024;
67pub const EXT4_SUPERBLOCK_OFFSET: u32 = 1024;
68pub const EXT4_SUPERBLOCK_OS_LINUX: u32 = 0;
69pub const EXT4_SUPERBLOCK_OS_HURD: u32 = 1;
70pub const EXT4_SUPERBLOCK_FLAGS_SIGNED_HASH: u32 = 1;
71pub const EXT4_SUPERBLOCK_FLAGS_UNSIGNED_HASH: u32 = 2;
72pub const EXT4_SUPERBLOCK_FLAGS_TEST_FILESYS: u32 = 4;
73pub const EXT4_SUPERBLOCK_STATE_VALID_FS: u32 = 1;
74pub const EXT4_SUPERBLOCK_STATE_ERROR_FS: u32 = 2;
75pub const EXT4_SUPERBLOCK_STATE_ORPHAN_FS: u32 = 4;
76pub const EXT4_SUPERBLOCK_ERRORS_CONTINUE: u32 = 1;
77pub const EXT4_SUPERBLOCK_ERRORS_RO: u32 = 2;
78pub const EXT4_SUPERBLOCK_ERRORS_PANIC: u32 = 3;
79pub const EXT4_FCOM_DIR_PREALLOC: u32 = 1;
80pub const EXT4_FCOM_IMAGIC_INODES: u32 = 2;
81pub const EXT4_FCOM_HAS_JOURNAL: u32 = 4;
82pub const EXT4_FCOM_EXT_ATTR: u32 = 8;
83pub const EXT4_FCOM_RESIZE_INODE: u32 = 16;
84pub const EXT4_FCOM_DIR_INDEX: u32 = 32;
85pub const EXT4_FRO_COM_SPARSE_SUPER: u32 = 1;
86pub const EXT4_FRO_COM_LARGE_FILE: u32 = 2;
87pub const EXT4_FRO_COM_BTREE_DIR: u32 = 4;
88pub const EXT4_FRO_COM_HUGE_FILE: u32 = 8;
89pub const EXT4_FRO_COM_GDT_CSUM: u32 = 16;
90pub const EXT4_FRO_COM_DIR_NLINK: u32 = 32;
91pub const EXT4_FRO_COM_EXTRA_ISIZE: u32 = 64;
92pub const EXT4_FRO_COM_QUOTA: u32 = 256;
93pub const EXT4_FRO_COM_BIGALLOC: u32 = 512;
94pub const EXT4_FRO_COM_METADATA_CSUM: u32 = 1024;
95pub const EXT4_FINCOM_COMPRESSION: u32 = 1;
96pub const EXT4_FINCOM_FILETYPE: u32 = 2;
97pub const EXT4_FINCOM_RECOVER: u32 = 4;
98pub const EXT4_FINCOM_JOURNAL_DEV: u32 = 8;
99pub const EXT4_FINCOM_META_BG: u32 = 16;
100pub const EXT4_FINCOM_EXTENTS: u32 = 64;
101pub const EXT4_FINCOM_64BIT: u32 = 128;
102pub const EXT4_FINCOM_MMP: u32 = 256;
103pub const EXT4_FINCOM_FLEX_BG: u32 = 512;
104pub const EXT4_FINCOM_EA_INODE: u32 = 1024;
105pub const EXT4_FINCOM_DIRDATA: u32 = 4096;
106pub const EXT4_FINCOM_BG_USE_META_CSUM: u32 = 8192;
107pub const EXT4_FINCOM_LARGEDIR: u32 = 16384;
108pub const EXT4_FINCOM_INLINE_DATA: u32 = 32768;
109pub const EXT2_SUPPORTED_FCOM: u32 = 0;
110pub const EXT2_SUPPORTED_FINCOM: u32 = 18;
111pub const EXT2_SUPPORTED_FRO_COM: u32 = 3;
112pub const EXT3_SUPPORTED_FCOM: u32 = 32;
113pub const EXT3_SUPPORTED_FINCOM: u32 = 18;
114pub const EXT3_SUPPORTED_FRO_COM: u32 = 3;
115pub const EXT4_SUPPORTED_FCOM: u32 = 32;
116pub const EXT4_SUPPORTED_FINCOM: u32 = 722;
117pub const EXT4_SUPPORTED_FRO_COM: u32 = 1147;
118pub const EXT_FINCOM_IGNORED: u32 = 260;
119pub const EXT4_BLOCK_GROUP_INODE_UNINIT: u32 = 1;
120pub const EXT4_BLOCK_GROUP_BLOCK_UNINIT: u32 = 2;
121pub const EXT4_BLOCK_GROUP_ITABLE_ZEROED: u32 = 4;
122pub const EXT4_MIN_BLOCK_GROUP_DESCRIPTOR_SIZE: u32 = 32;
123pub const EXT4_MAX_BLOCK_GROUP_DESCRIPTOR_SIZE: u32 = 64;
124pub const EXT4_MIN_BLOCK_SIZE: u32 = 1024;
125pub const EXT4_MAX_BLOCK_SIZE: u32 = 65536;
126pub const EXT4_REV0_INODE_SIZE: u32 = 128;
127pub const EXT4_INODE_BLOCK_SIZE: u32 = 512;
128pub const EXT4_INODE_DIRECT_BLOCK_COUNT: u32 = 12;
129pub const EXT4_INODE_INDIRECT_BLOCK: u32 = 12;
130pub const EXT4_INODE_DOUBLE_INDIRECT_BLOCK: u32 = 13;
131pub const EXT4_INODE_TRIPPLE_INDIRECT_BLOCK: u32 = 14;
132pub const EXT4_INODE_BLOCKS: u32 = 15;
133pub const EXT4_INODE_INDIRECT_BLOCK_COUNT: u32 = 3;
134pub const EXT4_INODE_MODE_FIFO: u32 = 4096;
135pub const EXT4_INODE_MODE_CHARDEV: u32 = 8192;
136pub const EXT4_INODE_MODE_DIRECTORY: u32 = 16384;
137pub const EXT4_INODE_MODE_BLOCKDEV: u32 = 24576;
138pub const EXT4_INODE_MODE_FILE: u32 = 32768;
139pub const EXT4_INODE_MODE_SOFTLINK: u32 = 40960;
140pub const EXT4_INODE_MODE_SOCKET: u32 = 49152;
141pub const EXT4_INODE_MODE_TYPE_MASK: u32 = 61440;
142pub const EXT4_INODE_FLAG_SECRM: u32 = 1;
143pub const EXT4_INODE_FLAG_UNRM: u32 = 2;
144pub const EXT4_INODE_FLAG_COMPR: u32 = 4;
145pub const EXT4_INODE_FLAG_SYNC: u32 = 8;
146pub const EXT4_INODE_FLAG_IMMUTABLE: u32 = 16;
147pub const EXT4_INODE_FLAG_APPEND: u32 = 32;
148pub const EXT4_INODE_FLAG_NODUMP: u32 = 64;
149pub const EXT4_INODE_FLAG_NOATIME: u32 = 128;
150pub const EXT4_INODE_FLAG_DIRTY: u32 = 256;
151pub const EXT4_INODE_FLAG_COMPRBLK: u32 = 512;
152pub const EXT4_INODE_FLAG_NOCOMPR: u32 = 1024;
153pub const EXT4_INODE_FLAG_ECOMPR: u32 = 2048;
154pub const EXT4_INODE_FLAG_INDEX: u32 = 4096;
155pub const EXT4_INODE_FLAG_IMAGIC: u32 = 8192;
156pub const EXT4_INODE_FLAG_JOURNAL_DATA: u32 = 16384;
157pub const EXT4_INODE_FLAG_NOTAIL: u32 = 32768;
158pub const EXT4_INODE_FLAG_DIRSYNC: u32 = 65536;
159pub const EXT4_INODE_FLAG_TOPDIR: u32 = 131072;
160pub const EXT4_INODE_FLAG_HUGE_FILE: u32 = 262144;
161pub const EXT4_INODE_FLAG_EXTENTS: u32 = 524288;
162pub const EXT4_INODE_FLAG_EA_INODE: u32 = 2097152;
163pub const EXT4_INODE_FLAG_EOFBLOCKS: u32 = 4194304;
164pub const EXT4_INODE_FLAG_RESERVED: u32 = 2147483648;
165pub const EXT4_INODE_ROOT_INDEX: u32 = 2;
166pub const EXT4_DIRECTORY_FILENAME_LEN: u32 = 255;
167pub const EXT4_DIRENTRY_DIR_CSUM: u32 = 222;
168pub const EXT4_ERR_BAD_DX_DIR: i32 = -25000;
169pub const EXT4_LINK_MAX: u32 = 65000;
170pub const EXT4_BAD_INO: u32 = 1;
171pub const EXT4_ROOT_INO: u32 = 2;
172pub const EXT4_BOOT_LOADER_INO: u32 = 5;
173pub const EXT4_UNDEL_DIR_INO: u32 = 6;
174pub const EXT4_RESIZE_INO: u32 = 7;
175pub const EXT4_JOURNAL_INO: u32 = 8;
176pub const EXT4_GOOD_OLD_FIRST_INO: u32 = 11;
177pub const EXT2_HTREE_LEGACY: u32 = 0;
178pub const EXT2_HTREE_HALF_MD4: u32 = 1;
179pub const EXT2_HTREE_TEA: u32 = 2;
180pub const EXT2_HTREE_LEGACY_UNSIGNED: u32 = 3;
181pub const EXT2_HTREE_HALF_MD4_UNSIGNED: u32 = 4;
182pub const EXT2_HTREE_TEA_UNSIGNED: u32 = 5;
183pub const EXT2_HTREE_EOF: u32 = 2147483647;
184pub const EXT4_GOOD_OLD_INODE_SIZE: u32 = 128;
185pub const JBD_MAGIC_NUMBER: u32 = 3225106840;
186pub const JBD_DESCRIPTOR_BLOCK: u32 = 1;
187pub const JBD_COMMIT_BLOCK: u32 = 2;
188pub const JBD_SUPERBLOCK: u32 = 3;
189pub const JBD_SUPERBLOCK_V2: u32 = 4;
190pub const JBD_REVOKE_BLOCK: u32 = 5;
191pub const JBD_CRC32_CHKSUM: u32 = 1;
192pub const JBD_MD5_CHKSUM: u32 = 2;
193pub const JBD_SHA1_CHKSUM: u32 = 3;
194pub const JBD_CRC32C_CHKSUM: u32 = 4;
195pub const JBD_CRC32_CHKSUM_SIZE: u32 = 4;
196pub const JBD_FLAG_ESCAPE: u32 = 1;
197pub const JBD_FLAG_SAME_UUID: u32 = 2;
198pub const JBD_FLAG_DELETED: u32 = 4;
199pub const JBD_FLAG_LAST_TAG: u32 = 8;
200pub const JBD_USERS_MAX: u32 = 48;
201pub const JBD_USERS_SIZE: u32 = 768;
202pub const JBD_FEATURE_COMPAT_CHECKSUM: u32 = 1;
203pub const JBD_FEATURE_INCOMPAT_REVOKE: u32 = 1;
204pub const JBD_FEATURE_INCOMPAT_64BIT: u32 = 2;
205pub const JBD_FEATURE_INCOMPAT_ASYNC_COMMIT: u32 = 4;
206pub const JBD_FEATURE_INCOMPAT_CSUM_V2: u32 = 8;
207pub const JBD_FEATURE_INCOMPAT_CSUM_V3: u32 = 16;
208pub const JBD_KNOWN_COMPAT_FEATURES: u32 = 0;
209pub const JBD_KNOWN_ROCOMPAT_FEATURES: u32 = 0;
210pub const JBD_KNOWN_INCOMPAT_FEATURES: u32 = 31;
211pub const EXT4_CRC32_INIT: u32 = 4294967295;
212pub const EPERM: u32 = 1;
213pub const ENOENT: u32 = 2;
214pub const ESRCH: u32 = 3;
215pub const EINTR: u32 = 4;
216pub const EIO: u32 = 5;
217pub const ENXIO: u32 = 6;
218pub const E2BIG: u32 = 7;
219pub const ENOEXEC: u32 = 8;
220pub const EBADF: u32 = 9;
221pub const ECHILD: u32 = 10;
222pub const EAGAIN: u32 = 11;
223pub const ENOMEM: u32 = 12;
224pub const EACCES: u32 = 13;
225pub const EFAULT: u32 = 14;
226pub const ENOTBLK: u32 = 15;
227pub const EBUSY: u32 = 16;
228pub const EEXIST: u32 = 17;
229pub const EXDEV: u32 = 18;
230pub const ENODEV: u32 = 19;
231pub const ENOTDIR: u32 = 20;
232pub const EISDIR: u32 = 21;
233pub const EINVAL: u32 = 22;
234pub const ENFILE: u32 = 23;
235pub const EMFILE: u32 = 24;
236pub const ENOTTY: u32 = 25;
237pub const ETXTBSY: u32 = 26;
238pub const EFBIG: u32 = 27;
239pub const ENOSPC: u32 = 28;
240pub const ESPIPE: u32 = 29;
241pub const EROFS: u32 = 30;
242pub const EMLINK: u32 = 31;
243pub const EPIPE: u32 = 32;
244pub const EDOM: u32 = 33;
245pub const ERANGE: u32 = 34;
246pub const EDEADLK: u32 = 35;
247pub const ENAMETOOLONG: u32 = 36;
248pub const ENOLCK: u32 = 37;
249pub const ENOSYS: u32 = 38;
250pub const ENOTEMPTY: u32 = 39;
251pub const ELOOP: u32 = 40;
252pub const EWOULDBLOCK: u32 = 11;
253pub const ENOMSG: u32 = 42;
254pub const EIDRM: u32 = 43;
255pub const ECHRNG: u32 = 44;
256pub const EL2NSYNC: u32 = 45;
257pub const EL3HLT: u32 = 46;
258pub const EL3RST: u32 = 47;
259pub const ELNRNG: u32 = 48;
260pub const EUNATCH: u32 = 49;
261pub const ENOCSI: u32 = 50;
262pub const EL2HLT: u32 = 51;
263pub const EBADE: u32 = 52;
264pub const EBADR: u32 = 53;
265pub const EXFULL: u32 = 54;
266pub const ENOANO: u32 = 55;
267pub const EBADRQC: u32 = 56;
268pub const EBADSLT: u32 = 57;
269pub const EDEADLOCK: u32 = 35;
270pub const EBFONT: u32 = 59;
271pub const ENOSTR: u32 = 60;
272pub const ENODATA: u32 = 61;
273pub const ETIME: u32 = 62;
274pub const ENOSR: u32 = 63;
275pub const ENONET: u32 = 64;
276pub const ENOPKG: u32 = 65;
277pub const EREMOTE: u32 = 66;
278pub const ENOLINK: u32 = 67;
279pub const EADV: u32 = 68;
280pub const ESRMNT: u32 = 69;
281pub const ECOMM: u32 = 70;
282pub const EPROTO: u32 = 71;
283pub const EMULTIHOP: u32 = 72;
284pub const EDOTDOT: u32 = 73;
285pub const EBADMSG: u32 = 74;
286pub const EOVERFLOW: u32 = 75;
287pub const ENOTUNIQ: u32 = 76;
288pub const EBADFD: u32 = 77;
289pub const EREMCHG: u32 = 78;
290pub const ELIBACC: u32 = 79;
291pub const ELIBBAD: u32 = 80;
292pub const ELIBSCN: u32 = 81;
293pub const ELIBMAX: u32 = 82;
294pub const ELIBEXEC: u32 = 83;
295pub const EILSEQ: u32 = 84;
296pub const ERESTART: u32 = 85;
297pub const ESTRPIPE: u32 = 86;
298pub const EUSERS: u32 = 87;
299pub const ENOTSOCK: u32 = 88;
300pub const EDESTADDRREQ: u32 = 89;
301pub const EMSGSIZE: u32 = 90;
302pub const EPROTOTYPE: u32 = 91;
303pub const ENOPROTOOPT: u32 = 92;
304pub const EPROTONOSUPPORT: u32 = 93;
305pub const ESOCKTNOSUPPORT: u32 = 94;
306pub const EOPNOTSUPP: u32 = 95;
307pub const ENOTSUP: u32 = 95;
308pub const EPFNOSUPPORT: u32 = 96;
309pub const EAFNOSUPPORT: u32 = 97;
310pub const EADDRINUSE: u32 = 98;
311pub const EADDRNOTAVAIL: u32 = 99;
312pub const ENETDOWN: u32 = 100;
313pub const ENETUNREACH: u32 = 101;
314pub const ENETRESET: u32 = 102;
315pub const ECONNABORTED: u32 = 103;
316pub const ECONNRESET: u32 = 104;
317pub const ENOBUFS: u32 = 105;
318pub const EISCONN: u32 = 106;
319pub const ENOTCONN: u32 = 107;
320pub const ESHUTDOWN: u32 = 108;
321pub const ETOOMANYREFS: u32 = 109;
322pub const ETIMEDOUT: u32 = 110;
323pub const ECONNREFUSED: u32 = 111;
324pub const EHOSTDOWN: u32 = 112;
325pub const EHOSTUNREACH: u32 = 113;
326pub const EALREADY: u32 = 114;
327pub const EINPROGRESS: u32 = 115;
328pub const ESTALE: u32 = 116;
329pub const EUCLEAN: u32 = 117;
330pub const ENOTNAM: u32 = 118;
331pub const ENAVAIL: u32 = 119;
332pub const EISNAM: u32 = 120;
333pub const EREMOTEIO: u32 = 121;
334pub const EDQUOT: u32 = 122;
335pub const ENOMEDIUM: u32 = 123;
336pub const EMEDIUMTYPE: u32 = 124;
337pub const ECANCELED: u32 = 125;
338pub const ENOKEY: u32 = 126;
339pub const EKEYEXPIRED: u32 = 127;
340pub const EKEYREVOKED: u32 = 128;
341pub const EKEYREJECTED: u32 = 129;
342pub const EOWNERDEAD: u32 = 130;
343pub const ENOTRECOVERABLE: u32 = 131;
344pub const ERFKILL: u32 = 132;
345pub const EHWPOISON: u32 = 133;
346pub const EIEIO: u32 = 4095;
347pub const EOK: u32 = 0;
348pub const O_RDONLY: u32 = 0;
349pub const O_WRONLY: u32 = 1;
350pub const O_RDWR: u32 = 2;
351pub const O_CREAT: u32 = 64;
352pub const O_EXCL: u32 = 128;
353pub const O_TRUNC: u32 = 512;
354pub const O_APPEND: u32 = 1024;
355pub const SEEK_SET: u32 = 0;
356pub const SEEK_CUR: u32 = 1;
357pub const SEEK_END: u32 = 2;
358pub const __PRI64: &[u8; 2] = b"l\0";
359pub const __PRIPTR: &[u8; 2] = b"l\0";
360pub const PRId8: &[u8; 2] = b"d\0";
361pub const PRIi8: &[u8; 2] = b"i\0";
362pub const PRIdLEAST8: &[u8; 2] = b"d\0";
363pub const PRIiLEAST8: &[u8; 2] = b"i\0";
364pub const PRIdFAST8: &[u8; 2] = b"d\0";
365pub const PRIiFAST8: &[u8; 2] = b"i\0";
366pub const PRId16: &[u8; 2] = b"d\0";
367pub const PRIi16: &[u8; 2] = b"i\0";
368pub const PRIdLEAST16: &[u8; 2] = b"d\0";
369pub const PRIiLEAST16: &[u8; 2] = b"i\0";
370pub const PRIdFAST16: &[u8; 3] = b"ld\0";
371pub const PRIiFAST16: &[u8; 3] = b"li\0";
372pub const PRId32: &[u8; 2] = b"d\0";
373pub const PRIi32: &[u8; 2] = b"i\0";
374pub const PRIdLEAST32: &[u8; 2] = b"d\0";
375pub const PRIiLEAST32: &[u8; 2] = b"i\0";
376pub const PRIdFAST32: &[u8; 3] = b"ld\0";
377pub const PRIiFAST32: &[u8; 3] = b"li\0";
378pub const PRId64: &[u8; 3] = b"ld\0";
379pub const PRIi64: &[u8; 3] = b"li\0";
380pub const PRIdLEAST64: &[u8; 3] = b"ld\0";
381pub const PRIiLEAST64: &[u8; 3] = b"li\0";
382pub const PRIdFAST64: &[u8; 3] = b"ld\0";
383pub const PRIiFAST64: &[u8; 3] = b"li\0";
384pub const PRIdMAX: &[u8; 3] = b"ld\0";
385pub const PRIiMAX: &[u8; 3] = b"li\0";
386pub const PRIdPTR: &[u8; 3] = b"ld\0";
387pub const PRIiPTR: &[u8; 3] = b"li\0";
388pub const PRIo8: &[u8; 2] = b"o\0";
389pub const PRIu8: &[u8; 2] = b"u\0";
390pub const PRIx8: &[u8; 2] = b"x\0";
391pub const PRIX8: &[u8; 2] = b"X\0";
392pub const PRIoLEAST8: &[u8; 2] = b"o\0";
393pub const PRIuLEAST8: &[u8; 2] = b"u\0";
394pub const PRIxLEAST8: &[u8; 2] = b"x\0";
395pub const PRIXLEAST8: &[u8; 2] = b"X\0";
396pub const PRIoFAST8: &[u8; 2] = b"o\0";
397pub const PRIuFAST8: &[u8; 2] = b"u\0";
398pub const PRIxFAST8: &[u8; 2] = b"x\0";
399pub const PRIXFAST8: &[u8; 2] = b"X\0";
400pub const PRIo16: &[u8; 2] = b"o\0";
401pub const PRIu16: &[u8; 2] = b"u\0";
402pub const PRIx16: &[u8; 2] = b"x\0";
403pub const PRIX16: &[u8; 2] = b"X\0";
404pub const PRIoLEAST16: &[u8; 2] = b"o\0";
405pub const PRIuLEAST16: &[u8; 2] = b"u\0";
406pub const PRIxLEAST16: &[u8; 2] = b"x\0";
407pub const PRIXLEAST16: &[u8; 2] = b"X\0";
408pub const PRIoFAST16: &[u8; 3] = b"lo\0";
409pub const PRIuFAST16: &[u8; 3] = b"lu\0";
410pub const PRIxFAST16: &[u8; 3] = b"lx\0";
411pub const PRIXFAST16: &[u8; 3] = b"lX\0";
412pub const PRIo32: &[u8; 2] = b"o\0";
413pub const PRIu32: &[u8; 2] = b"u\0";
414pub const PRIx32: &[u8; 2] = b"x\0";
415pub const PRIX32: &[u8; 2] = b"X\0";
416pub const PRIoLEAST32: &[u8; 2] = b"o\0";
417pub const PRIuLEAST32: &[u8; 2] = b"u\0";
418pub const PRIxLEAST32: &[u8; 2] = b"x\0";
419pub const PRIXLEAST32: &[u8; 2] = b"X\0";
420pub const PRIoFAST32: &[u8; 3] = b"lo\0";
421pub const PRIuFAST32: &[u8; 3] = b"lu\0";
422pub const PRIxFAST32: &[u8; 3] = b"lx\0";
423pub const PRIXFAST32: &[u8; 3] = b"lX\0";
424pub const PRIo64: &[u8; 3] = b"lo\0";
425pub const PRIu64: &[u8; 3] = b"lu\0";
426pub const PRIx64: &[u8; 3] = b"lx\0";
427pub const PRIX64: &[u8; 3] = b"lX\0";
428pub const PRIoLEAST64: &[u8; 3] = b"lo\0";
429pub const PRIuLEAST64: &[u8; 3] = b"lu\0";
430pub const PRIxLEAST64: &[u8; 3] = b"lx\0";
431pub const PRIXLEAST64: &[u8; 3] = b"lX\0";
432pub const PRIoFAST64: &[u8; 3] = b"lo\0";
433pub const PRIuFAST64: &[u8; 3] = b"lu\0";
434pub const PRIxFAST64: &[u8; 3] = b"lx\0";
435pub const PRIXFAST64: &[u8; 3] = b"lX\0";
436pub const PRIoMAX: &[u8; 3] = b"lo\0";
437pub const PRIuMAX: &[u8; 3] = b"lu\0";
438pub const PRIxMAX: &[u8; 3] = b"lx\0";
439pub const PRIXMAX: &[u8; 3] = b"lX\0";
440pub const PRIoPTR: &[u8; 3] = b"lo\0";
441pub const PRIuPTR: &[u8; 3] = b"lu\0";
442pub const PRIxPTR: &[u8; 3] = b"lx\0";
443pub const PRIXPTR: &[u8; 3] = b"lX\0";
444pub const SCNu32: &[u8; 2] = b"u\0";
445pub const SCNu64: &[u8; 3] = b"lu\0";
446pub const SCNuMAX: &[u8; 3] = b"lu\0";
447pub const SCNx16: &[u8; 3] = b"hx\0";
448pub const SCNx32: &[u8; 2] = b"x\0";
449pub const SCNx64: &[u8; 3] = b"lx\0";
450pub const SCNxMAX: &[u8; 3] = b"lx\0";
451pub const SCNi8: &[u8; 4] = b"hhi\0";
452pub const SCNxPTR: &[u8; 3] = b"lx\0";
453pub const SCNi64: &[u8; 3] = b"li\0";
454pub const SCNd32: &[u8; 2] = b"d\0";
455pub const SCNd64: &[u8; 3] = b"ld\0";
456pub const SCNdFAST64: &[u8; 3] = b"ld\0";
457pub const SCNu16: &[u8; 3] = b"hu\0";
458pub const DEBUG_BALLOC: u32 = 1;
459pub const DEBUG_BCACHE: u32 = 2;
460pub const DEBUG_BITMAP: u32 = 4;
461pub const DEBUG_BLOCK_GROUP: u32 = 8;
462pub const DEBUG_BLOCKDEV: u32 = 16;
463pub const DEBUG_DIR_IDX: u32 = 32;
464pub const DEBUG_DIR: u32 = 64;
465pub const DEBUG_EXTENT: u32 = 128;
466pub const DEBUG_FS: u32 = 256;
467pub const DEBUG_HASH: u32 = 512;
468pub const DEBUG_IALLOC: u32 = 1024;
469pub const DEBUG_INODE: u32 = 2048;
470pub const DEBUG_SUPER: u32 = 4096;
471pub const DEBUG_XATTR: u32 = 8192;
472pub const DEBUG_MKFS: u32 = 16384;
473pub const DEBUG_EXT4: u32 = 32768;
474pub const DEBUG_JBD: u32 = 65536;
475pub const DEBUG_MBR: u32 = 131072;
476pub const DEBUG_NOPREFIX: u32 = 2147483648;
477pub const DEBUG_ALL: u32 = 4294967295;
478pub const DBG_NONE: &[u8; 1] = b"\0";
479pub const DBG_INFO: &[u8; 9] = b"[info]  \0";
480pub const DBG_WARN: &[u8; 9] = b"[warn]  \0";
481pub const DBG_ERROR: &[u8; 9] = b"[error] \0";
482pub const SEEK_DATA: u32 = 3;
483pub const SEEK_HOLE: u32 = 4;
484pub const __MLIBC_BSD_OPTION: u32 = 1;
485pub const __MLIBC_POSIX_OPTION: u32 = 1;
486pub const __MLIBC_LINUX_OPTION: u32 = 0;
487pub const __MLIBC_GLIBC_OPTION: u32 = 1;
488pub const __MLIBC_SYSDEP_HAS_BITS_SYSCALL_H: u32 = 0;
489pub const __MLIBC_EOF_BIT: u32 = 1;
490pub const __MLIBC_ERROR_BIT: u32 = 2;
491pub const _IOFBF: u32 = 1;
492pub const _IOLBF: u32 = 2;
493pub const _IONBF: u32 = 3;
494pub const BUFSIZ: u32 = 512;
495pub const EOF: i32 = -1;
496pub const FOPEN_MAX: u32 = 1024;
497pub const FILENAME_MAX: u32 = 256;
498pub const L_tmpnam: u32 = 256;
499pub const TMP_MAX: u32 = 1024;
500pub const P_tmpdir: &[u8; 5] = b"/tmp\0";
501pub const RENAME_EXCHANGE: u32 = 2;
502pub type __mlibc_uint8 = ::std::os::raw::c_uchar;
503pub type __mlibc_uint16 = ::std::os::raw::c_ushort;
504pub type __mlibc_uint32 = ::std::os::raw::c_uint;
505pub type __mlibc_uint64 = ::std::os::raw::c_ulong;
506pub type __mlibc_int8 = ::std::os::raw::c_schar;
507pub type __mlibc_int16 = ::std::os::raw::c_short;
508pub type __mlibc_int32 = ::std::os::raw::c_int;
509pub type __mlibc_int64 = ::std::os::raw::c_long;
510pub type __mlibc_int_fast8 = __mlibc_int8;
511pub type __mlibc_int_fast16 = __mlibc_int64;
512pub type __mlibc_int_fast32 = __mlibc_int64;
513pub type __mlibc_int_fast64 = __mlibc_int64;
514pub type __mlibc_uint_fast8 = __mlibc_uint8;
515pub type __mlibc_uint_fast16 = __mlibc_uint64;
516pub type __mlibc_uint_fast32 = __mlibc_uint64;
517pub type __mlibc_uint_fast64 = __mlibc_uint64;
518pub type __mlibc_intmax = ::std::os::raw::c_long;
519pub type __mlibc_intptr = ::std::os::raw::c_long;
520pub type __mlibc_ptrdiff = ::std::os::raw::c_long;
521pub type __mlibc_uintmax = ::std::os::raw::c_ulong;
522pub type __mlibc_uintptr = ::std::os::raw::c_ulong;
523pub type __mlibc_size = ::std::os::raw::c_ulong;
524pub type int_least8_t = __mlibc_int8;
525pub type int_least16_t = __mlibc_int16;
526pub type int_least32_t = __mlibc_int32;
527pub type int_least64_t = __mlibc_int64;
528pub type uint_least8_t = __mlibc_uint8;
529pub type uint_least16_t = __mlibc_uint16;
530pub type uint_least32_t = __mlibc_uint32;
531pub type uint_least64_t = __mlibc_uint64;
532pub type int_fast8_t = __mlibc_int_fast8;
533pub type int_fast16_t = __mlibc_int_fast16;
534pub type int_fast32_t = __mlibc_int_fast32;
535pub type int_fast64_t = __mlibc_int_fast64;
536pub type uint_fast8_t = __mlibc_uint_fast8;
537pub type uint_fast16_t = __mlibc_uint_fast16;
538pub type uint_fast32_t = __mlibc_uint_fast32;
539pub type uint_fast64_t = __mlibc_uint_fast64;
540pub type intmax_t = __mlibc_intmax;
541pub type uintmax_t = __mlibc_uintmax;
542pub type wchar_t = ::std::os::raw::c_int;
543#[repr(C)]
544#[repr(align(16))]
545#[derive(Debug, Copy, Clone)]
546pub struct max_align_t {
547    pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
548    pub __bindgen_padding_0: u64,
549    pub __clang_max_align_nonce2: u128,
550}
551#[allow(clippy::unnecessary_operation, clippy::identity_op)]
552const _: () = {
553    ["Size of max_align_t"][::std::mem::size_of::<max_align_t>() - 32usize];
554    ["Alignment of max_align_t"][::std::mem::align_of::<max_align_t>() - 16usize];
555    ["Offset of field: max_align_t::__clang_max_align_nonce1"]
556        [::std::mem::offset_of!(max_align_t, __clang_max_align_nonce1) - 0usize];
557    ["Offset of field: max_align_t::__clang_max_align_nonce2"]
558        [::std::mem::offset_of!(max_align_t, __clang_max_align_nonce2) - 16usize];
559};
560#[doc = "@brief   Single block descriptor"]
561#[repr(C)]
562#[derive(Debug, Copy, Clone)]
563pub struct ext4_block {
564    #[doc = "@brief   Logical block ID"]
565    pub lb_id: u64,
566    #[doc = "@brief   Buffer"]
567    pub buf: *mut ext4_buf,
568    #[doc = "@brief   Data buffer."]
569    pub data: *mut u8,
570}
571#[allow(clippy::unnecessary_operation, clippy::identity_op)]
572const _: () = {
573    ["Size of ext4_block"][::std::mem::size_of::<ext4_block>() - 24usize];
574    ["Alignment of ext4_block"][::std::mem::align_of::<ext4_block>() - 8usize];
575    ["Offset of field: ext4_block::lb_id"][::std::mem::offset_of!(ext4_block, lb_id) - 0usize];
576    ["Offset of field: ext4_block::buf"][::std::mem::offset_of!(ext4_block, buf) - 8usize];
577    ["Offset of field: ext4_block::data"][::std::mem::offset_of!(ext4_block, data) - 16usize];
578};
579pub const bcache_state_bits_BC_UPTODATE: bcache_state_bits = 0;
580pub const bcache_state_bits_BC_DIRTY: bcache_state_bits = 1;
581pub const bcache_state_bits_BC_FLUSH: bcache_state_bits = 2;
582pub const bcache_state_bits_BC_TMP: bcache_state_bits = 3;
583#[doc = "@brief buffer state bits\n\n  - BC_UPTODATE: Buffer contains valid data.\n  - BC_DIRTY: Buffer is dirty.\n  - BC_FLUSH: Buffer will be immediately flushed,\n              when no one references it.\n  - BC_TMP: Buffer will be dropped once its refctr\n            reaches zero."]
584pub type bcache_state_bits = ::std::os::raw::c_uint;
585#[doc = "@brief   Single block descriptor"]
586#[repr(C)]
587#[derive(Debug, Copy, Clone)]
588pub struct ext4_buf {
589    #[doc = "@brief   Flags"]
590    pub flags: [::std::os::raw::c_char; 4usize],
591    #[doc = "@brief   Logical block address"]
592    pub lba: u64,
593    #[doc = "@brief   Data buffer."]
594    pub data: *mut u8,
595    #[doc = "@brief   LRU priority. (unused)"]
596    pub lru_prio: u32,
597    #[doc = "@brief   LRU id."]
598    pub lru_id: u32,
599    #[doc = "@brief   Reference count table"]
600    pub refctr: u32,
601    #[doc = "@brief   The block cache this buffer belongs to."]
602    pub bc: *mut ext4_bcache,
603    #[doc = "@brief   Whether or not buffer is on dirty list."]
604    pub on_dirty_list: bool,
605    #[doc = "@brief   LBA tree node"]
606    pub lba_node: ext4_buf__bindgen_ty_1,
607    #[doc = "@brief   LRU tree node"]
608    pub lru_node: ext4_buf__bindgen_ty_2,
609    #[doc = "@brief   Dirty list node"]
610    pub dirty_node: ext4_buf__bindgen_ty_3,
611    #[doc = "@brief   Callback routine after a disk-write operation.\n @param   bc block cache descriptor\n @param   buf buffer descriptor\n @param   standard error code returned by bdev->bwrite()\n @param   arg argument passed to this routine"]
612    pub end_write: ::std::option::Option<
613        unsafe extern "C" fn(
614            bc: *mut ext4_bcache,
615            buf: *mut ext4_buf,
616            res: ::std::os::raw::c_int,
617            arg: *mut ::std::os::raw::c_void,
618        ),
619    >,
620    #[doc = "@brief   argument passed to end_write() callback."]
621    pub end_write_arg: *mut ::std::os::raw::c_void,
622}
623#[doc = "@brief   LBA tree node"]
624#[repr(C)]
625#[derive(Debug, Copy, Clone)]
626pub struct ext4_buf__bindgen_ty_1 {
627    pub rbe_left: *mut ext4_buf,
628    pub rbe_right: *mut ext4_buf,
629    pub rbe_parent: *mut ext4_buf,
630    pub rbe_color: ::std::os::raw::c_int,
631}
632#[allow(clippy::unnecessary_operation, clippy::identity_op)]
633const _: () = {
634    ["Size of ext4_buf__bindgen_ty_1"][::std::mem::size_of::<ext4_buf__bindgen_ty_1>() - 32usize];
635    ["Alignment of ext4_buf__bindgen_ty_1"]
636        [::std::mem::align_of::<ext4_buf__bindgen_ty_1>() - 8usize];
637    ["Offset of field: ext4_buf__bindgen_ty_1::rbe_left"]
638        [::std::mem::offset_of!(ext4_buf__bindgen_ty_1, rbe_left) - 0usize];
639    ["Offset of field: ext4_buf__bindgen_ty_1::rbe_right"]
640        [::std::mem::offset_of!(ext4_buf__bindgen_ty_1, rbe_right) - 8usize];
641    ["Offset of field: ext4_buf__bindgen_ty_1::rbe_parent"]
642        [::std::mem::offset_of!(ext4_buf__bindgen_ty_1, rbe_parent) - 16usize];
643    ["Offset of field: ext4_buf__bindgen_ty_1::rbe_color"]
644        [::std::mem::offset_of!(ext4_buf__bindgen_ty_1, rbe_color) - 24usize];
645};
646#[doc = "@brief   LRU tree node"]
647#[repr(C)]
648#[derive(Debug, Copy, Clone)]
649pub struct ext4_buf__bindgen_ty_2 {
650    pub rbe_left: *mut ext4_buf,
651    pub rbe_right: *mut ext4_buf,
652    pub rbe_parent: *mut ext4_buf,
653    pub rbe_color: ::std::os::raw::c_int,
654}
655#[allow(clippy::unnecessary_operation, clippy::identity_op)]
656const _: () = {
657    ["Size of ext4_buf__bindgen_ty_2"][::std::mem::size_of::<ext4_buf__bindgen_ty_2>() - 32usize];
658    ["Alignment of ext4_buf__bindgen_ty_2"]
659        [::std::mem::align_of::<ext4_buf__bindgen_ty_2>() - 8usize];
660    ["Offset of field: ext4_buf__bindgen_ty_2::rbe_left"]
661        [::std::mem::offset_of!(ext4_buf__bindgen_ty_2, rbe_left) - 0usize];
662    ["Offset of field: ext4_buf__bindgen_ty_2::rbe_right"]
663        [::std::mem::offset_of!(ext4_buf__bindgen_ty_2, rbe_right) - 8usize];
664    ["Offset of field: ext4_buf__bindgen_ty_2::rbe_parent"]
665        [::std::mem::offset_of!(ext4_buf__bindgen_ty_2, rbe_parent) - 16usize];
666    ["Offset of field: ext4_buf__bindgen_ty_2::rbe_color"]
667        [::std::mem::offset_of!(ext4_buf__bindgen_ty_2, rbe_color) - 24usize];
668};
669#[doc = "@brief   Dirty list node"]
670#[repr(C)]
671#[derive(Debug, Copy, Clone)]
672pub struct ext4_buf__bindgen_ty_3 {
673    pub sle_next: *mut ext4_buf,
674}
675#[allow(clippy::unnecessary_operation, clippy::identity_op)]
676const _: () = {
677    ["Size of ext4_buf__bindgen_ty_3"][::std::mem::size_of::<ext4_buf__bindgen_ty_3>() - 8usize];
678    ["Alignment of ext4_buf__bindgen_ty_3"]
679        [::std::mem::align_of::<ext4_buf__bindgen_ty_3>() - 8usize];
680    ["Offset of field: ext4_buf__bindgen_ty_3::sle_next"]
681        [::std::mem::offset_of!(ext4_buf__bindgen_ty_3, sle_next) - 0usize];
682};
683#[allow(clippy::unnecessary_operation, clippy::identity_op)]
684const _: () = {
685    ["Size of ext4_buf"][::std::mem::size_of::<ext4_buf>() - 144usize];
686    ["Alignment of ext4_buf"][::std::mem::align_of::<ext4_buf>() - 8usize];
687    ["Offset of field: ext4_buf::flags"][::std::mem::offset_of!(ext4_buf, flags) - 0usize];
688    ["Offset of field: ext4_buf::lba"][::std::mem::offset_of!(ext4_buf, lba) - 8usize];
689    ["Offset of field: ext4_buf::data"][::std::mem::offset_of!(ext4_buf, data) - 16usize];
690    ["Offset of field: ext4_buf::lru_prio"][::std::mem::offset_of!(ext4_buf, lru_prio) - 24usize];
691    ["Offset of field: ext4_buf::lru_id"][::std::mem::offset_of!(ext4_buf, lru_id) - 28usize];
692    ["Offset of field: ext4_buf::refctr"][::std::mem::offset_of!(ext4_buf, refctr) - 32usize];
693    ["Offset of field: ext4_buf::bc"][::std::mem::offset_of!(ext4_buf, bc) - 40usize];
694    ["Offset of field: ext4_buf::on_dirty_list"]
695        [::std::mem::offset_of!(ext4_buf, on_dirty_list) - 48usize];
696    ["Offset of field: ext4_buf::lba_node"][::std::mem::offset_of!(ext4_buf, lba_node) - 56usize];
697    ["Offset of field: ext4_buf::lru_node"][::std::mem::offset_of!(ext4_buf, lru_node) - 88usize];
698    ["Offset of field: ext4_buf::dirty_node"]
699        [::std::mem::offset_of!(ext4_buf, dirty_node) - 120usize];
700    ["Offset of field: ext4_buf::end_write"]
701        [::std::mem::offset_of!(ext4_buf, end_write) - 128usize];
702    ["Offset of field: ext4_buf::end_write_arg"]
703        [::std::mem::offset_of!(ext4_buf, end_write_arg) - 136usize];
704};
705#[doc = "@brief   Block cache descriptor"]
706#[repr(C)]
707#[derive(Debug, Copy, Clone)]
708pub struct ext4_bcache {
709    #[doc = "@brief   Item count in block cache"]
710    pub cnt: u32,
711    #[doc = "@brief   Item size in block cache"]
712    pub itemsize: u32,
713    #[doc = "@brief   Last recently used counter"]
714    pub lru_ctr: u32,
715    #[doc = "@brief   Currently referenced datablocks"]
716    pub ref_blocks: u32,
717    #[doc = "@brief   Maximum referenced datablocks"]
718    pub max_ref_blocks: u32,
719    #[doc = "@brief   The blockdev binded to this block cache"]
720    pub bdev: *mut ext4_blockdev,
721    #[doc = "@brief   The cache should not be shaked"]
722    pub dont_shake: bool,
723    #[doc = "@brief   A tree holding all bufs"]
724    pub lba_root: ext4_bcache_ext4_buf_lba,
725    #[doc = "@brief   A tree holding unreferenced bufs"]
726    pub lru_root: ext4_bcache_ext4_buf_lru,
727    #[doc = "@brief   A singly-linked list holding dirty buffers"]
728    pub dirty_list: ext4_bcache_ext4_buf_dirty,
729}
730#[doc = "@brief   A tree holding all bufs"]
731#[repr(C)]
732#[derive(Debug, Copy, Clone)]
733pub struct ext4_bcache_ext4_buf_lba {
734    pub rbh_root: *mut ext4_buf,
735}
736#[allow(clippy::unnecessary_operation, clippy::identity_op)]
737const _: () = {
738    ["Size of ext4_bcache_ext4_buf_lba"]
739        [::std::mem::size_of::<ext4_bcache_ext4_buf_lba>() - 8usize];
740    ["Alignment of ext4_bcache_ext4_buf_lba"]
741        [::std::mem::align_of::<ext4_bcache_ext4_buf_lba>() - 8usize];
742    ["Offset of field: ext4_bcache_ext4_buf_lba::rbh_root"]
743        [::std::mem::offset_of!(ext4_bcache_ext4_buf_lba, rbh_root) - 0usize];
744};
745#[doc = "@brief   A tree holding unreferenced bufs"]
746#[repr(C)]
747#[derive(Debug, Copy, Clone)]
748pub struct ext4_bcache_ext4_buf_lru {
749    pub rbh_root: *mut ext4_buf,
750}
751#[allow(clippy::unnecessary_operation, clippy::identity_op)]
752const _: () = {
753    ["Size of ext4_bcache_ext4_buf_lru"]
754        [::std::mem::size_of::<ext4_bcache_ext4_buf_lru>() - 8usize];
755    ["Alignment of ext4_bcache_ext4_buf_lru"]
756        [::std::mem::align_of::<ext4_bcache_ext4_buf_lru>() - 8usize];
757    ["Offset of field: ext4_bcache_ext4_buf_lru::rbh_root"]
758        [::std::mem::offset_of!(ext4_bcache_ext4_buf_lru, rbh_root) - 0usize];
759};
760#[doc = "@brief   A singly-linked list holding dirty buffers"]
761#[repr(C)]
762#[derive(Debug, Copy, Clone)]
763pub struct ext4_bcache_ext4_buf_dirty {
764    pub slh_first: *mut ext4_buf,
765}
766#[allow(clippy::unnecessary_operation, clippy::identity_op)]
767const _: () = {
768    ["Size of ext4_bcache_ext4_buf_dirty"]
769        [::std::mem::size_of::<ext4_bcache_ext4_buf_dirty>() - 8usize];
770    ["Alignment of ext4_bcache_ext4_buf_dirty"]
771        [::std::mem::align_of::<ext4_bcache_ext4_buf_dirty>() - 8usize];
772    ["Offset of field: ext4_bcache_ext4_buf_dirty::slh_first"]
773        [::std::mem::offset_of!(ext4_bcache_ext4_buf_dirty, slh_first) - 0usize];
774};
775#[allow(clippy::unnecessary_operation, clippy::identity_op)]
776const _: () = {
777    ["Size of ext4_bcache"][::std::mem::size_of::<ext4_bcache>() - 64usize];
778    ["Alignment of ext4_bcache"][::std::mem::align_of::<ext4_bcache>() - 8usize];
779    ["Offset of field: ext4_bcache::cnt"][::std::mem::offset_of!(ext4_bcache, cnt) - 0usize];
780    ["Offset of field: ext4_bcache::itemsize"]
781        [::std::mem::offset_of!(ext4_bcache, itemsize) - 4usize];
782    ["Offset of field: ext4_bcache::lru_ctr"]
783        [::std::mem::offset_of!(ext4_bcache, lru_ctr) - 8usize];
784    ["Offset of field: ext4_bcache::ref_blocks"]
785        [::std::mem::offset_of!(ext4_bcache, ref_blocks) - 12usize];
786    ["Offset of field: ext4_bcache::max_ref_blocks"]
787        [::std::mem::offset_of!(ext4_bcache, max_ref_blocks) - 16usize];
788    ["Offset of field: ext4_bcache::bdev"][::std::mem::offset_of!(ext4_bcache, bdev) - 24usize];
789    ["Offset of field: ext4_bcache::dont_shake"]
790        [::std::mem::offset_of!(ext4_bcache, dont_shake) - 32usize];
791    ["Offset of field: ext4_bcache::lba_root"]
792        [::std::mem::offset_of!(ext4_bcache, lba_root) - 40usize];
793    ["Offset of field: ext4_bcache::lru_root"]
794        [::std::mem::offset_of!(ext4_bcache, lru_root) - 48usize];
795    ["Offset of field: ext4_bcache::dirty_list"]
796        [::std::mem::offset_of!(ext4_bcache, dirty_list) - 56usize];
797};
798unsafe extern "C" {
799    #[doc = "@brief   Dynamic initialization of block cache.\n @param   bc block cache descriptor\n @param   cnt items count in block cache\n @param   itemsize single item size (in bytes)\n @return  standard error code"]
800    pub fn ext4_bcache_init_dynamic(
801        bc: *mut ext4_bcache,
802        cnt: u32,
803        itemsize: u32,
804    ) -> ::std::os::raw::c_int;
805}
806unsafe extern "C" {
807    #[doc = "@brief   Do cleanup works on block cache.\n @param   bc block cache descriptor."]
808    pub fn ext4_bcache_cleanup(bc: *mut ext4_bcache);
809}
810unsafe extern "C" {
811    pub fn ext4_bcache_flush(bc: *mut ext4_bcache);
812}
813unsafe extern "C" {
814    #[doc = "@brief   Dynamic de-initialization of block cache.\n @param   bc block cache descriptor\n @return  standard error code"]
815    pub fn ext4_bcache_fini_dynamic(bc: *mut ext4_bcache) -> ::std::os::raw::c_int;
816}
817unsafe extern "C" {
818    #[doc = "@brief   Get a buffer with the lowest LRU counter in bcache.\n @param   bc block cache descriptor\n @return  buffer with the lowest LRU counter"]
819    pub fn ext4_buf_lowest_lru(bc: *mut ext4_bcache) -> *mut ext4_buf;
820}
821unsafe extern "C" {
822    #[doc = "@brief   Drop unreferenced buffer from bcache.\n @param   bc block cache descriptor\n @param   buf buffer"]
823    pub fn ext4_bcache_drop_buf(bc: *mut ext4_bcache, buf: *mut ext4_buf);
824}
825unsafe extern "C" {
826    #[doc = "@brief   Invalidate a range of buffers.\n @param   bc block cache descriptor\n @param   from starting lba\n @param   cnt block counts"]
827    pub fn ext4_bcache_invalidate_lba(bc: *mut ext4_bcache, from: u64, cnt: u32);
828}
829unsafe extern "C" {
830    #[doc = "@brief   Find existing buffer from block cache memory.\n          Unreferenced block allocation is based on LRU\n          (Last Recently Used) algorithm.\n @param   bc block cache descriptor\n @param   b block to alloc\n @param   lba logical block address\n @return  block cache buffer"]
831    pub fn ext4_bcache_find_get(
832        bc: *mut ext4_bcache,
833        b: *mut ext4_block,
834        lba: u64,
835    ) -> *mut ext4_buf;
836}
837unsafe extern "C" {
838    #[doc = "@brief   Allocate block from block cache memory.\n          Unreferenced block allocation is based on LRU\n          (Last Recently Used) algorithm.\n @param   bc block cache descriptor\n @param   b block to alloc\n @param   is_new block is new (needs to be read)\n @return  standard error code"]
839    pub fn ext4_bcache_alloc(
840        bc: *mut ext4_bcache,
841        b: *mut ext4_block,
842        is_new: *mut bool,
843    ) -> ::std::os::raw::c_int;
844}
845unsafe extern "C" {
846    #[doc = "@brief   Free block from cache memory (decrement reference counter).\n @param   bc block cache descriptor\n @param   b block to free\n @return  standard error code"]
847    pub fn ext4_bcache_free(bc: *mut ext4_bcache, b: *mut ext4_block) -> ::std::os::raw::c_int;
848}
849unsafe extern "C" {
850    #[doc = "@brief   Return a full status of block cache.\n @param   bc block cache descriptor\n @return  full status"]
851    pub fn ext4_bcache_is_full(bc: *mut ext4_bcache) -> bool;
852}
853#[repr(C)]
854#[derive(Debug, Copy, Clone)]
855pub struct ext4_blockdev_iface {
856    #[doc = "@brief   Open device function\n @param   bdev block device."]
857    pub open: ::std::option::Option<
858        unsafe extern "C" fn(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int,
859    >,
860    #[doc = "@brief   Block read function.\n @param   bdev block device\n @param   buf output buffer\n @param   blk_id block id\n @param   blk_cnt block count"]
861    pub bread: ::std::option::Option<
862        unsafe extern "C" fn(
863            bdev: *mut ext4_blockdev,
864            buf: *mut ::std::os::raw::c_void,
865            blk_id: u64,
866            blk_cnt: u32,
867        ) -> ::std::os::raw::c_int,
868    >,
869    #[doc = "@brief   Block write function.\n @param   buf input buffer\n @param   blk_id block id\n @param   blk_cnt block count"]
870    pub bwrite: ::std::option::Option<
871        unsafe extern "C" fn(
872            bdev: *mut ext4_blockdev,
873            buf: *const ::std::os::raw::c_void,
874            blk_id: u64,
875            blk_cnt: u32,
876        ) -> ::std::os::raw::c_int,
877    >,
878    #[doc = "@brief   Close device function.\n @param   bdev block device."]
879    pub close: ::std::option::Option<
880        unsafe extern "C" fn(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int,
881    >,
882    #[doc = "@brief   Lock block device. Required in multi partition mode\n          operations. Not mandatory field.\n @param   bdev block device."]
883    pub lock: ::std::option::Option<
884        unsafe extern "C" fn(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int,
885    >,
886    #[doc = "@brief   Unlock block device. Required in multi partition mode\n          operations. Not mandatory field.\n @param   bdev block device."]
887    pub unlock: ::std::option::Option<
888        unsafe extern "C" fn(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int,
889    >,
890    #[doc = "@brief   Block size (bytes): physical"]
891    pub ph_bsize: u32,
892    #[doc = "@brief   Block count: physical"]
893    pub ph_bcnt: u64,
894    #[doc = "@brief   Block size buffer: physical"]
895    pub ph_bbuf: *mut u8,
896    #[doc = "@brief   Reference counter to block device interface"]
897    pub ph_refctr: u32,
898    #[doc = "@brief   Physical read counter"]
899    pub bread_ctr: u32,
900    #[doc = "@brief   Physical write counter"]
901    pub bwrite_ctr: u32,
902    #[doc = "@brief   User data pointer"]
903    pub p_user: *mut ::std::os::raw::c_void,
904}
905#[allow(clippy::unnecessary_operation, clippy::identity_op)]
906const _: () = {
907    ["Size of ext4_blockdev_iface"][::std::mem::size_of::<ext4_blockdev_iface>() - 96usize];
908    ["Alignment of ext4_blockdev_iface"][::std::mem::align_of::<ext4_blockdev_iface>() - 8usize];
909    ["Offset of field: ext4_blockdev_iface::open"]
910        [::std::mem::offset_of!(ext4_blockdev_iface, open) - 0usize];
911    ["Offset of field: ext4_blockdev_iface::bread"]
912        [::std::mem::offset_of!(ext4_blockdev_iface, bread) - 8usize];
913    ["Offset of field: ext4_blockdev_iface::bwrite"]
914        [::std::mem::offset_of!(ext4_blockdev_iface, bwrite) - 16usize];
915    ["Offset of field: ext4_blockdev_iface::close"]
916        [::std::mem::offset_of!(ext4_blockdev_iface, close) - 24usize];
917    ["Offset of field: ext4_blockdev_iface::lock"]
918        [::std::mem::offset_of!(ext4_blockdev_iface, lock) - 32usize];
919    ["Offset of field: ext4_blockdev_iface::unlock"]
920        [::std::mem::offset_of!(ext4_blockdev_iface, unlock) - 40usize];
921    ["Offset of field: ext4_blockdev_iface::ph_bsize"]
922        [::std::mem::offset_of!(ext4_blockdev_iface, ph_bsize) - 48usize];
923    ["Offset of field: ext4_blockdev_iface::ph_bcnt"]
924        [::std::mem::offset_of!(ext4_blockdev_iface, ph_bcnt) - 56usize];
925    ["Offset of field: ext4_blockdev_iface::ph_bbuf"]
926        [::std::mem::offset_of!(ext4_blockdev_iface, ph_bbuf) - 64usize];
927    ["Offset of field: ext4_blockdev_iface::ph_refctr"]
928        [::std::mem::offset_of!(ext4_blockdev_iface, ph_refctr) - 72usize];
929    ["Offset of field: ext4_blockdev_iface::bread_ctr"]
930        [::std::mem::offset_of!(ext4_blockdev_iface, bread_ctr) - 76usize];
931    ["Offset of field: ext4_blockdev_iface::bwrite_ctr"]
932        [::std::mem::offset_of!(ext4_blockdev_iface, bwrite_ctr) - 80usize];
933    ["Offset of field: ext4_blockdev_iface::p_user"]
934        [::std::mem::offset_of!(ext4_blockdev_iface, p_user) - 88usize];
935};
936#[doc = "@brief   Definition of the simple block device."]
937#[repr(C)]
938#[derive(Debug, Copy, Clone)]
939pub struct ext4_blockdev {
940    #[doc = "@brief Block device interface"]
941    pub bdif: *mut ext4_blockdev_iface,
942    #[doc = "@brief Offset in bdif. For multi partition mode."]
943    pub part_offset: u64,
944    #[doc = "@brief Part size in bdif. For multi partition mode."]
945    pub part_size: u64,
946    #[doc = "@brief   Block cache."]
947    pub bc: *mut ext4_bcache,
948    #[doc = "@brief   Block size (bytes) logical"]
949    pub lg_bsize: u32,
950    #[doc = "@brief   Block count: logical"]
951    pub lg_bcnt: u64,
952    #[doc = "@brief   Cache write back mode reference counter"]
953    pub cache_write_back: u32,
954    #[doc = "@brief   The filesystem this block device belongs to."]
955    pub fs: *mut ext4_fs,
956    pub journal: *mut ::std::os::raw::c_void,
957}
958#[allow(clippy::unnecessary_operation, clippy::identity_op)]
959const _: () = {
960    ["Size of ext4_blockdev"][::std::mem::size_of::<ext4_blockdev>() - 72usize];
961    ["Alignment of ext4_blockdev"][::std::mem::align_of::<ext4_blockdev>() - 8usize];
962    ["Offset of field: ext4_blockdev::bdif"][::std::mem::offset_of!(ext4_blockdev, bdif) - 0usize];
963    ["Offset of field: ext4_blockdev::part_offset"]
964        [::std::mem::offset_of!(ext4_blockdev, part_offset) - 8usize];
965    ["Offset of field: ext4_blockdev::part_size"]
966        [::std::mem::offset_of!(ext4_blockdev, part_size) - 16usize];
967    ["Offset of field: ext4_blockdev::bc"][::std::mem::offset_of!(ext4_blockdev, bc) - 24usize];
968    ["Offset of field: ext4_blockdev::lg_bsize"]
969        [::std::mem::offset_of!(ext4_blockdev, lg_bsize) - 32usize];
970    ["Offset of field: ext4_blockdev::lg_bcnt"]
971        [::std::mem::offset_of!(ext4_blockdev, lg_bcnt) - 40usize];
972    ["Offset of field: ext4_blockdev::cache_write_back"]
973        [::std::mem::offset_of!(ext4_blockdev, cache_write_back) - 48usize];
974    ["Offset of field: ext4_blockdev::fs"][::std::mem::offset_of!(ext4_blockdev, fs) - 56usize];
975    ["Offset of field: ext4_blockdev::journal"]
976        [::std::mem::offset_of!(ext4_blockdev, journal) - 64usize];
977};
978unsafe extern "C" {
979    #[doc = "@brief   Block device initialization.\n @param   bdev block device descriptor\n @return  standard error code"]
980    pub fn ext4_block_init(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int;
981}
982unsafe extern "C" {
983    #[doc = "@brief   Binds a bcache to block device.\n @param   bdev block device descriptor\n @param   bc block cache descriptor\n @return  standard error code"]
984    pub fn ext4_block_bind_bcache(
985        bdev: *mut ext4_blockdev,
986        bc: *mut ext4_bcache,
987    ) -> ::std::os::raw::c_int;
988}
989unsafe extern "C" {
990    #[doc = "@brief   Close block device\n @param   bdev block device descriptor\n @return  standard error code"]
991    pub fn ext4_block_fini(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int;
992}
993unsafe extern "C" {
994    #[doc = "@brief   Flush data in given buffer to disk.\n @param   bdev block device descriptor\n @param   buf buffer\n @return  standard error code"]
995    pub fn ext4_block_flush_buf(
996        bdev: *mut ext4_blockdev,
997        buf: *mut ext4_buf,
998    ) -> ::std::os::raw::c_int;
999}
1000unsafe extern "C" {
1001    #[doc = "@brief   Flush data in buffer of given lba to disk,\n          if that buffer exists in block cache.\n @param   bdev block device descriptor\n @param   lba logical block address\n @return  standard error code"]
1002    pub fn ext4_block_flush_lba(bdev: *mut ext4_blockdev, lba: u64) -> ::std::os::raw::c_int;
1003}
1004unsafe extern "C" {
1005    #[doc = "@brief   Set logical block size in block device.\n @param   bdev block device descriptor\n @param   lb_bsize logical block size (in bytes)"]
1006    pub fn ext4_block_set_lb_size(bdev: *mut ext4_blockdev, lb_bsize: u32);
1007}
1008unsafe extern "C" {
1009    #[doc = "@brief   Block get function (through cache, don't read).\n @param   bdev block device descriptor\n @param   b block descriptor\n @param   lba logical block address\n @return  standard error code"]
1010    pub fn ext4_block_get_noread(
1011        bdev: *mut ext4_blockdev,
1012        b: *mut ext4_block,
1013        lba: u64,
1014    ) -> ::std::os::raw::c_int;
1015}
1016unsafe extern "C" {
1017    #[doc = "@brief   Block get function (through cache).\n @param   bdev block device descriptor\n @param   b block descriptor\n @param   lba logical block address\n @return  standard error code"]
1018    pub fn ext4_block_get(
1019        bdev: *mut ext4_blockdev,
1020        b: *mut ext4_block,
1021        lba: u64,
1022    ) -> ::std::os::raw::c_int;
1023}
1024unsafe extern "C" {
1025    #[doc = "@brief   Block set procedure (through cache).\n @param   bdev block device descriptor\n @param   b block descriptor\n @return  standard error code"]
1026    pub fn ext4_block_set(bdev: *mut ext4_blockdev, b: *mut ext4_block) -> ::std::os::raw::c_int;
1027}
1028unsafe extern "C" {
1029    #[doc = "@brief   Block read procedure (without cache)\n @param   bdev block device descriptor\n @param   buf output buffer\n @param   lba logical block address\n @return  standard error code"]
1030    pub fn ext4_blocks_get_direct(
1031        bdev: *mut ext4_blockdev,
1032        buf: *mut ::std::os::raw::c_void,
1033        lba: u64,
1034        cnt: u32,
1035    ) -> ::std::os::raw::c_int;
1036}
1037unsafe extern "C" {
1038    #[doc = "@brief   Block write procedure (without cache)\n @param   bdev block device descriptor\n @param   buf output buffer\n @param   lba logical block address\n @return  standard error code"]
1039    pub fn ext4_blocks_set_direct(
1040        bdev: *mut ext4_blockdev,
1041        buf: *const ::std::os::raw::c_void,
1042        lba: u64,
1043        cnt: u32,
1044    ) -> ::std::os::raw::c_int;
1045}
1046unsafe extern "C" {
1047    #[doc = "@brief   Write to block device (by direct address).\n @param   bdev block device descriptor\n @param   off byte offset in block device\n @param   buf input buffer\n @param   len length of the write buffer\n @return  standard error code"]
1048    pub fn ext4_block_writebytes(
1049        bdev: *mut ext4_blockdev,
1050        off: u64,
1051        buf: *const ::std::os::raw::c_void,
1052        len: u32,
1053    ) -> ::std::os::raw::c_int;
1054}
1055unsafe extern "C" {
1056    #[doc = "@brief   Read freom block device (by direct address).\n @param   bdev block device descriptor\n @param   off byte offset in block device\n @param   buf input buffer\n @param   len length of the write buffer\n @return  standard error code"]
1057    pub fn ext4_block_readbytes(
1058        bdev: *mut ext4_blockdev,
1059        off: u64,
1060        buf: *mut ::std::os::raw::c_void,
1061        len: u32,
1062    ) -> ::std::os::raw::c_int;
1063}
1064unsafe extern "C" {
1065    #[doc = "@brief   Flush all dirty buffers to disk\n @param   bdev block device descriptor\n @return  standard error code"]
1066    pub fn ext4_block_cache_flush(bdev: *mut ext4_blockdev) -> ::std::os::raw::c_int;
1067}
1068unsafe extern "C" {
1069    #[doc = "@brief   Enable/disable write back cache mode\n @param   bdev block device descriptor\n @param   on_off\n              !0 - ENABLE\n               0 - DISABLE (all delayed cache buffers will be flushed)\n @return  standard error code"]
1070    pub fn ext4_block_cache_write_back(
1071        bdev: *mut ext4_blockdev,
1072        on_off: u8,
1073    ) -> ::std::os::raw::c_int;
1074}
1075pub type ext4_lblk_t = u32;
1076pub type ext4_fsblk_t = u64;
1077#[repr(C, packed)]
1078#[derive(Debug, Copy, Clone)]
1079pub struct ext4_sblock {
1080    pub inodes_count: u32,
1081    pub blocks_count_lo: u32,
1082    pub reserved_blocks_count_lo: u32,
1083    pub free_blocks_count_lo: u32,
1084    pub free_inodes_count: u32,
1085    pub first_data_block: u32,
1086    pub log_block_size: u32,
1087    pub log_cluster_size: u32,
1088    pub blocks_per_group: u32,
1089    pub frags_per_group: u32,
1090    pub inodes_per_group: u32,
1091    pub mount_time: u32,
1092    pub write_time: u32,
1093    pub mount_count: u16,
1094    pub max_mount_count: u16,
1095    pub magic: u16,
1096    pub state: u16,
1097    pub errors: u16,
1098    pub minor_rev_level: u16,
1099    pub last_check_time: u32,
1100    pub check_interval: u32,
1101    pub creator_os: u32,
1102    pub rev_level: u32,
1103    pub def_resuid: u16,
1104    pub def_resgid: u16,
1105    pub first_inode: u32,
1106    pub inode_size: u16,
1107    pub block_group_index: u16,
1108    pub features_compatible: u32,
1109    pub features_incompatible: u32,
1110    pub features_read_only: u32,
1111    pub uuid: [u8; 16usize],
1112    pub volume_name: [::std::os::raw::c_char; 16usize],
1113    pub last_mounted: [::std::os::raw::c_char; 64usize],
1114    pub algorithm_usage_bitmap: u32,
1115    pub s_prealloc_blocks: u8,
1116    pub s_prealloc_dir_blocks: u8,
1117    pub s_reserved_gdt_blocks: u16,
1118    pub journal_uuid: [u8; 16usize],
1119    pub journal_inode_number: u32,
1120    pub journal_dev: u32,
1121    pub last_orphan: u32,
1122    pub hash_seed: [u32; 4usize],
1123    pub default_hash_version: u8,
1124    pub journal_backup_type: u8,
1125    pub desc_size: u16,
1126    pub default_mount_opts: u32,
1127    pub first_meta_bg: u32,
1128    pub mkfs_time: u32,
1129    pub journal_blocks: [u32; 17usize],
1130    pub blocks_count_hi: u32,
1131    pub reserved_blocks_count_hi: u32,
1132    pub free_blocks_count_hi: u32,
1133    pub min_extra_isize: u16,
1134    pub want_extra_isize: u16,
1135    pub flags: u32,
1136    pub raid_stride: u16,
1137    pub mmp_interval: u16,
1138    pub mmp_block: u64,
1139    pub raid_stripe_width: u32,
1140    pub log_groups_per_flex: u8,
1141    pub checksum_type: u8,
1142    pub reserved_pad: u16,
1143    pub kbytes_written: u64,
1144    pub snapshot_inum: u32,
1145    pub snapshot_id: u32,
1146    pub snapshot_r_blocks_count: u64,
1147    pub snapshot_list: u32,
1148    pub error_count: u32,
1149    pub first_error_time: u32,
1150    pub first_error_ino: u32,
1151    pub first_error_block: u64,
1152    pub first_error_func: [u8; 32usize],
1153    pub first_error_line: u32,
1154    pub last_error_time: u32,
1155    pub last_error_ino: u32,
1156    pub last_error_line: u32,
1157    pub last_error_block: u64,
1158    pub last_error_func: [u8; 32usize],
1159    pub mount_opts: [u8; 64usize],
1160    pub usr_quota_inum: u32,
1161    pub grp_quota_inum: u32,
1162    pub overhead_clusters: u32,
1163    pub backup_bgs: [u32; 2usize],
1164    pub encrypt_algos: [u8; 4usize],
1165    pub encrypt_pw_salt: [u8; 16usize],
1166    pub lpf_ino: u32,
1167    pub padding: [u32; 100usize],
1168    pub checksum: u32,
1169}
1170#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1171const _: () = {
1172    ["Size of ext4_sblock"][::std::mem::size_of::<ext4_sblock>() - 1024usize];
1173    ["Alignment of ext4_sblock"][::std::mem::align_of::<ext4_sblock>() - 1usize];
1174    ["Offset of field: ext4_sblock::inodes_count"]
1175        [::std::mem::offset_of!(ext4_sblock, inodes_count) - 0usize];
1176    ["Offset of field: ext4_sblock::blocks_count_lo"]
1177        [::std::mem::offset_of!(ext4_sblock, blocks_count_lo) - 4usize];
1178    ["Offset of field: ext4_sblock::reserved_blocks_count_lo"]
1179        [::std::mem::offset_of!(ext4_sblock, reserved_blocks_count_lo) - 8usize];
1180    ["Offset of field: ext4_sblock::free_blocks_count_lo"]
1181        [::std::mem::offset_of!(ext4_sblock, free_blocks_count_lo) - 12usize];
1182    ["Offset of field: ext4_sblock::free_inodes_count"]
1183        [::std::mem::offset_of!(ext4_sblock, free_inodes_count) - 16usize];
1184    ["Offset of field: ext4_sblock::first_data_block"]
1185        [::std::mem::offset_of!(ext4_sblock, first_data_block) - 20usize];
1186    ["Offset of field: ext4_sblock::log_block_size"]
1187        [::std::mem::offset_of!(ext4_sblock, log_block_size) - 24usize];
1188    ["Offset of field: ext4_sblock::log_cluster_size"]
1189        [::std::mem::offset_of!(ext4_sblock, log_cluster_size) - 28usize];
1190    ["Offset of field: ext4_sblock::blocks_per_group"]
1191        [::std::mem::offset_of!(ext4_sblock, blocks_per_group) - 32usize];
1192    ["Offset of field: ext4_sblock::frags_per_group"]
1193        [::std::mem::offset_of!(ext4_sblock, frags_per_group) - 36usize];
1194    ["Offset of field: ext4_sblock::inodes_per_group"]
1195        [::std::mem::offset_of!(ext4_sblock, inodes_per_group) - 40usize];
1196    ["Offset of field: ext4_sblock::mount_time"]
1197        [::std::mem::offset_of!(ext4_sblock, mount_time) - 44usize];
1198    ["Offset of field: ext4_sblock::write_time"]
1199        [::std::mem::offset_of!(ext4_sblock, write_time) - 48usize];
1200    ["Offset of field: ext4_sblock::mount_count"]
1201        [::std::mem::offset_of!(ext4_sblock, mount_count) - 52usize];
1202    ["Offset of field: ext4_sblock::max_mount_count"]
1203        [::std::mem::offset_of!(ext4_sblock, max_mount_count) - 54usize];
1204    ["Offset of field: ext4_sblock::magic"][::std::mem::offset_of!(ext4_sblock, magic) - 56usize];
1205    ["Offset of field: ext4_sblock::state"][::std::mem::offset_of!(ext4_sblock, state) - 58usize];
1206    ["Offset of field: ext4_sblock::errors"][::std::mem::offset_of!(ext4_sblock, errors) - 60usize];
1207    ["Offset of field: ext4_sblock::minor_rev_level"]
1208        [::std::mem::offset_of!(ext4_sblock, minor_rev_level) - 62usize];
1209    ["Offset of field: ext4_sblock::last_check_time"]
1210        [::std::mem::offset_of!(ext4_sblock, last_check_time) - 64usize];
1211    ["Offset of field: ext4_sblock::check_interval"]
1212        [::std::mem::offset_of!(ext4_sblock, check_interval) - 68usize];
1213    ["Offset of field: ext4_sblock::creator_os"]
1214        [::std::mem::offset_of!(ext4_sblock, creator_os) - 72usize];
1215    ["Offset of field: ext4_sblock::rev_level"]
1216        [::std::mem::offset_of!(ext4_sblock, rev_level) - 76usize];
1217    ["Offset of field: ext4_sblock::def_resuid"]
1218        [::std::mem::offset_of!(ext4_sblock, def_resuid) - 80usize];
1219    ["Offset of field: ext4_sblock::def_resgid"]
1220        [::std::mem::offset_of!(ext4_sblock, def_resgid) - 82usize];
1221    ["Offset of field: ext4_sblock::first_inode"]
1222        [::std::mem::offset_of!(ext4_sblock, first_inode) - 84usize];
1223    ["Offset of field: ext4_sblock::inode_size"]
1224        [::std::mem::offset_of!(ext4_sblock, inode_size) - 88usize];
1225    ["Offset of field: ext4_sblock::block_group_index"]
1226        [::std::mem::offset_of!(ext4_sblock, block_group_index) - 90usize];
1227    ["Offset of field: ext4_sblock::features_compatible"]
1228        [::std::mem::offset_of!(ext4_sblock, features_compatible) - 92usize];
1229    ["Offset of field: ext4_sblock::features_incompatible"]
1230        [::std::mem::offset_of!(ext4_sblock, features_incompatible) - 96usize];
1231    ["Offset of field: ext4_sblock::features_read_only"]
1232        [::std::mem::offset_of!(ext4_sblock, features_read_only) - 100usize];
1233    ["Offset of field: ext4_sblock::uuid"][::std::mem::offset_of!(ext4_sblock, uuid) - 104usize];
1234    ["Offset of field: ext4_sblock::volume_name"]
1235        [::std::mem::offset_of!(ext4_sblock, volume_name) - 120usize];
1236    ["Offset of field: ext4_sblock::last_mounted"]
1237        [::std::mem::offset_of!(ext4_sblock, last_mounted) - 136usize];
1238    ["Offset of field: ext4_sblock::algorithm_usage_bitmap"]
1239        [::std::mem::offset_of!(ext4_sblock, algorithm_usage_bitmap) - 200usize];
1240    ["Offset of field: ext4_sblock::s_prealloc_blocks"]
1241        [::std::mem::offset_of!(ext4_sblock, s_prealloc_blocks) - 204usize];
1242    ["Offset of field: ext4_sblock::s_prealloc_dir_blocks"]
1243        [::std::mem::offset_of!(ext4_sblock, s_prealloc_dir_blocks) - 205usize];
1244    ["Offset of field: ext4_sblock::s_reserved_gdt_blocks"]
1245        [::std::mem::offset_of!(ext4_sblock, s_reserved_gdt_blocks) - 206usize];
1246    ["Offset of field: ext4_sblock::journal_uuid"]
1247        [::std::mem::offset_of!(ext4_sblock, journal_uuid) - 208usize];
1248    ["Offset of field: ext4_sblock::journal_inode_number"]
1249        [::std::mem::offset_of!(ext4_sblock, journal_inode_number) - 224usize];
1250    ["Offset of field: ext4_sblock::journal_dev"]
1251        [::std::mem::offset_of!(ext4_sblock, journal_dev) - 228usize];
1252    ["Offset of field: ext4_sblock::last_orphan"]
1253        [::std::mem::offset_of!(ext4_sblock, last_orphan) - 232usize];
1254    ["Offset of field: ext4_sblock::hash_seed"]
1255        [::std::mem::offset_of!(ext4_sblock, hash_seed) - 236usize];
1256    ["Offset of field: ext4_sblock::default_hash_version"]
1257        [::std::mem::offset_of!(ext4_sblock, default_hash_version) - 252usize];
1258    ["Offset of field: ext4_sblock::journal_backup_type"]
1259        [::std::mem::offset_of!(ext4_sblock, journal_backup_type) - 253usize];
1260    ["Offset of field: ext4_sblock::desc_size"]
1261        [::std::mem::offset_of!(ext4_sblock, desc_size) - 254usize];
1262    ["Offset of field: ext4_sblock::default_mount_opts"]
1263        [::std::mem::offset_of!(ext4_sblock, default_mount_opts) - 256usize];
1264    ["Offset of field: ext4_sblock::first_meta_bg"]
1265        [::std::mem::offset_of!(ext4_sblock, first_meta_bg) - 260usize];
1266    ["Offset of field: ext4_sblock::mkfs_time"]
1267        [::std::mem::offset_of!(ext4_sblock, mkfs_time) - 264usize];
1268    ["Offset of field: ext4_sblock::journal_blocks"]
1269        [::std::mem::offset_of!(ext4_sblock, journal_blocks) - 268usize];
1270    ["Offset of field: ext4_sblock::blocks_count_hi"]
1271        [::std::mem::offset_of!(ext4_sblock, blocks_count_hi) - 336usize];
1272    ["Offset of field: ext4_sblock::reserved_blocks_count_hi"]
1273        [::std::mem::offset_of!(ext4_sblock, reserved_blocks_count_hi) - 340usize];
1274    ["Offset of field: ext4_sblock::free_blocks_count_hi"]
1275        [::std::mem::offset_of!(ext4_sblock, free_blocks_count_hi) - 344usize];
1276    ["Offset of field: ext4_sblock::min_extra_isize"]
1277        [::std::mem::offset_of!(ext4_sblock, min_extra_isize) - 348usize];
1278    ["Offset of field: ext4_sblock::want_extra_isize"]
1279        [::std::mem::offset_of!(ext4_sblock, want_extra_isize) - 350usize];
1280    ["Offset of field: ext4_sblock::flags"][::std::mem::offset_of!(ext4_sblock, flags) - 352usize];
1281    ["Offset of field: ext4_sblock::raid_stride"]
1282        [::std::mem::offset_of!(ext4_sblock, raid_stride) - 356usize];
1283    ["Offset of field: ext4_sblock::mmp_interval"]
1284        [::std::mem::offset_of!(ext4_sblock, mmp_interval) - 358usize];
1285    ["Offset of field: ext4_sblock::mmp_block"]
1286        [::std::mem::offset_of!(ext4_sblock, mmp_block) - 360usize];
1287    ["Offset of field: ext4_sblock::raid_stripe_width"]
1288        [::std::mem::offset_of!(ext4_sblock, raid_stripe_width) - 368usize];
1289    ["Offset of field: ext4_sblock::log_groups_per_flex"]
1290        [::std::mem::offset_of!(ext4_sblock, log_groups_per_flex) - 372usize];
1291    ["Offset of field: ext4_sblock::checksum_type"]
1292        [::std::mem::offset_of!(ext4_sblock, checksum_type) - 373usize];
1293    ["Offset of field: ext4_sblock::reserved_pad"]
1294        [::std::mem::offset_of!(ext4_sblock, reserved_pad) - 374usize];
1295    ["Offset of field: ext4_sblock::kbytes_written"]
1296        [::std::mem::offset_of!(ext4_sblock, kbytes_written) - 376usize];
1297    ["Offset of field: ext4_sblock::snapshot_inum"]
1298        [::std::mem::offset_of!(ext4_sblock, snapshot_inum) - 384usize];
1299    ["Offset of field: ext4_sblock::snapshot_id"]
1300        [::std::mem::offset_of!(ext4_sblock, snapshot_id) - 388usize];
1301    ["Offset of field: ext4_sblock::snapshot_r_blocks_count"]
1302        [::std::mem::offset_of!(ext4_sblock, snapshot_r_blocks_count) - 392usize];
1303    ["Offset of field: ext4_sblock::snapshot_list"]
1304        [::std::mem::offset_of!(ext4_sblock, snapshot_list) - 400usize];
1305    ["Offset of field: ext4_sblock::error_count"]
1306        [::std::mem::offset_of!(ext4_sblock, error_count) - 404usize];
1307    ["Offset of field: ext4_sblock::first_error_time"]
1308        [::std::mem::offset_of!(ext4_sblock, first_error_time) - 408usize];
1309    ["Offset of field: ext4_sblock::first_error_ino"]
1310        [::std::mem::offset_of!(ext4_sblock, first_error_ino) - 412usize];
1311    ["Offset of field: ext4_sblock::first_error_block"]
1312        [::std::mem::offset_of!(ext4_sblock, first_error_block) - 416usize];
1313    ["Offset of field: ext4_sblock::first_error_func"]
1314        [::std::mem::offset_of!(ext4_sblock, first_error_func) - 424usize];
1315    ["Offset of field: ext4_sblock::first_error_line"]
1316        [::std::mem::offset_of!(ext4_sblock, first_error_line) - 456usize];
1317    ["Offset of field: ext4_sblock::last_error_time"]
1318        [::std::mem::offset_of!(ext4_sblock, last_error_time) - 460usize];
1319    ["Offset of field: ext4_sblock::last_error_ino"]
1320        [::std::mem::offset_of!(ext4_sblock, last_error_ino) - 464usize];
1321    ["Offset of field: ext4_sblock::last_error_line"]
1322        [::std::mem::offset_of!(ext4_sblock, last_error_line) - 468usize];
1323    ["Offset of field: ext4_sblock::last_error_block"]
1324        [::std::mem::offset_of!(ext4_sblock, last_error_block) - 472usize];
1325    ["Offset of field: ext4_sblock::last_error_func"]
1326        [::std::mem::offset_of!(ext4_sblock, last_error_func) - 480usize];
1327    ["Offset of field: ext4_sblock::mount_opts"]
1328        [::std::mem::offset_of!(ext4_sblock, mount_opts) - 512usize];
1329    ["Offset of field: ext4_sblock::usr_quota_inum"]
1330        [::std::mem::offset_of!(ext4_sblock, usr_quota_inum) - 576usize];
1331    ["Offset of field: ext4_sblock::grp_quota_inum"]
1332        [::std::mem::offset_of!(ext4_sblock, grp_quota_inum) - 580usize];
1333    ["Offset of field: ext4_sblock::overhead_clusters"]
1334        [::std::mem::offset_of!(ext4_sblock, overhead_clusters) - 584usize];
1335    ["Offset of field: ext4_sblock::backup_bgs"]
1336        [::std::mem::offset_of!(ext4_sblock, backup_bgs) - 588usize];
1337    ["Offset of field: ext4_sblock::encrypt_algos"]
1338        [::std::mem::offset_of!(ext4_sblock, encrypt_algos) - 596usize];
1339    ["Offset of field: ext4_sblock::encrypt_pw_salt"]
1340        [::std::mem::offset_of!(ext4_sblock, encrypt_pw_salt) - 600usize];
1341    ["Offset of field: ext4_sblock::lpf_ino"]
1342        [::std::mem::offset_of!(ext4_sblock, lpf_ino) - 616usize];
1343    ["Offset of field: ext4_sblock::padding"]
1344        [::std::mem::offset_of!(ext4_sblock, padding) - 620usize];
1345    ["Offset of field: ext4_sblock::checksum"]
1346        [::std::mem::offset_of!(ext4_sblock, checksum) - 1020usize];
1347};
1348#[repr(C)]
1349#[derive(Debug, Copy, Clone)]
1350pub struct ext4_bgroup {
1351    pub block_bitmap_lo: u32,
1352    pub inode_bitmap_lo: u32,
1353    pub inode_table_first_block_lo: u32,
1354    pub free_blocks_count_lo: u16,
1355    pub free_inodes_count_lo: u16,
1356    pub used_dirs_count_lo: u16,
1357    pub flags: u16,
1358    pub exclude_bitmap_lo: u32,
1359    pub block_bitmap_csum_lo: u16,
1360    pub inode_bitmap_csum_lo: u16,
1361    pub itable_unused_lo: u16,
1362    pub checksum: u16,
1363    pub block_bitmap_hi: u32,
1364    pub inode_bitmap_hi: u32,
1365    pub inode_table_first_block_hi: u32,
1366    pub free_blocks_count_hi: u16,
1367    pub free_inodes_count_hi: u16,
1368    pub used_dirs_count_hi: u16,
1369    pub itable_unused_hi: u16,
1370    pub exclude_bitmap_hi: u32,
1371    pub block_bitmap_csum_hi: u16,
1372    pub inode_bitmap_csum_hi: u16,
1373    pub reserved: u32,
1374}
1375#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1376const _: () = {
1377    ["Size of ext4_bgroup"][::std::mem::size_of::<ext4_bgroup>() - 64usize];
1378    ["Alignment of ext4_bgroup"][::std::mem::align_of::<ext4_bgroup>() - 4usize];
1379    ["Offset of field: ext4_bgroup::block_bitmap_lo"]
1380        [::std::mem::offset_of!(ext4_bgroup, block_bitmap_lo) - 0usize];
1381    ["Offset of field: ext4_bgroup::inode_bitmap_lo"]
1382        [::std::mem::offset_of!(ext4_bgroup, inode_bitmap_lo) - 4usize];
1383    ["Offset of field: ext4_bgroup::inode_table_first_block_lo"]
1384        [::std::mem::offset_of!(ext4_bgroup, inode_table_first_block_lo) - 8usize];
1385    ["Offset of field: ext4_bgroup::free_blocks_count_lo"]
1386        [::std::mem::offset_of!(ext4_bgroup, free_blocks_count_lo) - 12usize];
1387    ["Offset of field: ext4_bgroup::free_inodes_count_lo"]
1388        [::std::mem::offset_of!(ext4_bgroup, free_inodes_count_lo) - 14usize];
1389    ["Offset of field: ext4_bgroup::used_dirs_count_lo"]
1390        [::std::mem::offset_of!(ext4_bgroup, used_dirs_count_lo) - 16usize];
1391    ["Offset of field: ext4_bgroup::flags"][::std::mem::offset_of!(ext4_bgroup, flags) - 18usize];
1392    ["Offset of field: ext4_bgroup::exclude_bitmap_lo"]
1393        [::std::mem::offset_of!(ext4_bgroup, exclude_bitmap_lo) - 20usize];
1394    ["Offset of field: ext4_bgroup::block_bitmap_csum_lo"]
1395        [::std::mem::offset_of!(ext4_bgroup, block_bitmap_csum_lo) - 24usize];
1396    ["Offset of field: ext4_bgroup::inode_bitmap_csum_lo"]
1397        [::std::mem::offset_of!(ext4_bgroup, inode_bitmap_csum_lo) - 26usize];
1398    ["Offset of field: ext4_bgroup::itable_unused_lo"]
1399        [::std::mem::offset_of!(ext4_bgroup, itable_unused_lo) - 28usize];
1400    ["Offset of field: ext4_bgroup::checksum"]
1401        [::std::mem::offset_of!(ext4_bgroup, checksum) - 30usize];
1402    ["Offset of field: ext4_bgroup::block_bitmap_hi"]
1403        [::std::mem::offset_of!(ext4_bgroup, block_bitmap_hi) - 32usize];
1404    ["Offset of field: ext4_bgroup::inode_bitmap_hi"]
1405        [::std::mem::offset_of!(ext4_bgroup, inode_bitmap_hi) - 36usize];
1406    ["Offset of field: ext4_bgroup::inode_table_first_block_hi"]
1407        [::std::mem::offset_of!(ext4_bgroup, inode_table_first_block_hi) - 40usize];
1408    ["Offset of field: ext4_bgroup::free_blocks_count_hi"]
1409        [::std::mem::offset_of!(ext4_bgroup, free_blocks_count_hi) - 44usize];
1410    ["Offset of field: ext4_bgroup::free_inodes_count_hi"]
1411        [::std::mem::offset_of!(ext4_bgroup, free_inodes_count_hi) - 46usize];
1412    ["Offset of field: ext4_bgroup::used_dirs_count_hi"]
1413        [::std::mem::offset_of!(ext4_bgroup, used_dirs_count_hi) - 48usize];
1414    ["Offset of field: ext4_bgroup::itable_unused_hi"]
1415        [::std::mem::offset_of!(ext4_bgroup, itable_unused_hi) - 50usize];
1416    ["Offset of field: ext4_bgroup::exclude_bitmap_hi"]
1417        [::std::mem::offset_of!(ext4_bgroup, exclude_bitmap_hi) - 52usize];
1418    ["Offset of field: ext4_bgroup::block_bitmap_csum_hi"]
1419        [::std::mem::offset_of!(ext4_bgroup, block_bitmap_csum_hi) - 56usize];
1420    ["Offset of field: ext4_bgroup::inode_bitmap_csum_hi"]
1421        [::std::mem::offset_of!(ext4_bgroup, inode_bitmap_csum_hi) - 58usize];
1422    ["Offset of field: ext4_bgroup::reserved"]
1423        [::std::mem::offset_of!(ext4_bgroup, reserved) - 60usize];
1424};
1425#[repr(C, packed)]
1426#[derive(Copy, Clone)]
1427pub struct ext4_inode {
1428    pub mode: u16,
1429    pub uid: u16,
1430    pub size_lo: u32,
1431    pub access_time: u32,
1432    pub change_inode_time: u32,
1433    pub modification_time: u32,
1434    pub deletion_time: u32,
1435    pub gid: u16,
1436    pub links_count: u16,
1437    pub blocks_count_lo: u32,
1438    pub flags: u32,
1439    pub unused_osd1: u32,
1440    pub blocks: [u32; 15usize],
1441    pub generation: u32,
1442    pub file_acl_lo: u32,
1443    pub size_hi: u32,
1444    pub obso_faddr: u32,
1445    pub osd2: ext4_inode__bindgen_ty_1,
1446    pub extra_isize: u16,
1447    pub checksum_hi: u16,
1448    pub ctime_extra: u32,
1449    pub mtime_extra: u32,
1450    pub atime_extra: u32,
1451    pub crtime: u32,
1452    pub crtime_extra: u32,
1453    pub version_hi: u32,
1454}
1455#[repr(C)]
1456#[derive(Copy, Clone)]
1457pub union ext4_inode__bindgen_ty_1 {
1458    pub linux2: ext4_inode__bindgen_ty_1__bindgen_ty_1,
1459    pub hurd2: ext4_inode__bindgen_ty_1__bindgen_ty_2,
1460}
1461#[repr(C, packed)]
1462#[derive(Debug, Copy, Clone)]
1463pub struct ext4_inode__bindgen_ty_1__bindgen_ty_1 {
1464    pub blocks_high: u16,
1465    pub file_acl_high: u16,
1466    pub uid_high: u16,
1467    pub gid_high: u16,
1468    pub checksum_lo: u16,
1469    pub reserved2: u16,
1470}
1471#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1472const _: () = {
1473    ["Size of ext4_inode__bindgen_ty_1__bindgen_ty_1"]
1474        [::std::mem::size_of::<ext4_inode__bindgen_ty_1__bindgen_ty_1>() - 12usize];
1475    ["Alignment of ext4_inode__bindgen_ty_1__bindgen_ty_1"]
1476        [::std::mem::align_of::<ext4_inode__bindgen_ty_1__bindgen_ty_1>() - 1usize];
1477    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_1::blocks_high"]
1478        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_1, blocks_high) - 0usize];
1479    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_1::file_acl_high"]
1480        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_1, file_acl_high) - 2usize];
1481    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_1::uid_high"]
1482        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_1, uid_high) - 4usize];
1483    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_1::gid_high"]
1484        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_1, gid_high) - 6usize];
1485    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_1::checksum_lo"]
1486        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_1, checksum_lo) - 8usize];
1487    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_1::reserved2"]
1488        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_1, reserved2) - 10usize];
1489};
1490#[repr(C, packed)]
1491#[derive(Debug, Copy, Clone)]
1492pub struct ext4_inode__bindgen_ty_1__bindgen_ty_2 {
1493    pub reserved1: u16,
1494    pub mode_high: u16,
1495    pub uid_high: u16,
1496    pub gid_high: u16,
1497    pub author: u32,
1498}
1499#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1500const _: () = {
1501    ["Size of ext4_inode__bindgen_ty_1__bindgen_ty_2"]
1502        [::std::mem::size_of::<ext4_inode__bindgen_ty_1__bindgen_ty_2>() - 12usize];
1503    ["Alignment of ext4_inode__bindgen_ty_1__bindgen_ty_2"]
1504        [::std::mem::align_of::<ext4_inode__bindgen_ty_1__bindgen_ty_2>() - 1usize];
1505    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_2::reserved1"]
1506        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_2, reserved1) - 0usize];
1507    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_2::mode_high"]
1508        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_2, mode_high) - 2usize];
1509    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_2::uid_high"]
1510        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_2, uid_high) - 4usize];
1511    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_2::gid_high"]
1512        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_2, gid_high) - 6usize];
1513    ["Offset of field: ext4_inode__bindgen_ty_1__bindgen_ty_2::author"]
1514        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1__bindgen_ty_2, author) - 8usize];
1515};
1516#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1517const _: () = {
1518    ["Size of ext4_inode__bindgen_ty_1"]
1519        [::std::mem::size_of::<ext4_inode__bindgen_ty_1>() - 12usize];
1520    ["Alignment of ext4_inode__bindgen_ty_1"]
1521        [::std::mem::align_of::<ext4_inode__bindgen_ty_1>() - 1usize];
1522    ["Offset of field: ext4_inode__bindgen_ty_1::linux2"]
1523        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1, linux2) - 0usize];
1524    ["Offset of field: ext4_inode__bindgen_ty_1::hurd2"]
1525        [::std::mem::offset_of!(ext4_inode__bindgen_ty_1, hurd2) - 0usize];
1526};
1527#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1528const _: () = {
1529    ["Size of ext4_inode"][::std::mem::size_of::<ext4_inode>() - 156usize];
1530    ["Alignment of ext4_inode"][::std::mem::align_of::<ext4_inode>() - 1usize];
1531    ["Offset of field: ext4_inode::mode"][::std::mem::offset_of!(ext4_inode, mode) - 0usize];
1532    ["Offset of field: ext4_inode::uid"][::std::mem::offset_of!(ext4_inode, uid) - 2usize];
1533    ["Offset of field: ext4_inode::size_lo"][::std::mem::offset_of!(ext4_inode, size_lo) - 4usize];
1534    ["Offset of field: ext4_inode::access_time"]
1535        [::std::mem::offset_of!(ext4_inode, access_time) - 8usize];
1536    ["Offset of field: ext4_inode::change_inode_time"]
1537        [::std::mem::offset_of!(ext4_inode, change_inode_time) - 12usize];
1538    ["Offset of field: ext4_inode::modification_time"]
1539        [::std::mem::offset_of!(ext4_inode, modification_time) - 16usize];
1540    ["Offset of field: ext4_inode::deletion_time"]
1541        [::std::mem::offset_of!(ext4_inode, deletion_time) - 20usize];
1542    ["Offset of field: ext4_inode::gid"][::std::mem::offset_of!(ext4_inode, gid) - 24usize];
1543    ["Offset of field: ext4_inode::links_count"]
1544        [::std::mem::offset_of!(ext4_inode, links_count) - 26usize];
1545    ["Offset of field: ext4_inode::blocks_count_lo"]
1546        [::std::mem::offset_of!(ext4_inode, blocks_count_lo) - 28usize];
1547    ["Offset of field: ext4_inode::flags"][::std::mem::offset_of!(ext4_inode, flags) - 32usize];
1548    ["Offset of field: ext4_inode::unused_osd1"]
1549        [::std::mem::offset_of!(ext4_inode, unused_osd1) - 36usize];
1550    ["Offset of field: ext4_inode::blocks"][::std::mem::offset_of!(ext4_inode, blocks) - 40usize];
1551    ["Offset of field: ext4_inode::generation"]
1552        [::std::mem::offset_of!(ext4_inode, generation) - 100usize];
1553    ["Offset of field: ext4_inode::file_acl_lo"]
1554        [::std::mem::offset_of!(ext4_inode, file_acl_lo) - 104usize];
1555    ["Offset of field: ext4_inode::size_hi"]
1556        [::std::mem::offset_of!(ext4_inode, size_hi) - 108usize];
1557    ["Offset of field: ext4_inode::obso_faddr"]
1558        [::std::mem::offset_of!(ext4_inode, obso_faddr) - 112usize];
1559    ["Offset of field: ext4_inode::osd2"][::std::mem::offset_of!(ext4_inode, osd2) - 116usize];
1560    ["Offset of field: ext4_inode::extra_isize"]
1561        [::std::mem::offset_of!(ext4_inode, extra_isize) - 128usize];
1562    ["Offset of field: ext4_inode::checksum_hi"]
1563        [::std::mem::offset_of!(ext4_inode, checksum_hi) - 130usize];
1564    ["Offset of field: ext4_inode::ctime_extra"]
1565        [::std::mem::offset_of!(ext4_inode, ctime_extra) - 132usize];
1566    ["Offset of field: ext4_inode::mtime_extra"]
1567        [::std::mem::offset_of!(ext4_inode, mtime_extra) - 136usize];
1568    ["Offset of field: ext4_inode::atime_extra"]
1569        [::std::mem::offset_of!(ext4_inode, atime_extra) - 140usize];
1570    ["Offset of field: ext4_inode::crtime"][::std::mem::offset_of!(ext4_inode, crtime) - 144usize];
1571    ["Offset of field: ext4_inode::crtime_extra"]
1572        [::std::mem::offset_of!(ext4_inode, crtime_extra) - 148usize];
1573    ["Offset of field: ext4_inode::version_hi"]
1574        [::std::mem::offset_of!(ext4_inode, version_hi) - 152usize];
1575};
1576pub const EXT4_DE_UNKNOWN: _bindgen_ty_1 = 0;
1577pub const EXT4_DE_REG_FILE: _bindgen_ty_1 = 1;
1578pub const EXT4_DE_DIR: _bindgen_ty_1 = 2;
1579pub const EXT4_DE_CHRDEV: _bindgen_ty_1 = 3;
1580pub const EXT4_DE_BLKDEV: _bindgen_ty_1 = 4;
1581pub const EXT4_DE_FIFO: _bindgen_ty_1 = 5;
1582pub const EXT4_DE_SOCK: _bindgen_ty_1 = 6;
1583pub const EXT4_DE_SYMLINK: _bindgen_ty_1 = 7;
1584#[doc = "@brief   Directory entry types."]
1585pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
1586#[repr(C)]
1587#[derive(Copy, Clone)]
1588pub union ext4_dir_en_internal {
1589    pub name_length_high: u8,
1590    pub inode_type: u8,
1591}
1592#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1593const _: () = {
1594    ["Size of ext4_dir_en_internal"][::std::mem::size_of::<ext4_dir_en_internal>() - 1usize];
1595    ["Alignment of ext4_dir_en_internal"][::std::mem::align_of::<ext4_dir_en_internal>() - 1usize];
1596    ["Offset of field: ext4_dir_en_internal::name_length_high"]
1597        [::std::mem::offset_of!(ext4_dir_en_internal, name_length_high) - 0usize];
1598    ["Offset of field: ext4_dir_en_internal::inode_type"]
1599        [::std::mem::offset_of!(ext4_dir_en_internal, inode_type) - 0usize];
1600};
1601#[doc = " Linked list directory entry structure"]
1602#[repr(C, packed)]
1603pub struct ext4_dir_en {
1604    pub inode: u32,
1605    pub entry_len: u16,
1606    pub name_len: u8,
1607    pub in_: ext4_dir_en_internal,
1608    pub name: __IncompleteArrayField<u8>,
1609}
1610#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1611const _: () = {
1612    ["Size of ext4_dir_en"][::std::mem::size_of::<ext4_dir_en>() - 8usize];
1613    ["Alignment of ext4_dir_en"][::std::mem::align_of::<ext4_dir_en>() - 1usize];
1614    ["Offset of field: ext4_dir_en::inode"][::std::mem::offset_of!(ext4_dir_en, inode) - 0usize];
1615    ["Offset of field: ext4_dir_en::entry_len"]
1616        [::std::mem::offset_of!(ext4_dir_en, entry_len) - 4usize];
1617    ["Offset of field: ext4_dir_en::name_len"]
1618        [::std::mem::offset_of!(ext4_dir_en, name_len) - 6usize];
1619    ["Offset of field: ext4_dir_en::in_"][::std::mem::offset_of!(ext4_dir_en, in_) - 7usize];
1620    ["Offset of field: ext4_dir_en::name"][::std::mem::offset_of!(ext4_dir_en, name) - 8usize];
1621};
1622#[repr(C, packed)]
1623#[derive(Debug, Copy, Clone)]
1624pub struct ext4_dir_idx_climit {
1625    pub limit: u16,
1626    pub count: u16,
1627}
1628#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1629const _: () = {
1630    ["Size of ext4_dir_idx_climit"][::std::mem::size_of::<ext4_dir_idx_climit>() - 4usize];
1631    ["Alignment of ext4_dir_idx_climit"][::std::mem::align_of::<ext4_dir_idx_climit>() - 1usize];
1632    ["Offset of field: ext4_dir_idx_climit::limit"]
1633        [::std::mem::offset_of!(ext4_dir_idx_climit, limit) - 0usize];
1634    ["Offset of field: ext4_dir_idx_climit::count"]
1635        [::std::mem::offset_of!(ext4_dir_idx_climit, count) - 2usize];
1636};
1637#[repr(C, packed)]
1638#[derive(Debug, Copy, Clone)]
1639pub struct ext4_dir_idx_dot_en {
1640    pub inode: u32,
1641    pub entry_length: u16,
1642    pub name_length: u8,
1643    pub inode_type: u8,
1644    pub name: [u8; 4usize],
1645}
1646#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1647const _: () = {
1648    ["Size of ext4_dir_idx_dot_en"][::std::mem::size_of::<ext4_dir_idx_dot_en>() - 12usize];
1649    ["Alignment of ext4_dir_idx_dot_en"][::std::mem::align_of::<ext4_dir_idx_dot_en>() - 1usize];
1650    ["Offset of field: ext4_dir_idx_dot_en::inode"]
1651        [::std::mem::offset_of!(ext4_dir_idx_dot_en, inode) - 0usize];
1652    ["Offset of field: ext4_dir_idx_dot_en::entry_length"]
1653        [::std::mem::offset_of!(ext4_dir_idx_dot_en, entry_length) - 4usize];
1654    ["Offset of field: ext4_dir_idx_dot_en::name_length"]
1655        [::std::mem::offset_of!(ext4_dir_idx_dot_en, name_length) - 6usize];
1656    ["Offset of field: ext4_dir_idx_dot_en::inode_type"]
1657        [::std::mem::offset_of!(ext4_dir_idx_dot_en, inode_type) - 7usize];
1658    ["Offset of field: ext4_dir_idx_dot_en::name"]
1659        [::std::mem::offset_of!(ext4_dir_idx_dot_en, name) - 8usize];
1660};
1661#[repr(C, packed)]
1662#[derive(Debug, Copy, Clone)]
1663pub struct ext4_dir_idx_rinfo {
1664    pub reserved_zero: u32,
1665    pub hash_version: u8,
1666    pub info_length: u8,
1667    pub indirect_levels: u8,
1668    pub unused_flags: u8,
1669}
1670#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1671const _: () = {
1672    ["Size of ext4_dir_idx_rinfo"][::std::mem::size_of::<ext4_dir_idx_rinfo>() - 8usize];
1673    ["Alignment of ext4_dir_idx_rinfo"][::std::mem::align_of::<ext4_dir_idx_rinfo>() - 1usize];
1674    ["Offset of field: ext4_dir_idx_rinfo::reserved_zero"]
1675        [::std::mem::offset_of!(ext4_dir_idx_rinfo, reserved_zero) - 0usize];
1676    ["Offset of field: ext4_dir_idx_rinfo::hash_version"]
1677        [::std::mem::offset_of!(ext4_dir_idx_rinfo, hash_version) - 4usize];
1678    ["Offset of field: ext4_dir_idx_rinfo::info_length"]
1679        [::std::mem::offset_of!(ext4_dir_idx_rinfo, info_length) - 5usize];
1680    ["Offset of field: ext4_dir_idx_rinfo::indirect_levels"]
1681        [::std::mem::offset_of!(ext4_dir_idx_rinfo, indirect_levels) - 6usize];
1682    ["Offset of field: ext4_dir_idx_rinfo::unused_flags"]
1683        [::std::mem::offset_of!(ext4_dir_idx_rinfo, unused_flags) - 7usize];
1684};
1685#[repr(C, packed)]
1686#[derive(Debug, Copy, Clone)]
1687pub struct ext4_dir_idx_entry {
1688    pub hash: u32,
1689    pub block: u32,
1690}
1691#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1692const _: () = {
1693    ["Size of ext4_dir_idx_entry"][::std::mem::size_of::<ext4_dir_idx_entry>() - 8usize];
1694    ["Alignment of ext4_dir_idx_entry"][::std::mem::align_of::<ext4_dir_idx_entry>() - 1usize];
1695    ["Offset of field: ext4_dir_idx_entry::hash"]
1696        [::std::mem::offset_of!(ext4_dir_idx_entry, hash) - 0usize];
1697    ["Offset of field: ext4_dir_idx_entry::block"]
1698        [::std::mem::offset_of!(ext4_dir_idx_entry, block) - 4usize];
1699};
1700#[repr(C)]
1701#[derive(Debug)]
1702pub struct ext4_dir_idx_root {
1703    pub dots: [ext4_dir_idx_dot_en; 2usize],
1704    pub info: ext4_dir_idx_rinfo,
1705    pub en: __IncompleteArrayField<ext4_dir_idx_entry>,
1706}
1707#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1708const _: () = {
1709    ["Size of ext4_dir_idx_root"][::std::mem::size_of::<ext4_dir_idx_root>() - 32usize];
1710    ["Alignment of ext4_dir_idx_root"][::std::mem::align_of::<ext4_dir_idx_root>() - 1usize];
1711    ["Offset of field: ext4_dir_idx_root::dots"]
1712        [::std::mem::offset_of!(ext4_dir_idx_root, dots) - 0usize];
1713    ["Offset of field: ext4_dir_idx_root::info"]
1714        [::std::mem::offset_of!(ext4_dir_idx_root, info) - 24usize];
1715    ["Offset of field: ext4_dir_idx_root::en"]
1716        [::std::mem::offset_of!(ext4_dir_idx_root, en) - 32usize];
1717};
1718#[repr(C, packed)]
1719#[derive(Debug, Copy, Clone)]
1720pub struct ext4_fake_dir_entry {
1721    pub inode: u32,
1722    pub entry_length: u16,
1723    pub name_length: u8,
1724    pub inode_type: u8,
1725}
1726#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1727const _: () = {
1728    ["Size of ext4_fake_dir_entry"][::std::mem::size_of::<ext4_fake_dir_entry>() - 8usize];
1729    ["Alignment of ext4_fake_dir_entry"][::std::mem::align_of::<ext4_fake_dir_entry>() - 1usize];
1730    ["Offset of field: ext4_fake_dir_entry::inode"]
1731        [::std::mem::offset_of!(ext4_fake_dir_entry, inode) - 0usize];
1732    ["Offset of field: ext4_fake_dir_entry::entry_length"]
1733        [::std::mem::offset_of!(ext4_fake_dir_entry, entry_length) - 4usize];
1734    ["Offset of field: ext4_fake_dir_entry::name_length"]
1735        [::std::mem::offset_of!(ext4_fake_dir_entry, name_length) - 6usize];
1736    ["Offset of field: ext4_fake_dir_entry::inode_type"]
1737        [::std::mem::offset_of!(ext4_fake_dir_entry, inode_type) - 7usize];
1738};
1739#[repr(C)]
1740#[derive(Debug)]
1741pub struct ext4_dir_idx_node {
1742    pub fake: ext4_fake_dir_entry,
1743    pub entries: __IncompleteArrayField<ext4_dir_idx_entry>,
1744}
1745#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1746const _: () = {
1747    ["Size of ext4_dir_idx_node"][::std::mem::size_of::<ext4_dir_idx_node>() - 8usize];
1748    ["Alignment of ext4_dir_idx_node"][::std::mem::align_of::<ext4_dir_idx_node>() - 1usize];
1749    ["Offset of field: ext4_dir_idx_node::fake"]
1750        [::std::mem::offset_of!(ext4_dir_idx_node, fake) - 0usize];
1751    ["Offset of field: ext4_dir_idx_node::entries"]
1752        [::std::mem::offset_of!(ext4_dir_idx_node, entries) - 8usize];
1753};
1754#[repr(C, packed)]
1755#[derive(Debug, Copy, Clone)]
1756pub struct ext4_dir_idx_tail {
1757    pub reserved: u32,
1758    pub checksum: u32,
1759}
1760#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1761const _: () = {
1762    ["Size of ext4_dir_idx_tail"][::std::mem::size_of::<ext4_dir_idx_tail>() - 8usize];
1763    ["Alignment of ext4_dir_idx_tail"][::std::mem::align_of::<ext4_dir_idx_tail>() - 1usize];
1764    ["Offset of field: ext4_dir_idx_tail::reserved"]
1765        [::std::mem::offset_of!(ext4_dir_idx_tail, reserved) - 0usize];
1766    ["Offset of field: ext4_dir_idx_tail::checksum"]
1767        [::std::mem::offset_of!(ext4_dir_idx_tail, checksum) - 4usize];
1768};
1769#[repr(C, packed)]
1770#[derive(Debug, Copy, Clone)]
1771pub struct ext4_dir_entry_tail {
1772    pub reserved_zero1: u32,
1773    pub rec_len: u16,
1774    pub reserved_zero2: u8,
1775    pub reserved_ft: u8,
1776    pub checksum: u32,
1777}
1778#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1779const _: () = {
1780    ["Size of ext4_dir_entry_tail"][::std::mem::size_of::<ext4_dir_entry_tail>() - 12usize];
1781    ["Alignment of ext4_dir_entry_tail"][::std::mem::align_of::<ext4_dir_entry_tail>() - 1usize];
1782    ["Offset of field: ext4_dir_entry_tail::reserved_zero1"]
1783        [::std::mem::offset_of!(ext4_dir_entry_tail, reserved_zero1) - 0usize];
1784    ["Offset of field: ext4_dir_entry_tail::rec_len"]
1785        [::std::mem::offset_of!(ext4_dir_entry_tail, rec_len) - 4usize];
1786    ["Offset of field: ext4_dir_entry_tail::reserved_zero2"]
1787        [::std::mem::offset_of!(ext4_dir_entry_tail, reserved_zero2) - 6usize];
1788    ["Offset of field: ext4_dir_entry_tail::reserved_ft"]
1789        [::std::mem::offset_of!(ext4_dir_entry_tail, reserved_ft) - 7usize];
1790    ["Offset of field: ext4_dir_entry_tail::checksum"]
1791        [::std::mem::offset_of!(ext4_dir_entry_tail, checksum) - 8usize];
1792};
1793#[repr(C, packed)]
1794#[derive(Debug, Copy, Clone)]
1795pub struct jbd_bhdr {
1796    pub magic: u32,
1797    pub blocktype: u32,
1798    pub sequence: u32,
1799}
1800#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1801const _: () = {
1802    ["Size of jbd_bhdr"][::std::mem::size_of::<jbd_bhdr>() - 12usize];
1803    ["Alignment of jbd_bhdr"][::std::mem::align_of::<jbd_bhdr>() - 1usize];
1804    ["Offset of field: jbd_bhdr::magic"][::std::mem::offset_of!(jbd_bhdr, magic) - 0usize];
1805    ["Offset of field: jbd_bhdr::blocktype"][::std::mem::offset_of!(jbd_bhdr, blocktype) - 4usize];
1806    ["Offset of field: jbd_bhdr::sequence"][::std::mem::offset_of!(jbd_bhdr, sequence) - 8usize];
1807};
1808#[repr(C, packed)]
1809#[derive(Debug, Copy, Clone)]
1810pub struct jbd_commit_header {
1811    pub header: jbd_bhdr,
1812    pub chksum_type: u8,
1813    pub chksum_size: u8,
1814    pub padding: [u8; 2usize],
1815    pub chksum: [u32; 8usize],
1816    pub commit_sec: u64,
1817    pub commit_nsec: u32,
1818}
1819#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1820const _: () = {
1821    ["Size of jbd_commit_header"][::std::mem::size_of::<jbd_commit_header>() - 60usize];
1822    ["Alignment of jbd_commit_header"][::std::mem::align_of::<jbd_commit_header>() - 1usize];
1823    ["Offset of field: jbd_commit_header::header"]
1824        [::std::mem::offset_of!(jbd_commit_header, header) - 0usize];
1825    ["Offset of field: jbd_commit_header::chksum_type"]
1826        [::std::mem::offset_of!(jbd_commit_header, chksum_type) - 12usize];
1827    ["Offset of field: jbd_commit_header::chksum_size"]
1828        [::std::mem::offset_of!(jbd_commit_header, chksum_size) - 13usize];
1829    ["Offset of field: jbd_commit_header::padding"]
1830        [::std::mem::offset_of!(jbd_commit_header, padding) - 14usize];
1831    ["Offset of field: jbd_commit_header::chksum"]
1832        [::std::mem::offset_of!(jbd_commit_header, chksum) - 16usize];
1833    ["Offset of field: jbd_commit_header::commit_sec"]
1834        [::std::mem::offset_of!(jbd_commit_header, commit_sec) - 48usize];
1835    ["Offset of field: jbd_commit_header::commit_nsec"]
1836        [::std::mem::offset_of!(jbd_commit_header, commit_nsec) - 56usize];
1837};
1838#[repr(C, packed)]
1839#[derive(Debug, Copy, Clone)]
1840pub struct jbd_block_tag3 {
1841    pub blocknr: u32,
1842    pub flags: u32,
1843    pub blocknr_high: u32,
1844    pub checksum: u32,
1845}
1846#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1847const _: () = {
1848    ["Size of jbd_block_tag3"][::std::mem::size_of::<jbd_block_tag3>() - 16usize];
1849    ["Alignment of jbd_block_tag3"][::std::mem::align_of::<jbd_block_tag3>() - 1usize];
1850    ["Offset of field: jbd_block_tag3::blocknr"]
1851        [::std::mem::offset_of!(jbd_block_tag3, blocknr) - 0usize];
1852    ["Offset of field: jbd_block_tag3::flags"]
1853        [::std::mem::offset_of!(jbd_block_tag3, flags) - 4usize];
1854    ["Offset of field: jbd_block_tag3::blocknr_high"]
1855        [::std::mem::offset_of!(jbd_block_tag3, blocknr_high) - 8usize];
1856    ["Offset of field: jbd_block_tag3::checksum"]
1857        [::std::mem::offset_of!(jbd_block_tag3, checksum) - 12usize];
1858};
1859#[repr(C, packed)]
1860#[derive(Debug, Copy, Clone)]
1861pub struct jbd_block_tag {
1862    pub blocknr: u32,
1863    pub checksum: u16,
1864    pub flags: u16,
1865    pub blocknr_high: u32,
1866}
1867#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1868const _: () = {
1869    ["Size of jbd_block_tag"][::std::mem::size_of::<jbd_block_tag>() - 12usize];
1870    ["Alignment of jbd_block_tag"][::std::mem::align_of::<jbd_block_tag>() - 1usize];
1871    ["Offset of field: jbd_block_tag::blocknr"]
1872        [::std::mem::offset_of!(jbd_block_tag, blocknr) - 0usize];
1873    ["Offset of field: jbd_block_tag::checksum"]
1874        [::std::mem::offset_of!(jbd_block_tag, checksum) - 4usize];
1875    ["Offset of field: jbd_block_tag::flags"]
1876        [::std::mem::offset_of!(jbd_block_tag, flags) - 6usize];
1877    ["Offset of field: jbd_block_tag::blocknr_high"]
1878        [::std::mem::offset_of!(jbd_block_tag, blocknr_high) - 8usize];
1879};
1880#[repr(C, packed)]
1881#[derive(Debug, Copy, Clone)]
1882pub struct jbd_block_tail {
1883    pub checksum: u32,
1884}
1885#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1886const _: () = {
1887    ["Size of jbd_block_tail"][::std::mem::size_of::<jbd_block_tail>() - 4usize];
1888    ["Alignment of jbd_block_tail"][::std::mem::align_of::<jbd_block_tail>() - 1usize];
1889    ["Offset of field: jbd_block_tail::checksum"]
1890        [::std::mem::offset_of!(jbd_block_tail, checksum) - 0usize];
1891};
1892#[repr(C, packed)]
1893#[derive(Debug, Copy, Clone)]
1894pub struct jbd_revoke_header {
1895    pub header: jbd_bhdr,
1896    pub count: u32,
1897}
1898#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1899const _: () = {
1900    ["Size of jbd_revoke_header"][::std::mem::size_of::<jbd_revoke_header>() - 16usize];
1901    ["Alignment of jbd_revoke_header"][::std::mem::align_of::<jbd_revoke_header>() - 1usize];
1902    ["Offset of field: jbd_revoke_header::header"]
1903        [::std::mem::offset_of!(jbd_revoke_header, header) - 0usize];
1904    ["Offset of field: jbd_revoke_header::count"]
1905        [::std::mem::offset_of!(jbd_revoke_header, count) - 12usize];
1906};
1907#[repr(C, packed)]
1908#[derive(Debug, Copy, Clone)]
1909pub struct jbd_revoke_tail {
1910    pub checksum: u32,
1911}
1912#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1913const _: () = {
1914    ["Size of jbd_revoke_tail"][::std::mem::size_of::<jbd_revoke_tail>() - 4usize];
1915    ["Alignment of jbd_revoke_tail"][::std::mem::align_of::<jbd_revoke_tail>() - 1usize];
1916    ["Offset of field: jbd_revoke_tail::checksum"]
1917        [::std::mem::offset_of!(jbd_revoke_tail, checksum) - 0usize];
1918};
1919#[repr(C, packed)]
1920#[derive(Debug, Copy, Clone)]
1921pub struct jbd_sb {
1922    pub header: jbd_bhdr,
1923    pub blocksize: u32,
1924    pub maxlen: u32,
1925    pub first: u32,
1926    pub sequence: u32,
1927    pub start: u32,
1928    pub error_val: i32,
1929    pub feature_compat: u32,
1930    pub feature_incompat: u32,
1931    pub feature_ro_compat: u32,
1932    pub uuid: [u8; 16usize],
1933    pub nr_users: u32,
1934    pub dynsuper: u32,
1935    pub max_transaction: u32,
1936    pub max_trandata: u32,
1937    pub checksum_type: u8,
1938    pub padding2: [u8; 3usize],
1939    pub padding: [u32; 42usize],
1940    pub checksum: u32,
1941    pub users: [u8; 768usize],
1942}
1943#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1944const _: () = {
1945    ["Size of jbd_sb"][::std::mem::size_of::<jbd_sb>() - 1024usize];
1946    ["Alignment of jbd_sb"][::std::mem::align_of::<jbd_sb>() - 1usize];
1947    ["Offset of field: jbd_sb::header"][::std::mem::offset_of!(jbd_sb, header) - 0usize];
1948    ["Offset of field: jbd_sb::blocksize"][::std::mem::offset_of!(jbd_sb, blocksize) - 12usize];
1949    ["Offset of field: jbd_sb::maxlen"][::std::mem::offset_of!(jbd_sb, maxlen) - 16usize];
1950    ["Offset of field: jbd_sb::first"][::std::mem::offset_of!(jbd_sb, first) - 20usize];
1951    ["Offset of field: jbd_sb::sequence"][::std::mem::offset_of!(jbd_sb, sequence) - 24usize];
1952    ["Offset of field: jbd_sb::start"][::std::mem::offset_of!(jbd_sb, start) - 28usize];
1953    ["Offset of field: jbd_sb::error_val"][::std::mem::offset_of!(jbd_sb, error_val) - 32usize];
1954    ["Offset of field: jbd_sb::feature_compat"]
1955        [::std::mem::offset_of!(jbd_sb, feature_compat) - 36usize];
1956    ["Offset of field: jbd_sb::feature_incompat"]
1957        [::std::mem::offset_of!(jbd_sb, feature_incompat) - 40usize];
1958    ["Offset of field: jbd_sb::feature_ro_compat"]
1959        [::std::mem::offset_of!(jbd_sb, feature_ro_compat) - 44usize];
1960    ["Offset of field: jbd_sb::uuid"][::std::mem::offset_of!(jbd_sb, uuid) - 48usize];
1961    ["Offset of field: jbd_sb::nr_users"][::std::mem::offset_of!(jbd_sb, nr_users) - 64usize];
1962    ["Offset of field: jbd_sb::dynsuper"][::std::mem::offset_of!(jbd_sb, dynsuper) - 68usize];
1963    ["Offset of field: jbd_sb::max_transaction"]
1964        [::std::mem::offset_of!(jbd_sb, max_transaction) - 72usize];
1965    ["Offset of field: jbd_sb::max_trandata"]
1966        [::std::mem::offset_of!(jbd_sb, max_trandata) - 76usize];
1967    ["Offset of field: jbd_sb::checksum_type"]
1968        [::std::mem::offset_of!(jbd_sb, checksum_type) - 80usize];
1969    ["Offset of field: jbd_sb::padding2"][::std::mem::offset_of!(jbd_sb, padding2) - 81usize];
1970    ["Offset of field: jbd_sb::padding"][::std::mem::offset_of!(jbd_sb, padding) - 84usize];
1971    ["Offset of field: jbd_sb::checksum"][::std::mem::offset_of!(jbd_sb, checksum) - 252usize];
1972    ["Offset of field: jbd_sb::users"][::std::mem::offset_of!(jbd_sb, users) - 256usize];
1973};
1974unsafe extern "C" {
1975    pub static mut __mlibc_errno: ::std::os::raw::c_int;
1976}
1977unsafe extern "C" {
1978    pub fn __errno_location() -> *mut ::std::os::raw::c_int;
1979}
1980unsafe extern "C" {
1981    pub static mut program_invocation_name: *mut ::std::os::raw::c_char;
1982}
1983unsafe extern "C" {
1984    pub static mut program_invocation_short_name: *mut ::std::os::raw::c_char;
1985}
1986unsafe extern "C" {
1987    pub static mut __progname: *mut ::std::os::raw::c_char;
1988}
1989unsafe extern "C" {
1990    pub static mut __progname_full: *mut ::std::os::raw::c_char;
1991}
1992#[repr(C)]
1993#[derive(Debug, Copy, Clone)]
1994pub struct imaxdiv_t {
1995    pub quot: intmax_t,
1996    pub rem: intmax_t,
1997}
1998#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1999const _: () = {
2000    ["Size of imaxdiv_t"][::std::mem::size_of::<imaxdiv_t>() - 16usize];
2001    ["Alignment of imaxdiv_t"][::std::mem::align_of::<imaxdiv_t>() - 8usize];
2002    ["Offset of field: imaxdiv_t::quot"][::std::mem::offset_of!(imaxdiv_t, quot) - 0usize];
2003    ["Offset of field: imaxdiv_t::rem"][::std::mem::offset_of!(imaxdiv_t, rem) - 8usize];
2004};
2005unsafe extern "C" {
2006    pub fn imaxabs(__x: intmax_t) -> intmax_t;
2007}
2008unsafe extern "C" {
2009    pub fn imaxdiv(__x: intmax_t, __y: intmax_t) -> imaxdiv_t;
2010}
2011unsafe extern "C" {
2012    pub fn strtoimax(
2013        __string: *const ::std::os::raw::c_char,
2014        __end: *mut *mut ::std::os::raw::c_char,
2015        __base: ::std::os::raw::c_int,
2016    ) -> intmax_t;
2017}
2018unsafe extern "C" {
2019    pub fn strtoumax(
2020        __string: *const ::std::os::raw::c_char,
2021        __end: *mut *mut ::std::os::raw::c_char,
2022        __base: ::std::os::raw::c_int,
2023    ) -> uintmax_t;
2024}
2025unsafe extern "C" {
2026    pub fn wcstoimax(
2027        __string: *const wchar_t,
2028        __end: *mut *mut wchar_t,
2029        __base: ::std::os::raw::c_int,
2030    ) -> intmax_t;
2031}
2032unsafe extern "C" {
2033    pub fn wcstoumax(
2034        __string: *const wchar_t,
2035        __end: *mut *mut wchar_t,
2036        __base: ::std::os::raw::c_int,
2037    ) -> uintmax_t;
2038}
2039unsafe extern "C" {
2040    #[doc = "@brief   Global mask debug set.\n @param   m new debug mask."]
2041    pub fn ext4_dmask_set(m: u32);
2042}
2043unsafe extern "C" {
2044    #[doc = "@brief   Global mask debug clear.\n @param   m new debug mask."]
2045    pub fn ext4_dmask_clr(m: u32);
2046}
2047unsafe extern "C" {
2048    #[doc = "@brief   Global debug mask get.\n @return  debug mask"]
2049    pub fn ext4_dmask_get() -> u32;
2050}
2051pub type FILE = __mlibc_file_base;
2052pub type off_t = ::std::os::raw::c_long;
2053pub type off64_t = ::std::os::raw::c_long;
2054#[repr(C)]
2055#[derive(Debug, Copy, Clone)]
2056pub struct __mlibc_file_base {
2057    pub __buffer_ptr: *mut ::std::os::raw::c_char,
2058    pub __buffer_size: usize,
2059    pub __offset: usize,
2060    pub __io_offset: usize,
2061    pub __valid_limit: usize,
2062    pub __dirty_begin: usize,
2063    pub __dirty_end: usize,
2064    pub __unget_ptr: *mut ::std::os::raw::c_char,
2065    pub __io_mode: ::std::os::raw::c_int,
2066    pub __status_bits: ::std::os::raw::c_int,
2067}
2068#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2069const _: () = {
2070    ["Size of __mlibc_file_base"][::std::mem::size_of::<__mlibc_file_base>() - 72usize];
2071    ["Alignment of __mlibc_file_base"][::std::mem::align_of::<__mlibc_file_base>() - 8usize];
2072    ["Offset of field: __mlibc_file_base::__buffer_ptr"]
2073        [::std::mem::offset_of!(__mlibc_file_base, __buffer_ptr) - 0usize];
2074    ["Offset of field: __mlibc_file_base::__buffer_size"]
2075        [::std::mem::offset_of!(__mlibc_file_base, __buffer_size) - 8usize];
2076    ["Offset of field: __mlibc_file_base::__offset"]
2077        [::std::mem::offset_of!(__mlibc_file_base, __offset) - 16usize];
2078    ["Offset of field: __mlibc_file_base::__io_offset"]
2079        [::std::mem::offset_of!(__mlibc_file_base, __io_offset) - 24usize];
2080    ["Offset of field: __mlibc_file_base::__valid_limit"]
2081        [::std::mem::offset_of!(__mlibc_file_base, __valid_limit) - 32usize];
2082    ["Offset of field: __mlibc_file_base::__dirty_begin"]
2083        [::std::mem::offset_of!(__mlibc_file_base, __dirty_begin) - 40usize];
2084    ["Offset of field: __mlibc_file_base::__dirty_end"]
2085        [::std::mem::offset_of!(__mlibc_file_base, __dirty_end) - 48usize];
2086    ["Offset of field: __mlibc_file_base::__unget_ptr"]
2087        [::std::mem::offset_of!(__mlibc_file_base, __unget_ptr) - 56usize];
2088    ["Offset of field: __mlibc_file_base::__io_mode"]
2089        [::std::mem::offset_of!(__mlibc_file_base, __io_mode) - 64usize];
2090    ["Offset of field: __mlibc_file_base::__status_bits"]
2091        [::std::mem::offset_of!(__mlibc_file_base, __status_bits) - 68usize];
2092};
2093pub type fpos_t = off_t;
2094unsafe extern "C" {
2095    pub static mut stderr: *mut FILE;
2096}
2097unsafe extern "C" {
2098    pub static mut stdin: *mut FILE;
2099}
2100unsafe extern "C" {
2101    pub static mut stdout: *mut FILE;
2102}
2103unsafe extern "C" {
2104    pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2105}
2106unsafe extern "C" {
2107    pub fn rename(
2108        __old_path: *const ::std::os::raw::c_char,
2109        __new_path: *const ::std::os::raw::c_char,
2110    ) -> ::std::os::raw::c_int;
2111}
2112unsafe extern "C" {
2113    pub fn renameat(
2114        __olddirfd: ::std::os::raw::c_int,
2115        __old_path: *const ::std::os::raw::c_char,
2116        __newdirfd: ::std::os::raw::c_int,
2117        __new_path: *const ::std::os::raw::c_char,
2118    ) -> ::std::os::raw::c_int;
2119}
2120unsafe extern "C" {
2121    pub fn tmpfile() -> *mut FILE;
2122}
2123unsafe extern "C" {
2124    pub fn tmpnam(__buffer: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
2125}
2126unsafe extern "C" {
2127    pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int;
2128}
2129unsafe extern "C" {
2130    pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int;
2131}
2132unsafe extern "C" {
2133    pub fn fopen(
2134        __filename: *const ::std::os::raw::c_char,
2135        __mode: *const ::std::os::raw::c_char,
2136    ) -> *mut FILE;
2137}
2138unsafe extern "C" {
2139    pub fn freopen(
2140        __filename: *const ::std::os::raw::c_char,
2141        __mode: *const ::std::os::raw::c_char,
2142        __stream: *mut FILE,
2143    ) -> *mut FILE;
2144}
2145unsafe extern "C" {
2146    pub fn setbuf(__stream: *mut FILE, __buffer: *mut ::std::os::raw::c_char);
2147}
2148unsafe extern "C" {
2149    pub fn setvbuf(
2150        __stream: *mut FILE,
2151        __buffer: *mut ::std::os::raw::c_char,
2152        __mode: ::std::os::raw::c_int,
2153        __size: usize,
2154    ) -> ::std::os::raw::c_int;
2155}
2156unsafe extern "C" {
2157    pub fn setlinebuf(__stream: *mut FILE);
2158}
2159unsafe extern "C" {
2160    pub fn setbuffer(__stream: *mut FILE, __buffer: *mut ::std::os::raw::c_char, __size: usize);
2161}
2162unsafe extern "C" {
2163    pub fn fprintf(
2164        __stream: *mut FILE,
2165        __format: *const ::std::os::raw::c_char,
2166        ...
2167    ) -> ::std::os::raw::c_int;
2168}
2169unsafe extern "C" {
2170    pub fn fscanf(
2171        __stream: *mut FILE,
2172        __format: *const ::std::os::raw::c_char,
2173        ...
2174    ) -> ::std::os::raw::c_int;
2175}
2176unsafe extern "C" {
2177    pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
2178}
2179unsafe extern "C" {
2180    pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
2181}
2182unsafe extern "C" {
2183    pub fn snprintf(
2184        __buffer: *mut ::std::os::raw::c_char,
2185        __max_size: ::std::os::raw::c_ulong,
2186        __format: *const ::std::os::raw::c_char,
2187        ...
2188    ) -> ::std::os::raw::c_int;
2189}
2190unsafe extern "C" {
2191    pub fn sprintf(
2192        __buffer: *mut ::std::os::raw::c_char,
2193        __format: *const ::std::os::raw::c_char,
2194        ...
2195    ) -> ::std::os::raw::c_int;
2196}
2197unsafe extern "C" {
2198    pub fn sscanf(
2199        __buffer: *const ::std::os::raw::c_char,
2200        __format: *const ::std::os::raw::c_char,
2201        ...
2202    ) -> ::std::os::raw::c_int;
2203}
2204unsafe extern "C" {
2205    pub fn vfprintf(
2206        __stream: *mut FILE,
2207        __format: *const ::std::os::raw::c_char,
2208        __args: *mut __va_list_tag,
2209    ) -> ::std::os::raw::c_int;
2210}
2211unsafe extern "C" {
2212    pub fn vfscanf(
2213        __stream: *mut FILE,
2214        __format: *const ::std::os::raw::c_char,
2215        __args: *mut __va_list_tag,
2216    ) -> ::std::os::raw::c_int;
2217}
2218unsafe extern "C" {
2219    pub fn vprintf(
2220        __format: *const ::std::os::raw::c_char,
2221        __args: *mut __va_list_tag,
2222    ) -> ::std::os::raw::c_int;
2223}
2224unsafe extern "C" {
2225    pub fn vscanf(
2226        __format: *const ::std::os::raw::c_char,
2227        __args: *mut __va_list_tag,
2228    ) -> ::std::os::raw::c_int;
2229}
2230unsafe extern "C" {
2231    pub fn vsnprintf(
2232        __buffer: *mut ::std::os::raw::c_char,
2233        __max_size: ::std::os::raw::c_ulong,
2234        __format: *const ::std::os::raw::c_char,
2235        __args: *mut __va_list_tag,
2236    ) -> ::std::os::raw::c_int;
2237}
2238unsafe extern "C" {
2239    pub fn vsprintf(
2240        __buffer: *mut ::std::os::raw::c_char,
2241        __format: *const ::std::os::raw::c_char,
2242        __args: *mut __va_list_tag,
2243    ) -> ::std::os::raw::c_int;
2244}
2245unsafe extern "C" {
2246    pub fn vsscanf(
2247        __buffer: *const ::std::os::raw::c_char,
2248        __format: *const ::std::os::raw::c_char,
2249        __args: *mut __va_list_tag,
2250    ) -> ::std::os::raw::c_int;
2251}
2252unsafe extern "C" {
2253    pub fn vasprintf(
2254        __buffer: *mut *mut ::std::os::raw::c_char,
2255        __format: *const ::std::os::raw::c_char,
2256        __args: *mut __va_list_tag,
2257    ) -> ::std::os::raw::c_int;
2258}
2259unsafe extern "C" {
2260    pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int;
2261}
2262unsafe extern "C" {
2263    pub fn fgets(
2264        __buffer: *mut ::std::os::raw::c_char,
2265        __max_size: ::std::os::raw::c_int,
2266        __stream: *mut FILE,
2267    ) -> *mut ::std::os::raw::c_char;
2268}
2269unsafe extern "C" {
2270    pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
2271}
2272unsafe extern "C" {
2273    pub fn fputs(
2274        __string: *const ::std::os::raw::c_char,
2275        __stream: *mut FILE,
2276    ) -> ::std::os::raw::c_int;
2277}
2278unsafe extern "C" {
2279    pub fn gets(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
2280}
2281unsafe extern "C" {
2282    pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int;
2283}
2284unsafe extern "C" {
2285    pub fn getchar() -> ::std::os::raw::c_int;
2286}
2287unsafe extern "C" {
2288    pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
2289}
2290unsafe extern "C" {
2291    pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
2292}
2293unsafe extern "C" {
2294    pub fn puts(__string: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2295}
2296unsafe extern "C" {
2297    pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
2298}
2299unsafe extern "C" {
2300    pub fn fread(
2301        __buffer: *mut ::std::os::raw::c_void,
2302        __size: ::std::os::raw::c_ulong,
2303        __count: ::std::os::raw::c_ulong,
2304        __stream: *mut FILE,
2305    ) -> ::std::os::raw::c_ulong;
2306}
2307unsafe extern "C" {
2308    pub fn fwrite(
2309        __buffer: *const ::std::os::raw::c_void,
2310        __size: ::std::os::raw::c_ulong,
2311        __count: ::std::os::raw::c_ulong,
2312        __stream: *mut FILE,
2313    ) -> ::std::os::raw::c_ulong;
2314}
2315unsafe extern "C" {
2316    pub fn fgetpos(__stream: *mut FILE, __position: *mut fpos_t) -> ::std::os::raw::c_int;
2317}
2318unsafe extern "C" {
2319    pub fn fseek(
2320        __stream: *mut FILE,
2321        __offset: ::std::os::raw::c_long,
2322        __whence: ::std::os::raw::c_int,
2323    ) -> ::std::os::raw::c_int;
2324}
2325unsafe extern "C" {
2326    pub fn fsetpos(__stream: *mut FILE, __position: *const fpos_t) -> ::std::os::raw::c_int;
2327}
2328unsafe extern "C" {
2329    pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long;
2330}
2331unsafe extern "C" {
2332    pub fn rewind(__stream: *mut FILE);
2333}
2334unsafe extern "C" {
2335    pub fn clearerr(__stream: *mut FILE);
2336}
2337unsafe extern "C" {
2338    pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int;
2339}
2340unsafe extern "C" {
2341    pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int;
2342}
2343unsafe extern "C" {
2344    pub fn perror(__string: *const ::std::os::raw::c_char);
2345}
2346unsafe extern "C" {
2347    pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
2348}
2349unsafe extern "C" {
2350    pub fn getchar_unlocked() -> ::std::os::raw::c_int;
2351}
2352unsafe extern "C" {
2353    pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
2354}
2355unsafe extern "C" {
2356    pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
2357}
2358unsafe extern "C" {
2359    pub fn getline(
2360        __linep: *mut *mut ::std::os::raw::c_char,
2361        __sizep: *mut usize,
2362        __stream: *mut FILE,
2363    ) -> isize;
2364}
2365unsafe extern "C" {
2366    pub fn getdelim(
2367        __linep: *mut *mut ::std::os::raw::c_char,
2368        __sizep: *mut usize,
2369        __delim: ::std::os::raw::c_int,
2370        __stream: *mut FILE,
2371    ) -> isize;
2372}
2373unsafe extern "C" {
2374    pub fn asprintf(
2375        __buffer: *mut *mut ::std::os::raw::c_char,
2376        __format: *const ::std::os::raw::c_char,
2377        ...
2378    ) -> ::std::os::raw::c_int;
2379}
2380unsafe extern "C" {
2381    pub fn flockfile(__stream: *mut FILE);
2382}
2383unsafe extern "C" {
2384    pub fn funlockfile(__stream: *mut FILE);
2385}
2386unsafe extern "C" {
2387    pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int;
2388}
2389unsafe extern "C" {
2390    pub fn clearerr_unlocked(__stream: *mut FILE);
2391}
2392unsafe extern "C" {
2393    pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
2394}
2395unsafe extern "C" {
2396    pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
2397}
2398unsafe extern "C" {
2399    pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
2400}
2401unsafe extern "C" {
2402    pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
2403}
2404unsafe extern "C" {
2405    pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
2406}
2407unsafe extern "C" {
2408    pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE)
2409        -> ::std::os::raw::c_int;
2410}
2411unsafe extern "C" {
2412    pub fn fread_unlocked(
2413        __buffer: *mut ::std::os::raw::c_void,
2414        __size: usize,
2415        __count: usize,
2416        __stream: *mut FILE,
2417    ) -> usize;
2418}
2419unsafe extern "C" {
2420    pub fn fwrite_unlocked(
2421        __buffer: *const ::std::os::raw::c_void,
2422        __size: usize,
2423        __count: usize,
2424        __stream: *mut FILE,
2425    ) -> usize;
2426}
2427unsafe extern "C" {
2428    pub fn fgets_unlocked(
2429        __buffer: *mut ::std::os::raw::c_char,
2430        __size: ::std::os::raw::c_int,
2431        __stream: *mut FILE,
2432    ) -> *mut ::std::os::raw::c_char;
2433}
2434unsafe extern "C" {
2435    pub fn fputs_unlocked(
2436        __buffer: *const ::std::os::raw::c_char,
2437        __stream: *mut FILE,
2438    ) -> ::std::os::raw::c_int;
2439}
2440unsafe extern "C" {
2441    pub fn fileno(__file: *mut FILE) -> ::std::os::raw::c_int;
2442}
2443unsafe extern "C" {
2444    pub fn fdopen(__fd: ::std::os::raw::c_int, __mode: *const ::std::os::raw::c_char) -> *mut FILE;
2445}
2446unsafe extern "C" {
2447    pub fn fmemopen(
2448        __buf: *mut ::std::os::raw::c_void,
2449        __size: usize,
2450        __mode: *const ::std::os::raw::c_char,
2451    ) -> *mut FILE;
2452}
2453unsafe extern "C" {
2454    pub fn pclose(__file: *mut FILE) -> ::std::os::raw::c_int;
2455}
2456unsafe extern "C" {
2457    pub fn popen(
2458        __command: *const ::std::os::raw::c_char,
2459        __type: *const ::std::os::raw::c_char,
2460    ) -> *mut FILE;
2461}
2462unsafe extern "C" {
2463    pub fn open_memstream(
2464        __buf: *mut *mut ::std::os::raw::c_char,
2465        __sizeloc: *mut usize,
2466    ) -> *mut FILE;
2467}
2468unsafe extern "C" {
2469    pub fn fseeko(
2470        __stream: *mut FILE,
2471        __offset: off_t,
2472        __whence: ::std::os::raw::c_int,
2473    ) -> ::std::os::raw::c_int;
2474}
2475unsafe extern "C" {
2476    pub fn fseeko64(
2477        __stream: *mut FILE,
2478        __offset: off64_t,
2479        __whence: ::std::os::raw::c_int,
2480    ) -> ::std::os::raw::c_int;
2481}
2482unsafe extern "C" {
2483    pub fn ftello(__stream: *mut FILE) -> off_t;
2484}
2485unsafe extern "C" {
2486    pub fn ftello64(__stream: *mut FILE) -> off64_t;
2487}
2488unsafe extern "C" {
2489    pub fn dprintf(
2490        __fd: ::std::os::raw::c_int,
2491        __format: *const ::std::os::raw::c_char,
2492        ...
2493    ) -> ::std::os::raw::c_int;
2494}
2495unsafe extern "C" {
2496    pub fn vdprintf(
2497        __fd: ::std::os::raw::c_int,
2498        __format: *const ::std::os::raw::c_char,
2499        __args: *mut __va_list_tag,
2500    ) -> ::std::os::raw::c_int;
2501}
2502unsafe extern "C" {
2503    pub fn fgetln(__stream: *mut FILE, __size: *mut usize) -> *mut ::std::os::raw::c_char;
2504}
2505unsafe extern "C" {
2506    pub fn tempnam(
2507        __dir: *const ::std::os::raw::c_char,
2508        __pfx: *const ::std::os::raw::c_char,
2509    ) -> *mut ::std::os::raw::c_char;
2510}
2511pub type cookie_read_function_t = ::std::option::Option<
2512    unsafe extern "C" fn(
2513        __cookie: *mut ::std::os::raw::c_void,
2514        __buffer: *mut ::std::os::raw::c_char,
2515        __size: usize,
2516    ) -> isize,
2517>;
2518pub type cookie_write_function_t = ::std::option::Option<
2519    unsafe extern "C" fn(
2520        __cookie: *mut ::std::os::raw::c_void,
2521        __buffer: *const ::std::os::raw::c_char,
2522        __size: usize,
2523    ) -> isize,
2524>;
2525pub type cookie_seek_function_t = ::std::option::Option<
2526    unsafe extern "C" fn(
2527        __cookie: *mut ::std::os::raw::c_void,
2528        arg1: *mut off_t,
2529        arg2: ::std::os::raw::c_int,
2530    ) -> ::std::os::raw::c_int,
2531>;
2532pub type cookie_close_function_t = ::std::option::Option<
2533    unsafe extern "C" fn(__cookie: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
2534>;
2535#[repr(C)]
2536#[derive(Debug, Copy, Clone)]
2537pub struct _IO_cookie_io_functions_t {
2538    pub read: cookie_read_function_t,
2539    pub write: cookie_write_function_t,
2540    pub seek: cookie_seek_function_t,
2541    pub close: cookie_close_function_t,
2542}
2543#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2544const _: () = {
2545    ["Size of _IO_cookie_io_functions_t"]
2546        [::std::mem::size_of::<_IO_cookie_io_functions_t>() - 32usize];
2547    ["Alignment of _IO_cookie_io_functions_t"]
2548        [::std::mem::align_of::<_IO_cookie_io_functions_t>() - 8usize];
2549    ["Offset of field: _IO_cookie_io_functions_t::read"]
2550        [::std::mem::offset_of!(_IO_cookie_io_functions_t, read) - 0usize];
2551    ["Offset of field: _IO_cookie_io_functions_t::write"]
2552        [::std::mem::offset_of!(_IO_cookie_io_functions_t, write) - 8usize];
2553    ["Offset of field: _IO_cookie_io_functions_t::seek"]
2554        [::std::mem::offset_of!(_IO_cookie_io_functions_t, seek) - 16usize];
2555    ["Offset of field: _IO_cookie_io_functions_t::close"]
2556        [::std::mem::offset_of!(_IO_cookie_io_functions_t, close) - 24usize];
2557};
2558pub type cookie_io_functions_t = _IO_cookie_io_functions_t;
2559#[doc = "@brief   OS dependent lock interface."]
2560#[repr(C)]
2561#[derive(Debug, Copy, Clone)]
2562pub struct ext4_lock {
2563    #[doc = "@brief   Lock access to mount point."]
2564    pub lock: ::std::option::Option<unsafe extern "C" fn()>,
2565    #[doc = "@brief   Unlock access to mount point."]
2566    pub unlock: ::std::option::Option<unsafe extern "C" fn()>,
2567}
2568#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2569const _: () = {
2570    ["Size of ext4_lock"][::std::mem::size_of::<ext4_lock>() - 16usize];
2571    ["Alignment of ext4_lock"][::std::mem::align_of::<ext4_lock>() - 8usize];
2572    ["Offset of field: ext4_lock::lock"][::std::mem::offset_of!(ext4_lock, lock) - 0usize];
2573    ["Offset of field: ext4_lock::unlock"][::std::mem::offset_of!(ext4_lock, unlock) - 8usize];
2574};
2575#[doc = "@brief   File descriptor."]
2576#[repr(C)]
2577#[derive(Debug, Copy, Clone)]
2578pub struct ext4_file {
2579    #[doc = "@brief   Mount point handle."]
2580    pub mp: *mut ext4_mountpoint,
2581    #[doc = "@brief   File inode id."]
2582    pub inode: u32,
2583    #[doc = "@brief   Open flags."]
2584    pub flags: u32,
2585    #[doc = "@brief   File size."]
2586    pub fsize: u64,
2587    #[doc = "@brief   Actual file position."]
2588    pub fpos: u64,
2589}
2590#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2591const _: () = {
2592    ["Size of ext4_file"][::std::mem::size_of::<ext4_file>() - 32usize];
2593    ["Alignment of ext4_file"][::std::mem::align_of::<ext4_file>() - 8usize];
2594    ["Offset of field: ext4_file::mp"][::std::mem::offset_of!(ext4_file, mp) - 0usize];
2595    ["Offset of field: ext4_file::inode"][::std::mem::offset_of!(ext4_file, inode) - 8usize];
2596    ["Offset of field: ext4_file::flags"][::std::mem::offset_of!(ext4_file, flags) - 12usize];
2597    ["Offset of field: ext4_file::fsize"][::std::mem::offset_of!(ext4_file, fsize) - 16usize];
2598    ["Offset of field: ext4_file::fpos"][::std::mem::offset_of!(ext4_file, fpos) - 24usize];
2599};
2600#[doc = "@brief   Directory entry descriptor."]
2601#[repr(C)]
2602#[derive(Debug, Copy, Clone)]
2603pub struct ext4_direntry {
2604    pub inode: u32,
2605    pub entry_length: u16,
2606    pub name_length: u8,
2607    pub inode_type: u8,
2608    pub name: [u8; 255usize],
2609}
2610#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2611const _: () = {
2612    ["Size of ext4_direntry"][::std::mem::size_of::<ext4_direntry>() - 264usize];
2613    ["Alignment of ext4_direntry"][::std::mem::align_of::<ext4_direntry>() - 4usize];
2614    ["Offset of field: ext4_direntry::inode"]
2615        [::std::mem::offset_of!(ext4_direntry, inode) - 0usize];
2616    ["Offset of field: ext4_direntry::entry_length"]
2617        [::std::mem::offset_of!(ext4_direntry, entry_length) - 4usize];
2618    ["Offset of field: ext4_direntry::name_length"]
2619        [::std::mem::offset_of!(ext4_direntry, name_length) - 6usize];
2620    ["Offset of field: ext4_direntry::inode_type"]
2621        [::std::mem::offset_of!(ext4_direntry, inode_type) - 7usize];
2622    ["Offset of field: ext4_direntry::name"][::std::mem::offset_of!(ext4_direntry, name) - 8usize];
2623};
2624#[doc = "@brief   Directory descriptor."]
2625#[repr(C)]
2626#[derive(Debug, Copy, Clone)]
2627pub struct ext4_dir {
2628    #[doc = "@brief   File descriptor."]
2629    pub f: ext4_file,
2630    #[doc = "@brief   Current directory entry."]
2631    pub de: ext4_direntry,
2632    #[doc = "@brief   Next entry offset."]
2633    pub next_off: u64,
2634}
2635#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2636const _: () = {
2637    ["Size of ext4_dir"][::std::mem::size_of::<ext4_dir>() - 304usize];
2638    ["Alignment of ext4_dir"][::std::mem::align_of::<ext4_dir>() - 8usize];
2639    ["Offset of field: ext4_dir::f"][::std::mem::offset_of!(ext4_dir, f) - 0usize];
2640    ["Offset of field: ext4_dir::de"][::std::mem::offset_of!(ext4_dir, de) - 32usize];
2641    ["Offset of field: ext4_dir::next_off"][::std::mem::offset_of!(ext4_dir, next_off) - 296usize];
2642};
2643unsafe extern "C" {
2644    #[doc = "@brief   Register block device.\n\n @param   bd Block device.\n @param   dev_name Block device name.\n\n @return  Standard error code."]
2645    pub fn ext4_device_register(
2646        bd: *mut ext4_blockdev,
2647        dev_name: *const ::std::os::raw::c_char,
2648    ) -> ::std::os::raw::c_int;
2649}
2650unsafe extern "C" {
2651    #[doc = "@brief   Un-register block device.\n\n @param   dev_name Block device name.\n\n @return  Standard error code."]
2652    pub fn ext4_device_unregister(dev_name: *const ::std::os::raw::c_char)
2653        -> ::std::os::raw::c_int;
2654}
2655unsafe extern "C" {
2656    #[doc = "@brief   Un-register all block devices.\n\n @return  Standard error code."]
2657    pub fn ext4_device_unregister_all() -> ::std::os::raw::c_int;
2658}
2659unsafe extern "C" {
2660    #[doc = "@brief   Mount a block device with EXT4 partition to the mount point.\n\n @param   dev_name Block device name (@ref ext4_device_register).\n @param   mount_point Mount point, for example:\n          -   /\n          -   /my_partition/\n          -   /my_second_partition/\n @param   read_only mount as read-only mode.\n\n @return Standard error code"]
2661    pub fn ext4_mount(
2662        dev_name: *const ::std::os::raw::c_char,
2663        mount_point: *const ::std::os::raw::c_char,
2664        read_only: bool,
2665    ) -> ::std::os::raw::c_int;
2666}
2667unsafe extern "C" {
2668    #[doc = "@brief   Umount operation.\n\n @param   mount_point Mount point.\n\n @return  Standard error code"]
2669    pub fn ext4_umount(mount_point: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2670}
2671#[repr(C)]
2672#[derive(Debug, Copy, Clone)]
2673pub struct ext4_mountpoint {
2674    _unused: [u8; 0],
2675}
2676unsafe extern "C" {
2677    pub fn ext4_get_mount(path: *const ::std::os::raw::c_char) -> *mut ext4_mountpoint;
2678}
2679unsafe extern "C" {
2680    #[doc = "@brief   Starts journaling. Journaling start/stop functions are transparent\n          and might be used on filesystems without journaling support.\n @warning Usage:\n              ext4_mount(\"sda1\", \"/\");\n              ext4_journal_start(\"/\");\n\n              //File operations here...\n\n              ext4_journal_stop(\"/\");\n              ext4_umount(\"/\");\n @param   mount_point Mount point.\n\n @return  Standard error code."]
2681    pub fn ext4_journal_start(mount_point: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2682}
2683unsafe extern "C" {
2684    #[doc = "@brief   Stops journaling. Journaling start/stop functions are transparent\n          and might be used on filesystems without journaling support.\n\n @param   mount_point Mount point name.\n\n @return  Standard error code."]
2685    pub fn ext4_journal_stop(mount_point: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2686}
2687unsafe extern "C" {
2688    #[doc = "@brief   Journal recovery.\n @warning Must be called after @ref ext4_mount.\n\n @param   mount_point Mount point.\n\n @return Standard error code."]
2689    pub fn ext4_recover(mount_point: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2690}
2691#[doc = "@brief   Some of the filesystem stats."]
2692#[repr(C)]
2693#[derive(Debug, Copy, Clone)]
2694pub struct ext4_mount_stats {
2695    pub inodes_count: u32,
2696    pub free_inodes_count: u32,
2697    pub blocks_count: u64,
2698    pub free_blocks_count: u64,
2699    pub block_size: u32,
2700    pub block_group_count: u32,
2701    pub blocks_per_group: u32,
2702    pub inodes_per_group: u32,
2703    pub volume_name: [::std::os::raw::c_char; 16usize],
2704}
2705#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2706const _: () = {
2707    ["Size of ext4_mount_stats"][::std::mem::size_of::<ext4_mount_stats>() - 56usize];
2708    ["Alignment of ext4_mount_stats"][::std::mem::align_of::<ext4_mount_stats>() - 8usize];
2709    ["Offset of field: ext4_mount_stats::inodes_count"]
2710        [::std::mem::offset_of!(ext4_mount_stats, inodes_count) - 0usize];
2711    ["Offset of field: ext4_mount_stats::free_inodes_count"]
2712        [::std::mem::offset_of!(ext4_mount_stats, free_inodes_count) - 4usize];
2713    ["Offset of field: ext4_mount_stats::blocks_count"]
2714        [::std::mem::offset_of!(ext4_mount_stats, blocks_count) - 8usize];
2715    ["Offset of field: ext4_mount_stats::free_blocks_count"]
2716        [::std::mem::offset_of!(ext4_mount_stats, free_blocks_count) - 16usize];
2717    ["Offset of field: ext4_mount_stats::block_size"]
2718        [::std::mem::offset_of!(ext4_mount_stats, block_size) - 24usize];
2719    ["Offset of field: ext4_mount_stats::block_group_count"]
2720        [::std::mem::offset_of!(ext4_mount_stats, block_group_count) - 28usize];
2721    ["Offset of field: ext4_mount_stats::blocks_per_group"]
2722        [::std::mem::offset_of!(ext4_mount_stats, blocks_per_group) - 32usize];
2723    ["Offset of field: ext4_mount_stats::inodes_per_group"]
2724        [::std::mem::offset_of!(ext4_mount_stats, inodes_per_group) - 36usize];
2725    ["Offset of field: ext4_mount_stats::volume_name"]
2726        [::std::mem::offset_of!(ext4_mount_stats, volume_name) - 40usize];
2727};
2728unsafe extern "C" {
2729    #[doc = "@brief   Get file mount point stats.\n\n @param   mount_point Mount point.\n @param   stats Filesystem stats.\n\n @return Standard error code."]
2730    pub fn ext4_mount_point_stats(
2731        mount_point: *const ::std::os::raw::c_char,
2732        stats: *mut ext4_mount_stats,
2733    ) -> ::std::os::raw::c_int;
2734}
2735unsafe extern "C" {
2736    #[doc = "@brief   Setup OS lock routines.\n\n @param   mount_point Mount point.\n @param   locks  Lock and unlock functions\n\n @return Standard error code."]
2737    pub fn ext4_mount_setup_locks(
2738        mount_point: *const ::std::os::raw::c_char,
2739        locks: *const ext4_lock,
2740    ) -> ::std::os::raw::c_int;
2741}
2742unsafe extern "C" {
2743    #[doc = "@brief   Acquire the filesystem superblock pointer of a mp.\n\n @param   mount_point Mount point.\n @param   sb Superblock handle\n\n @return Standard error code."]
2744    pub fn ext4_get_sblock(
2745        mount_point: *const ::std::os::raw::c_char,
2746        sb: *mut *mut ext4_sblock,
2747    ) -> ::std::os::raw::c_int;
2748}
2749unsafe extern "C" {
2750    #[doc = "@brief   Enable/disable write back cache mode.\n @warning Default model of cache is write trough. It means that when You do:\n\n          ext4_fopen(...);\n          ext4_fwrite(...);\n                           < --- data is flushed to physical drive\n\n          When you do:\n          ext4_cache_write_back(..., 1);\n          ext4_fopen(...);\n          ext4_fwrite(...);\n                           < --- data is NOT flushed to physical drive\n          ext4_cache_write_back(..., 0);\n                           < --- when write back mode is disabled all\n                                 cache data will be flushed\n To enable write back mode permanently just call this function\n once after ext4_mount (and disable before ext4_umount).\n\n Some of the function use write back cache mode internally.\n If you enable write back mode twice you have to disable it twice\n to flush all data:\n\n      ext4_cache_write_back(..., 1);\n      ext4_cache_write_back(..., 1);\n\n      ext4_cache_write_back(..., 0);\n      ext4_cache_write_back(..., 0);\n\n Write back mode is useful when you want to create a lot of empty\n files/directories.\n\n @param   path Mount point.\n @param   on Enable/disable cache writeback mode.\n\n @return Standard error code."]
2751    pub fn ext4_cache_write_back(
2752        path: *const ::std::os::raw::c_char,
2753        on: bool,
2754    ) -> ::std::os::raw::c_int;
2755}
2756unsafe extern "C" {
2757    #[doc = "@brief   Force cache flush.\n\n @param   path Mount point.\n\n @return  Standard error code."]
2758    pub fn ext4_cache_flush(path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2759}
2760unsafe extern "C" {
2761    #[doc = "@brief   Remove file by path.\n\n @param   path Path to file.\n\n @return  Standard error code."]
2762    pub fn ext4_fremove(path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2763}
2764unsafe extern "C" {
2765    #[doc = "@brief   Create a hardlink for a file.\n\n @param   path Path to file.\n @param   hardlink_path Path of hardlink.\n\n @return  Standard error code."]
2766    pub fn ext4_flink(
2767        path: *const ::std::os::raw::c_char,
2768        hardlink_path: *const ::std::os::raw::c_char,
2769    ) -> ::std::os::raw::c_int;
2770}
2771unsafe extern "C" {
2772    #[doc = "@brief Rename file.\n @param path Source.\n @param new_path Destination.\n @return  Standard error code."]
2773    pub fn ext4_frename(
2774        path: *const ::std::os::raw::c_char,
2775        new_path: *const ::std::os::raw::c_char,
2776    ) -> ::std::os::raw::c_int;
2777}
2778unsafe extern "C" {
2779    #[doc = "@brief   File open function.\n\n @param   file  File handle.\n @param   path  File path, has to start from mount point:/my_partition/file.\n @param   flags File open flags.\n  |---------------------------------------------------------------|\n  |   r or rb                 O_RDONLY                            |\n  |---------------------------------------------------------------|\n  |   w or wb                 O_WRONLY|O_CREAT|O_TRUNC            |\n  |---------------------------------------------------------------|\n  |   a or ab                 O_WRONLY|O_CREAT|O_APPEND           |\n  |---------------------------------------------------------------|\n  |   r+ or rb+ or r+b        O_RDWR                              |\n  |---------------------------------------------------------------|\n  |   w+ or wb+ or w+b        O_RDWR|O_CREAT|O_TRUNC              |\n  |---------------------------------------------------------------|\n  |   a+ or ab+ or a+b        O_RDWR|O_CREAT|O_APPEND             |\n  |---------------------------------------------------------------|\n\n @return  Standard error code."]
2780    pub fn ext4_fopen(
2781        file: *mut ext4_file,
2782        path: *const ::std::os::raw::c_char,
2783        flags: *const ::std::os::raw::c_char,
2784    ) -> ::std::os::raw::c_int;
2785}
2786unsafe extern "C" {
2787    #[doc = "@brief   Alternate file open function.\n\n @param   file  File handle.\n @param   path  File path, has to start from mount point:/my_partition/file.\n @param   flags File open flags.\n\n @return  Standard error code."]
2788    pub fn ext4_fopen2(
2789        file: *mut ext4_file,
2790        path: *const ::std::os::raw::c_char,
2791        flags: ::std::os::raw::c_int,
2792    ) -> ::std::os::raw::c_int;
2793}
2794unsafe extern "C" {
2795    #[doc = "@brief   File close function.\n\n @param   file File handle.\n\n @return  Standard error code."]
2796    pub fn ext4_fclose(file: *mut ext4_file) -> ::std::os::raw::c_int;
2797}
2798unsafe extern "C" {
2799    #[doc = "@brief   File truncate function.\n\n @param   file File handle.\n @param   size New file size.\n\n @return  Standard error code."]
2800    pub fn ext4_ftruncate(file: *mut ext4_file, size: u64) -> ::std::os::raw::c_int;
2801}
2802unsafe extern "C" {
2803    #[doc = "@brief   Read data from file.\n\n @param   file File handle.\n @param   buf  Output buffer.\n @param   size Bytes to read.\n @param   rcnt Bytes read (NULL allowed).\n\n @return  Standard error code."]
2804    pub fn ext4_fread(
2805        file: *mut ext4_file,
2806        buf: *mut ::std::os::raw::c_void,
2807        size: usize,
2808        rcnt: *mut usize,
2809    ) -> ::std::os::raw::c_int;
2810}
2811unsafe extern "C" {
2812    #[doc = "@brief   Write data to file.\n\n @param   file File handle.\n @param   buf  Data to write\n @param   size Write length..\n @param   wcnt Bytes written (NULL allowed).\n\n @return  Standard error code."]
2813    pub fn ext4_fwrite(
2814        file: *mut ext4_file,
2815        buf: *const ::std::os::raw::c_void,
2816        size: usize,
2817        wcnt: *mut usize,
2818    ) -> ::std::os::raw::c_int;
2819}
2820unsafe extern "C" {
2821    #[doc = "@brief   File seek operation.\n\n @param   file File handle.\n @param   offset Offset to seek.\n @param   origin Seek type:\n              @ref SEEK_SET\n              @ref SEEK_CUR\n              @ref SEEK_END\n\n @return  Standard error code."]
2822    pub fn ext4_fseek(file: *mut ext4_file, offset: i64, origin: u32) -> ::std::os::raw::c_int;
2823}
2824unsafe extern "C" {
2825    #[doc = "@brief   Get file position.\n\n @param   file File handle.\n\n @return  Actual file position"]
2826    pub fn ext4_ftell(file: *mut ext4_file) -> u64;
2827}
2828unsafe extern "C" {
2829    #[doc = "@brief   Get file size.\n\n @param   file File handle.\n\n @return  File size."]
2830    pub fn ext4_fsize(file: *mut ext4_file) -> u64;
2831}
2832unsafe extern "C" {
2833    #[doc = "@brief Get inode of file/directory/link.\n\n @param path    Parh to file/dir/link.\n @param ret_ino Inode number.\n @param inode   Inode internals.\n\n @return  Standard error code."]
2834    pub fn ext4_raw_inode_fill(
2835        path: *const ::std::os::raw::c_char,
2836        ret_ino: *mut u32,
2837        inode: *mut ext4_inode,
2838    ) -> ::std::os::raw::c_int;
2839}
2840unsafe extern "C" {
2841    #[doc = "@brief Check if inode exists.\n\n @param path    Parh to file/dir/link.\n @param type    Inode type.\n                @ref EXT4_DIRENTRY_UNKNOWN\n                @ref EXT4_DE_REG_FILE\n                @ref EXT4_DE_DIR\n                @ref EXT4_DE_CHRDEV\n                @ref EXT4_DE_BLKDEV\n                @ref EXT4_DE_FIFO\n                @ref EXT4_DE_SOCK\n                @ref EXT4_DE_SYMLINK\n\n @return  Standard error code."]
2842    pub fn ext4_inode_exist(
2843        path: *const ::std::os::raw::c_char,
2844        type_: ::std::os::raw::c_int,
2845    ) -> ::std::os::raw::c_int;
2846}
2847unsafe extern "C" {
2848    #[doc = "@brief Change file/directory/link mode bits.\n\n @param path Path to file/dir/link.\n @param mode New mode bits (for example 0777).\n\n @return  Standard error code."]
2849    pub fn ext4_mode_set(path: *const ::std::os::raw::c_char, mode: u32) -> ::std::os::raw::c_int;
2850}
2851unsafe extern "C" {
2852    #[doc = "@brief Get file/directory/link mode bits.\n\n @param path Path to file/dir/link.\n @param mode New mode bits (for example 0777).\n\n @return  Standard error code."]
2853    pub fn ext4_mode_get(
2854        path: *const ::std::os::raw::c_char,
2855        mode: *mut u32,
2856    ) -> ::std::os::raw::c_int;
2857}
2858unsafe extern "C" {
2859    #[doc = "@brief Change file owner and group.\n\n @param path Path to file/dir/link.\n @param uid  User id.\n @param gid  Group id.\n\n @return  Standard error code."]
2860    pub fn ext4_owner_set(
2861        path: *const ::std::os::raw::c_char,
2862        uid: u32,
2863        gid: u32,
2864    ) -> ::std::os::raw::c_int;
2865}
2866unsafe extern "C" {
2867    #[doc = "@brief Get file/directory/link owner and group.\n\n @param path Path to file/dir/link.\n @param uid  User id.\n @param gid  Group id.\n\n @return  Standard error code."]
2868    pub fn ext4_owner_get(
2869        path: *const ::std::os::raw::c_char,
2870        uid: *mut u32,
2871        gid: *mut u32,
2872    ) -> ::std::os::raw::c_int;
2873}
2874unsafe extern "C" {
2875    #[doc = "@brief Set file/directory/link access time.\n\n @param path  Path to file/dir/link.\n @param atime Access timestamp.\n\n @return  Standard error code."]
2876    pub fn ext4_atime_set(path: *const ::std::os::raw::c_char, atime: u32)
2877        -> ::std::os::raw::c_int;
2878}
2879unsafe extern "C" {
2880    #[doc = "@brief Set file/directory/link modify time.\n\n @param path  Path to file/dir/link.\n @param mtime Modify timestamp.\n\n @return  Standard error code."]
2881    pub fn ext4_mtime_set(path: *const ::std::os::raw::c_char, mtime: u32)
2882        -> ::std::os::raw::c_int;
2883}
2884unsafe extern "C" {
2885    #[doc = "@brief Set file/directory/link change time.\n\n @param path  Path to file/dir/link.\n @param ctime Change timestamp.\n\n @return  Standard error code."]
2886    pub fn ext4_ctime_set(path: *const ::std::os::raw::c_char, ctime: u32)
2887        -> ::std::os::raw::c_int;
2888}
2889unsafe extern "C" {
2890    #[doc = "@brief Get file/directory/link access time.\n\n @param path  Path to file/dir/link.\n @param atime Access timestamp.\n\n @return  Standard error code."]
2891    pub fn ext4_atime_get(
2892        path: *const ::std::os::raw::c_char,
2893        atime: *mut u32,
2894    ) -> ::std::os::raw::c_int;
2895}
2896unsafe extern "C" {
2897    #[doc = "@brief Get file/directory/link modify time.\n\n @param path  Path to file/dir/link.\n @param mtime Modify timestamp.\n\n @return  Standard error code."]
2898    pub fn ext4_mtime_get(
2899        path: *const ::std::os::raw::c_char,
2900        mtime: *mut u32,
2901    ) -> ::std::os::raw::c_int;
2902}
2903unsafe extern "C" {
2904    #[doc = "@brief Get file/directory/link change time.\n\n @param path  Pathto file/dir/link.\n @param ctime Change timestamp.\n\n @return  standard error code"]
2905    pub fn ext4_ctime_get(
2906        path: *const ::std::os::raw::c_char,
2907        ctime: *mut u32,
2908    ) -> ::std::os::raw::c_int;
2909}
2910unsafe extern "C" {
2911    #[doc = "@brief Create symbolic link.\n\n @param target Destination entry path.\n @param path   Source entry path.\n\n @return  Standard error code."]
2912    pub fn ext4_fsymlink(
2913        target: *const ::std::os::raw::c_char,
2914        path: *const ::std::os::raw::c_char,
2915    ) -> ::std::os::raw::c_int;
2916}
2917unsafe extern "C" {
2918    #[doc = "@brief Create special file.\n @param path     Path to new special file.\n @param filetype Filetype of the new special file.\n \t           (that must not be regular file, directory, or unknown type)\n @param dev      If filetype is char device or block device,\n \t           the device number will become the payload in the inode.\n @return  Standard error code."]
2919    pub fn ext4_mknod(
2920        path: *const ::std::os::raw::c_char,
2921        filetype: ::std::os::raw::c_int,
2922        dev: u32,
2923    ) -> ::std::os::raw::c_int;
2924}
2925unsafe extern "C" {
2926    #[doc = "@brief Read symbolic link payload.\n\n @param path    Path to symlink.\n @param buf     Output buffer.\n @param bufsize Output buffer max size.\n @param rcnt    Bytes read.\n\n @return  Standard error code."]
2927    pub fn ext4_readlink(
2928        path: *const ::std::os::raw::c_char,
2929        buf: *mut ::std::os::raw::c_char,
2930        bufsize: usize,
2931        rcnt: *mut usize,
2932    ) -> ::std::os::raw::c_int;
2933}
2934unsafe extern "C" {
2935    #[doc = "@brief Set extended attribute.\n\n @param path      Path to file/directory\n @param name      Name of the entry to add.\n @param name_len  Length of @name in bytes.\n @param data      Data of the entry to add.\n @param data_size Size of data to add.\n\n @return  Standard error code."]
2936    pub fn ext4_setxattr(
2937        path: *const ::std::os::raw::c_char,
2938        name: *const ::std::os::raw::c_char,
2939        name_len: usize,
2940        data: *const ::std::os::raw::c_void,
2941        data_size: usize,
2942    ) -> ::std::os::raw::c_int;
2943}
2944unsafe extern "C" {
2945    #[doc = "@brief Get extended attribute.\n\n @param path      Path to file/directory.\n @param name      Name of the entry to get.\n @param name_len  Length of @name in bytes.\n @param buf      Data of the entry to get.\n @param buf_size Size of data to get.\n\n @return  Standard error code."]
2946    pub fn ext4_getxattr(
2947        path: *const ::std::os::raw::c_char,
2948        name: *const ::std::os::raw::c_char,
2949        name_len: usize,
2950        buf: *mut ::std::os::raw::c_void,
2951        buf_size: usize,
2952        data_size: *mut usize,
2953    ) -> ::std::os::raw::c_int;
2954}
2955unsafe extern "C" {
2956    #[doc = "@brief List extended attributes.\n\n @param path     Path to file/directory.\n @param list     List to hold the name of entries.\n @param size     Size of @list in bytes.\n @param ret_size Used bytes of @list.\n\n @return  Standard error code."]
2957    pub fn ext4_listxattr(
2958        path: *const ::std::os::raw::c_char,
2959        list: *mut ::std::os::raw::c_char,
2960        size: usize,
2961        ret_size: *mut usize,
2962    ) -> ::std::os::raw::c_int;
2963}
2964unsafe extern "C" {
2965    #[doc = "@brief Remove extended attribute.\n\n @param path     Path to file/directory.\n @param name     Name of the entry to remove.\n @param name_len Length of @name in bytes.\n\n @return  Standard error code."]
2966    pub fn ext4_removexattr(
2967        path: *const ::std::os::raw::c_char,
2968        name: *const ::std::os::raw::c_char,
2969        name_len: usize,
2970    ) -> ::std::os::raw::c_int;
2971}
2972unsafe extern "C" {
2973    #[doc = "@brief   Recursive directory remove.\n\n @param   path Directory path to remove\n\n @return  Standard error code."]
2974    pub fn ext4_dir_rm(path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2975}
2976unsafe extern "C" {
2977    #[doc = "@brief Rename/move directory.\n\n @param path     Source path.\n @param new_path Destination path.\n\n @return  Standard error code."]
2978    pub fn ext4_dir_mv(
2979        path: *const ::std::os::raw::c_char,
2980        new_path: *const ::std::os::raw::c_char,
2981    ) -> ::std::os::raw::c_int;
2982}
2983unsafe extern "C" {
2984    #[doc = "@brief   Create new directory.\n\n @param   path Directory name.\n\n @return  Standard error code."]
2985    pub fn ext4_dir_mk(path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2986}
2987unsafe extern "C" {
2988    #[doc = "@brief   Directory open.\n\n @param   dir  Directory handle.\n @param   path Directory path.\n\n @return  Standard error code."]
2989    pub fn ext4_dir_open(
2990        dir: *mut ext4_dir,
2991        path: *const ::std::os::raw::c_char,
2992    ) -> ::std::os::raw::c_int;
2993}
2994unsafe extern "C" {
2995    #[doc = "@brief   Directory close.\n\n @param   dir directory handle.\n\n @return  Standard error code."]
2996    pub fn ext4_dir_close(dir: *mut ext4_dir) -> ::std::os::raw::c_int;
2997}
2998unsafe extern "C" {
2999    #[doc = "@brief   Return next directory entry.\n\n @param   dir Directory handle.\n\n @return  Directory entry id (NULL if no entry)"]
3000    pub fn ext4_dir_entry_next(dir: *mut ext4_dir) -> *const ext4_direntry;
3001}
3002unsafe extern "C" {
3003    #[doc = "@brief   Rewine directory entry offset.\n\n @param   dir Directory handle."]
3004    pub fn ext4_dir_entry_rewind(dir: *mut ext4_dir);
3005}
3006#[repr(C)]
3007#[derive(Debug, Copy, Clone)]
3008pub struct ext4_fs {
3009    pub read_only: bool,
3010    pub bdev: *mut ext4_blockdev,
3011    pub sb: ext4_sblock,
3012    pub inode_block_limits: [u64; 4usize],
3013    pub inode_blocks_per_level: [u64; 4usize],
3014    pub last_inode_bg_id: u32,
3015    pub jbd_fs: *mut jbd_fs,
3016    pub jbd_journal: *mut jbd_journal,
3017    pub curr_trans: *mut jbd_trans,
3018    pub inode_alloc_lock: ::std::option::Option<unsafe extern "C" fn()>,
3019    pub inode_alloc_unlock: ::std::option::Option<unsafe extern "C" fn()>,
3020    pub block_alloc_lock: ::std::option::Option<unsafe extern "C" fn()>,
3021    pub block_alloc_unlock: ::std::option::Option<unsafe extern "C" fn()>,
3022    pub bcache_lock: ::std::option::Option<unsafe extern "C" fn()>,
3023    pub bcache_unlock: ::std::option::Option<unsafe extern "C" fn()>,
3024}
3025#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3026const _: () = {
3027    ["Size of ext4_fs"][::std::mem::size_of::<ext4_fs>() - 1184usize];
3028    ["Alignment of ext4_fs"][::std::mem::align_of::<ext4_fs>() - 8usize];
3029    ["Offset of field: ext4_fs::read_only"][::std::mem::offset_of!(ext4_fs, read_only) - 0usize];
3030    ["Offset of field: ext4_fs::bdev"][::std::mem::offset_of!(ext4_fs, bdev) - 8usize];
3031    ["Offset of field: ext4_fs::sb"][::std::mem::offset_of!(ext4_fs, sb) - 16usize];
3032    ["Offset of field: ext4_fs::inode_block_limits"]
3033        [::std::mem::offset_of!(ext4_fs, inode_block_limits) - 1040usize];
3034    ["Offset of field: ext4_fs::inode_blocks_per_level"]
3035        [::std::mem::offset_of!(ext4_fs, inode_blocks_per_level) - 1072usize];
3036    ["Offset of field: ext4_fs::last_inode_bg_id"]
3037        [::std::mem::offset_of!(ext4_fs, last_inode_bg_id) - 1104usize];
3038    ["Offset of field: ext4_fs::jbd_fs"][::std::mem::offset_of!(ext4_fs, jbd_fs) - 1112usize];
3039    ["Offset of field: ext4_fs::jbd_journal"]
3040        [::std::mem::offset_of!(ext4_fs, jbd_journal) - 1120usize];
3041    ["Offset of field: ext4_fs::curr_trans"]
3042        [::std::mem::offset_of!(ext4_fs, curr_trans) - 1128usize];
3043    ["Offset of field: ext4_fs::inode_alloc_lock"]
3044        [::std::mem::offset_of!(ext4_fs, inode_alloc_lock) - 1136usize];
3045    ["Offset of field: ext4_fs::inode_alloc_unlock"]
3046        [::std::mem::offset_of!(ext4_fs, inode_alloc_unlock) - 1144usize];
3047    ["Offset of field: ext4_fs::block_alloc_lock"]
3048        [::std::mem::offset_of!(ext4_fs, block_alloc_lock) - 1152usize];
3049    ["Offset of field: ext4_fs::block_alloc_unlock"]
3050        [::std::mem::offset_of!(ext4_fs, block_alloc_unlock) - 1160usize];
3051    ["Offset of field: ext4_fs::bcache_lock"]
3052        [::std::mem::offset_of!(ext4_fs, bcache_lock) - 1168usize];
3053    ["Offset of field: ext4_fs::bcache_unlock"]
3054        [::std::mem::offset_of!(ext4_fs, bcache_unlock) - 1176usize];
3055};
3056#[repr(C)]
3057#[derive(Debug, Copy, Clone)]
3058pub struct ext4_block_group_ref {
3059    pub block: ext4_block,
3060    pub block_group: *mut ext4_bgroup,
3061    pub fs: *mut ext4_fs,
3062    pub index: u32,
3063    pub dirty: bool,
3064}
3065#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3066const _: () = {
3067    ["Size of ext4_block_group_ref"][::std::mem::size_of::<ext4_block_group_ref>() - 48usize];
3068    ["Alignment of ext4_block_group_ref"][::std::mem::align_of::<ext4_block_group_ref>() - 8usize];
3069    ["Offset of field: ext4_block_group_ref::block"]
3070        [::std::mem::offset_of!(ext4_block_group_ref, block) - 0usize];
3071    ["Offset of field: ext4_block_group_ref::block_group"]
3072        [::std::mem::offset_of!(ext4_block_group_ref, block_group) - 24usize];
3073    ["Offset of field: ext4_block_group_ref::fs"]
3074        [::std::mem::offset_of!(ext4_block_group_ref, fs) - 32usize];
3075    ["Offset of field: ext4_block_group_ref::index"]
3076        [::std::mem::offset_of!(ext4_block_group_ref, index) - 40usize];
3077    ["Offset of field: ext4_block_group_ref::dirty"]
3078        [::std::mem::offset_of!(ext4_block_group_ref, dirty) - 44usize];
3079};
3080#[repr(C)]
3081#[derive(Debug, Copy, Clone)]
3082pub struct ext4_inode_ref {
3083    pub block: ext4_block,
3084    pub inode: *mut ext4_inode,
3085    pub fs: *mut ext4_fs,
3086    pub index: u32,
3087    pub dirty: bool,
3088}
3089#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3090const _: () = {
3091    ["Size of ext4_inode_ref"][::std::mem::size_of::<ext4_inode_ref>() - 48usize];
3092    ["Alignment of ext4_inode_ref"][::std::mem::align_of::<ext4_inode_ref>() - 8usize];
3093    ["Offset of field: ext4_inode_ref::block"]
3094        [::std::mem::offset_of!(ext4_inode_ref, block) - 0usize];
3095    ["Offset of field: ext4_inode_ref::inode"]
3096        [::std::mem::offset_of!(ext4_inode_ref, inode) - 24usize];
3097    ["Offset of field: ext4_inode_ref::fs"][::std::mem::offset_of!(ext4_inode_ref, fs) - 32usize];
3098    ["Offset of field: ext4_inode_ref::index"]
3099        [::std::mem::offset_of!(ext4_inode_ref, index) - 40usize];
3100    ["Offset of field: ext4_inode_ref::dirty"]
3101        [::std::mem::offset_of!(ext4_inode_ref, dirty) - 44usize];
3102};
3103unsafe extern "C" {
3104    pub fn ext4_mountpoint_fs(mountpoint: *const ::std::os::raw::c_char) -> *mut ext4_fs;
3105}
3106unsafe extern "C" {
3107    #[doc = "@brief Initialize filesystem and read all needed data.\n @param fs Filesystem instance to be initialized\n @param bdev Identifier if device with the filesystem\n @param read_only Mark the filesystem as read-only.\n @return Error code"]
3108    pub fn ext4_fs_init(
3109        fs: *mut ext4_fs,
3110        bdev: *mut ext4_blockdev,
3111        read_only: bool,
3112    ) -> ::std::os::raw::c_int;
3113}
3114unsafe extern "C" {
3115    #[doc = "@brief Destroy filesystem instance (used by unmount operation).\n @param fs Filesystem to be destroyed\n @return Error code"]
3116    pub fn ext4_fs_fini(fs: *mut ext4_fs) -> ::std::os::raw::c_int;
3117}
3118unsafe extern "C" {
3119    #[doc = "@brief Check filesystem's features, if supported by this driver\n Function can return EOK and set read_only flag. It mean's that\n there are some not-supported features, that can cause problems\n during some write operations.\n @param fs        Filesystem to be checked\n @param read_only Flag if filesystem should be mounted only for reading\n @return Error code"]
3120    pub fn ext4_fs_check_features(fs: *mut ext4_fs, read_only: *mut bool) -> ::std::os::raw::c_int;
3121}
3122unsafe extern "C" {
3123    #[doc = "@brief Get reference to block group specified by index.\n @param fs   Filesystem to find block group on\n @param bgid Index of block group to load\n @param ref  Output pointer for reference\n @return Error code"]
3124    pub fn ext4_fs_get_block_group_ref(
3125        fs: *mut ext4_fs,
3126        bgid: u32,
3127        ref_: *mut ext4_block_group_ref,
3128    ) -> ::std::os::raw::c_int;
3129}
3130unsafe extern "C" {
3131    #[doc = "@brief Put reference to block group.\n @param ref Pointer for reference to be put back\n @return Error code"]
3132    pub fn ext4_fs_put_block_group_ref(ref_: *mut ext4_block_group_ref) -> ::std::os::raw::c_int;
3133}
3134unsafe extern "C" {
3135    #[doc = "@brief Get reference to i-node specified by index.\n @param fs    Filesystem to find i-node on\n @param index Index of i-node to load\n @param ref   Output pointer for reference\n @return Error code"]
3136    pub fn ext4_fs_get_inode_ref(
3137        fs: *mut ext4_fs,
3138        index: u32,
3139        ref_: *mut ext4_inode_ref,
3140    ) -> ::std::os::raw::c_int;
3141}
3142unsafe extern "C" {
3143    #[doc = "@brief Reset blocks field of i-node.\n @param fs        Filesystem to reset blocks field of i-inode on\n @param inode_ref ref Pointer for inode to be operated on"]
3144    pub fn ext4_fs_inode_blocks_init(fs: *mut ext4_fs, inode_ref: *mut ext4_inode_ref);
3145}
3146unsafe extern "C" {
3147    #[doc = "@brief Put reference to i-node.\n @param ref Pointer for reference to be put back\n @return Error code"]
3148    pub fn ext4_fs_put_inode_ref(ref_: *mut ext4_inode_ref) -> ::std::os::raw::c_int;
3149}
3150unsafe extern "C" {
3151    #[doc = "@brief Convert filetype to inode mode.\n @param filetype File type\n @return inode mode"]
3152    pub fn ext4_fs_correspond_inode_mode(filetype: ::std::os::raw::c_int) -> u32;
3153}
3154unsafe extern "C" {
3155    #[doc = "@brief Allocate new i-node in the filesystem.\n @param fs        Filesystem to allocated i-node on\n @param inode_ref Output pointer to return reference to allocated i-node\n @param filetype  File type of newly created i-node\n @return Error code"]
3156    pub fn ext4_fs_alloc_inode(
3157        fs: *mut ext4_fs,
3158        inode_ref: *mut ext4_inode_ref,
3159        filetype: ::std::os::raw::c_int,
3160    ) -> ::std::os::raw::c_int;
3161}
3162unsafe extern "C" {
3163    #[doc = "@brief Release i-node and mark it as free.\n @param inode_ref I-node to be released\n @return Error code"]
3164    pub fn ext4_fs_free_inode(inode_ref: *mut ext4_inode_ref) -> ::std::os::raw::c_int;
3165}
3166unsafe extern "C" {
3167    #[doc = "@brief Truncate i-node data blocks.\n @param inode_ref I-node to be truncated\n @param new_size  New size of inode (must be < current size)\n @return Error code"]
3168    pub fn ext4_fs_truncate_inode(
3169        inode_ref: *mut ext4_inode_ref,
3170        new_size: u64,
3171    ) -> ::std::os::raw::c_int;
3172}
3173unsafe extern "C" {
3174    #[doc = "@brief Compute 'goal' for inode index\n @param inode_ref Reference to inode, to allocate block for\n @return goal"]
3175    pub fn ext4_fs_inode_to_goal_block(inode_ref: *mut ext4_inode_ref) -> ext4_fsblk_t;
3176}
3177unsafe extern "C" {
3178    #[doc = "@brief Compute 'goal' for allocation algorithm (For blockmap).\n @param inode_ref Reference to inode, to allocate block for\n @return error code"]
3179    pub fn ext4_fs_indirect_find_goal(
3180        inode_ref: *mut ext4_inode_ref,
3181        goal: *mut ext4_fsblk_t,
3182    ) -> ::std::os::raw::c_int;
3183}
3184unsafe extern "C" {
3185    #[doc = "@brief Get physical block address by logical index of the block.\n @param inode_ref I-node to read block address from\n @param iblock            Logical index of block\n @param fblock            Output pointer for return physical\n                          block address\n @param support_unwritten Indicate whether unwritten block range\n                          is supported under the current context\n @return Error code"]
3186    pub fn ext4_fs_get_inode_dblk_idx(
3187        inode_ref: *mut ext4_inode_ref,
3188        iblock: ext4_lblk_t,
3189        fblock: *mut ext4_fsblk_t,
3190        support_unwritten: bool,
3191    ) -> ::std::os::raw::c_int;
3192}
3193unsafe extern "C" {
3194    #[doc = "@brief Initialize a part of unwritten range of the inode.\n @param inode_ref I-node to proceed on.\n @param iblock    Logical index of block\n @param fblock    Output pointer for return physical block address\n @return Error code"]
3195    pub fn ext4_fs_init_inode_dblk_idx(
3196        inode_ref: *mut ext4_inode_ref,
3197        iblock: ext4_lblk_t,
3198        fblock: *mut ext4_fsblk_t,
3199    ) -> ::std::os::raw::c_int;
3200}
3201unsafe extern "C" {
3202    #[doc = "@brief Append following logical block to the i-node.\n @param inode_ref I-node to append block to\n @param fblock    Output physical block address of newly allocated block\n @param iblock    Output logical number of newly allocated block\n @return Error code"]
3203    pub fn ext4_fs_append_inode_dblk(
3204        inode_ref: *mut ext4_inode_ref,
3205        fblock: *mut ext4_fsblk_t,
3206        iblock: *mut ext4_lblk_t,
3207    ) -> ::std::os::raw::c_int;
3208}
3209unsafe extern "C" {
3210    pub fn ext4_fs_insert_inode_dblk(
3211        inode_ref: *mut ext4_inode_ref,
3212        fblock: *mut ext4_fsblk_t,
3213        iblock: ext4_lblk_t,
3214    ) -> ::std::os::raw::c_int;
3215}
3216unsafe extern "C" {
3217    #[doc = "@brief   Increment inode link count.\n @param   inode_ref none handle"]
3218    pub fn ext4_fs_inode_links_count_inc(inode_ref: *mut ext4_inode_ref);
3219}
3220unsafe extern "C" {
3221    #[doc = "@brief   Decrement inode link count.\n @param   inode_ref none handle"]
3222    pub fn ext4_fs_inode_links_count_dec(inode_ref: *mut ext4_inode_ref);
3223}
3224unsafe extern "C" {
3225    #[doc = "@brief   Returns a block group count.\n @param   s superblock descriptor\n @return  count of block groups"]
3226    pub fn ext4_block_group_cnt(s: *mut ext4_sblock) -> u32;
3227}
3228unsafe extern "C" {
3229    #[doc = "@brief   Returns block count in block group\n          (last block group may have less blocks)\n @param   s superblock descriptor\n @param   bgid block group id\n @return  blocks count"]
3230    pub fn ext4_blocks_in_group_cnt(s: *mut ext4_sblock, bgid: u32) -> u32;
3231}
3232unsafe extern "C" {
3233    #[doc = "@brief   Returns inodes count in block group\n          (last block group may have less inodes)\n @param   s superblock descriptor\n @param   bgid block group id\n @return  inodes count"]
3234    pub fn ext4_inodes_in_group_cnt(s: *mut ext4_sblock, bgid: u32) -> u32;
3235}
3236unsafe extern "C" {
3237    #[doc = "@brief   Superblock write.\n @param   bdev block device descriptor.\n @param   s superblock descriptor\n @return  Standard error code"]
3238    pub fn ext4_sb_write(bdev: *mut ext4_blockdev, s: *mut ext4_sblock) -> ::std::os::raw::c_int;
3239}
3240unsafe extern "C" {
3241    #[doc = "@brief   Superblock read.\n @param   bdev block device descriptor.\n @param   s superblock descriptor\n @return  Standard error code"]
3242    pub fn ext4_sb_read(bdev: *mut ext4_blockdev, s: *mut ext4_sblock) -> ::std::os::raw::c_int;
3243}
3244unsafe extern "C" {
3245    #[doc = "@brief   Superblock simple validation.\n @param   s superblock descriptor\n @return  true if OK"]
3246    pub fn ext4_sb_check(s: *mut ext4_sblock) -> bool;
3247}
3248unsafe extern "C" {
3249    #[doc = "@brief   Superblock presence in block group.\n @param   s superblock descriptor\n @param   block_group block group id\n @return  true if block group has superblock"]
3250    pub fn ext4_sb_is_super_in_bg(s: *mut ext4_sblock, block_group: u32) -> bool;
3251}
3252unsafe extern "C" {
3253    #[doc = "@brief   TODO:"]
3254    pub fn ext4_sb_sparse(group: u32) -> bool;
3255}
3256unsafe extern "C" {
3257    #[doc = "@brief   TODO:"]
3258    pub fn ext4_bg_num_gdb(s: *mut ext4_sblock, group: u32) -> u32;
3259}
3260unsafe extern "C" {
3261    #[doc = "@brief   TODO:"]
3262    pub fn ext4_num_base_meta_clusters(s: *mut ext4_sblock, block_group: u32) -> u32;
3263}
3264#[repr(C)]
3265#[derive(Debug, Copy, Clone)]
3266pub struct ext4_dir_iter {
3267    pub inode_ref: *mut ext4_inode_ref,
3268    pub curr_blk: ext4_block,
3269    pub curr_off: u64,
3270    pub curr: *mut ext4_dir_en,
3271}
3272#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3273const _: () = {
3274    ["Size of ext4_dir_iter"][::std::mem::size_of::<ext4_dir_iter>() - 48usize];
3275    ["Alignment of ext4_dir_iter"][::std::mem::align_of::<ext4_dir_iter>() - 8usize];
3276    ["Offset of field: ext4_dir_iter::inode_ref"]
3277        [::std::mem::offset_of!(ext4_dir_iter, inode_ref) - 0usize];
3278    ["Offset of field: ext4_dir_iter::curr_blk"]
3279        [::std::mem::offset_of!(ext4_dir_iter, curr_blk) - 8usize];
3280    ["Offset of field: ext4_dir_iter::curr_off"]
3281        [::std::mem::offset_of!(ext4_dir_iter, curr_off) - 32usize];
3282    ["Offset of field: ext4_dir_iter::curr"][::std::mem::offset_of!(ext4_dir_iter, curr) - 40usize];
3283};
3284#[repr(C)]
3285#[derive(Debug, Copy, Clone)]
3286pub struct ext4_dir_search_result {
3287    pub block: ext4_block,
3288    pub dentry: *mut ext4_dir_en,
3289}
3290#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3291const _: () = {
3292    ["Size of ext4_dir_search_result"][::std::mem::size_of::<ext4_dir_search_result>() - 32usize];
3293    ["Alignment of ext4_dir_search_result"]
3294        [::std::mem::align_of::<ext4_dir_search_result>() - 8usize];
3295    ["Offset of field: ext4_dir_search_result::block"]
3296        [::std::mem::offset_of!(ext4_dir_search_result, block) - 0usize];
3297    ["Offset of field: ext4_dir_search_result::dentry"]
3298        [::std::mem::offset_of!(ext4_dir_search_result, dentry) - 24usize];
3299};
3300unsafe extern "C" {
3301    #[doc = "@brief Verify checksum of a linear directory leaf block\n @param inode_ref Directory i-node\n @param dirent    Linear directory leaf block\n @return true means the block passed checksum verification"]
3302    pub fn ext4_dir_csum_verify(inode_ref: *mut ext4_inode_ref, dirent: *mut ext4_dir_en) -> bool;
3303}
3304unsafe extern "C" {
3305    #[doc = "@brief Initialize directory iterator.\n Set position to the first valid entry from the required position.\n @param it        Pointer to iterator to be initialized\n @param inode_ref Directory i-node\n @param pos       Position to start reading entries from\n @return Error code"]
3306    pub fn ext4_dir_iterator_init(
3307        it: *mut ext4_dir_iter,
3308        inode_ref: *mut ext4_inode_ref,
3309        pos: u64,
3310    ) -> ::std::os::raw::c_int;
3311}
3312unsafe extern "C" {
3313    #[doc = "@brief Jump to the next valid entry\n @param it Initialized iterator\n @return Error code"]
3314    pub fn ext4_dir_iterator_next(it: *mut ext4_dir_iter) -> ::std::os::raw::c_int;
3315}
3316unsafe extern "C" {
3317    #[doc = "@brief Uninitialize directory iterator.\n        Release all allocated structures.\n @param it Iterator to be finished\n @return Error code"]
3318    pub fn ext4_dir_iterator_fini(it: *mut ext4_dir_iter) -> ::std::os::raw::c_int;
3319}
3320unsafe extern "C" {
3321    #[doc = "@brief Write directory entry to concrete data block.\n @param sb        Superblock\n @param en     Pointer to entry to be written\n @param entry_len Length of new entry\n @param child     Child i-node to be written to new entry\n @param name      Name of the new entry\n @param name_len  Length of entry name"]
3322    pub fn ext4_dir_write_entry(
3323        sb: *mut ext4_sblock,
3324        en: *mut ext4_dir_en,
3325        entry_len: u16,
3326        child: *mut ext4_inode_ref,
3327        name: *const ::std::os::raw::c_char,
3328        name_len: usize,
3329    );
3330}
3331unsafe extern "C" {
3332    #[doc = "@brief Add new entry to the directory.\n @param parent Directory i-node\n @param name   Name of new entry\n @param child  I-node to be referenced from new entry\n @return Error code"]
3333    pub fn ext4_dir_add_entry(
3334        parent: *mut ext4_inode_ref,
3335        name: *const ::std::os::raw::c_char,
3336        name_len: u32,
3337        child: *mut ext4_inode_ref,
3338    ) -> ::std::os::raw::c_int;
3339}
3340unsafe extern "C" {
3341    #[doc = "@brief Find directory entry with passed name.\n @param result Result structure to be returned if entry found\n @param parent Directory i-node\n @param name   Name of entry to be found\n @param name_len  Name length\n @return Error code"]
3342    pub fn ext4_dir_find_entry(
3343        result: *mut ext4_dir_search_result,
3344        parent: *mut ext4_inode_ref,
3345        name: *const ::std::os::raw::c_char,
3346        name_len: u32,
3347    ) -> ::std::os::raw::c_int;
3348}
3349unsafe extern "C" {
3350    #[doc = "@brief Remove directory entry.\n @param parent Directory i-node\n @param name   Name of the entry to be removed\n @param name_len  Name length\n @return Error code"]
3351    pub fn ext4_dir_remove_entry(
3352        parent: *mut ext4_inode_ref,
3353        name: *const ::std::os::raw::c_char,
3354        name_len: u32,
3355    ) -> ::std::os::raw::c_int;
3356}
3357unsafe extern "C" {
3358    #[doc = "@brief Try to insert entry to concrete data block.\n @param sb           Superblock\n @param inode_ref    Directory i-node\n @param dst_blk      Block to try to insert entry to\n @param child        Child i-node to be inserted by new entry\n @param name         Name of the new entry\n @param name_len     Length of the new entry name\n @return Error code"]
3359    pub fn ext4_dir_try_insert_entry(
3360        sb: *mut ext4_sblock,
3361        inode_ref: *mut ext4_inode_ref,
3362        dst_blk: *mut ext4_block,
3363        child: *mut ext4_inode_ref,
3364        name: *const ::std::os::raw::c_char,
3365        name_len: u32,
3366    ) -> ::std::os::raw::c_int;
3367}
3368unsafe extern "C" {
3369    #[doc = "@brief Try to find entry in block by name.\n @param block     Block containing entries\n @param sb        Superblock\n @param name_len  Length of entry name\n @param name      Name of entry to be found\n @param res_entry Output pointer to found entry, NULL if not found\n @return Error code"]
3370    pub fn ext4_dir_find_in_block(
3371        block: *mut ext4_block,
3372        sb: *mut ext4_sblock,
3373        name_len: usize,
3374        name: *const ::std::os::raw::c_char,
3375        res_entry: *mut *mut ext4_dir_en,
3376    ) -> ::std::os::raw::c_int;
3377}
3378unsafe extern "C" {
3379    #[doc = "@brief Simple function to release allocated data from result.\n @param parent Parent inode\n @param result Search result to destroy\n @return Error code\n"]
3380    pub fn ext4_dir_destroy_result(
3381        parent: *mut ext4_inode_ref,
3382        result: *mut ext4_dir_search_result,
3383    ) -> ::std::os::raw::c_int;
3384}
3385unsafe extern "C" {
3386    pub fn ext4_dir_set_csum(inode_ref: *mut ext4_inode_ref, dirent: *mut ext4_dir_en);
3387}
3388unsafe extern "C" {
3389    pub fn ext4_dir_init_entry_tail(t: *mut ext4_dir_entry_tail);
3390}
3391unsafe extern "C" {
3392    #[doc = "@brief Get mode of the i-node.\n @param sb    Superblock\n @param inode I-node to load mode from\n @return Mode of the i-node"]
3393    pub fn ext4_inode_get_mode(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> u32;
3394}
3395unsafe extern "C" {
3396    #[doc = "@brief Set mode of the i-node.\n @param sb    Superblock\n @param inode I-node to set mode to\n @param mode  Mode to set to i-node"]
3397    pub fn ext4_inode_set_mode(sb: *mut ext4_sblock, inode: *mut ext4_inode, mode: u32);
3398}
3399unsafe extern "C" {
3400    #[doc = "@brief Get ID of the i-node owner (user id).\n @param inode I-node to load uid from\n @return User ID of the i-node owner"]
3401    pub fn ext4_inode_get_uid(inode: *mut ext4_inode) -> u32;
3402}
3403unsafe extern "C" {
3404    #[doc = "@brief Set ID of the i-node owner.\n @param inode I-node to set uid to\n @param uid   ID of the i-node owner"]
3405    pub fn ext4_inode_set_uid(inode: *mut ext4_inode, uid: u32);
3406}
3407unsafe extern "C" {
3408    #[doc = "@brief Get real i-node size.\n @param sb    Superblock\n @param inode I-node to load size from\n @return Real size of i-node"]
3409    pub fn ext4_inode_get_size(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> u64;
3410}
3411unsafe extern "C" {
3412    #[doc = "@brief Set real i-node size.\n @param inode I-node to set size to\n @param size  Size of the i-node"]
3413    pub fn ext4_inode_set_size(inode: *mut ext4_inode, size: u64);
3414}
3415unsafe extern "C" {
3416    #[doc = "@brief Get time, when i-node was last accessed.\n @param inode I-node\n @return Time of the last access (POSIX)"]
3417    pub fn ext4_inode_get_access_time(inode: *mut ext4_inode) -> u32;
3418}
3419unsafe extern "C" {
3420    #[doc = "@brief Set time, when i-node was last accessed.\n @param inode I-node\n @param time  Time of the last access (POSIX)"]
3421    pub fn ext4_inode_set_access_time(inode: *mut ext4_inode, time: u32);
3422}
3423unsafe extern "C" {
3424    #[doc = "@brief Get extra time, when i-node was last accessed.\n @param inode I-node\n @return Time of the last access (POSIX)"]
3425    pub fn ext4_inode_get_extra_access_time(inode: *mut ext4_inode) -> u32;
3426}
3427unsafe extern "C" {
3428    #[doc = "@brief Set extra time, when i-node was last accessed.\n @param inode I-node\n @param time  Time of the last access (POSIX)"]
3429    pub fn ext4_inode_set_extra_access_time(inode: *mut ext4_inode, time: u32);
3430}
3431unsafe extern "C" {
3432    #[doc = "@brief Get time, when i-node was last changed.\n @param inode I-node\n @return Time of the last change (POSIX)"]
3433    pub fn ext4_inode_get_change_inode_time(inode: *mut ext4_inode) -> u32;
3434}
3435unsafe extern "C" {
3436    #[doc = "@brief Set time, when i-node was last changed.\n @param inode I-node\n @param time  Time of the last change (POSIX)"]
3437    pub fn ext4_inode_set_change_inode_time(inode: *mut ext4_inode, time: u32);
3438}
3439unsafe extern "C" {
3440    #[doc = "@brief Get extra time, when i-node was last changed.\n @param inode I-node\n @return Time of the last change (POSIX)"]
3441    pub fn ext4_inode_get_extra_change_inode_time(inode: *mut ext4_inode) -> u32;
3442}
3443unsafe extern "C" {
3444    #[doc = "@brief Set extra time, when i-node was last changed.\n @param inode I-node\n @param time  Time of the last change (POSIX)"]
3445    pub fn ext4_inode_set_extra_change_inode_time(inode: *mut ext4_inode, time: u32);
3446}
3447unsafe extern "C" {
3448    #[doc = "@brief Get time, when i-node content was last modified.\n @param inode I-node\n @return Time of the last content modification (POSIX)"]
3449    pub fn ext4_inode_get_modif_time(inode: *mut ext4_inode) -> u32;
3450}
3451unsafe extern "C" {
3452    #[doc = "@brief Set time, when i-node content was last modified.\n @param inode I-node\n @param time  Time of the last content modification (POSIX)"]
3453    pub fn ext4_inode_set_modif_time(inode: *mut ext4_inode, time: u32);
3454}
3455unsafe extern "C" {
3456    #[doc = "@brief Get extra time, when i-node content was last modified.\n @param inode I-node\n @return Time of the last content modification (POSIX)"]
3457    pub fn ext4_inode_get_extra_modif_time(inode: *mut ext4_inode) -> u32;
3458}
3459unsafe extern "C" {
3460    #[doc = "@brief Set extra time, when i-node content was last modified.\n @param inode I-node\n @param time  Time of the last content modification (POSIX)"]
3461    pub fn ext4_inode_set_extra_modif_time(inode: *mut ext4_inode, time: u32);
3462}
3463unsafe extern "C" {
3464    #[doc = "@brief Get time, when i-node was deleted.\n @param inode I-node\n @return Time of the delete action (POSIX)"]
3465    pub fn ext4_inode_get_del_time(inode: *mut ext4_inode) -> u32;
3466}
3467unsafe extern "C" {
3468    #[doc = "@brief Set time, when i-node was deleted.\n @param inode I-node\n @param time  Time of the delete action (POSIX)"]
3469    pub fn ext4_inode_set_del_time(inode: *mut ext4_inode, time: u32);
3470}
3471unsafe extern "C" {
3472    #[doc = "@brief Get ID of the i-node owner's group.\n @param inode I-node to load gid from\n @return Group ID of the i-node owner"]
3473    pub fn ext4_inode_get_gid(inode: *mut ext4_inode) -> u32;
3474}
3475unsafe extern "C" {
3476    #[doc = "@brief Set ID to the i-node owner's group.\n @param inode I-node to set gid to\n @param gid   Group ID of the i-node owner"]
3477    pub fn ext4_inode_set_gid(inode: *mut ext4_inode, gid: u32);
3478}
3479unsafe extern "C" {
3480    #[doc = "@brief Get number of links to i-node.\n @param inode I-node to load number of links from\n @return Number of links to i-node"]
3481    pub fn ext4_inode_get_links_cnt(inode: *mut ext4_inode) -> u16;
3482}
3483unsafe extern "C" {
3484    #[doc = "@brief Set number of links to i-node.\n @param inode I-node to set number of links to\n @param cnt Number of links to i-node"]
3485    pub fn ext4_inode_set_links_cnt(inode: *mut ext4_inode, cnt: u16);
3486}
3487unsafe extern "C" {
3488    #[doc = "@brief Get number of 512-bytes blocks used for i-node.\n @param sb    Superblock\n @param inode I-node\n @return Number of 512-bytes blocks"]
3489    pub fn ext4_inode_get_blocks_count(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> u64;
3490}
3491unsafe extern "C" {
3492    #[doc = "@brief Set number of 512-bytes blocks used for i-node.\n @param sb    Superblock\n @param inode I-node\n @param cnt Number of 512-bytes blocks\n @return Error code"]
3493    pub fn ext4_inode_set_blocks_count(
3494        sb: *mut ext4_sblock,
3495        inode: *mut ext4_inode,
3496        cnt: u64,
3497    ) -> ::std::os::raw::c_int;
3498}
3499unsafe extern "C" {
3500    #[doc = "@brief Get flags (features) of i-node.\n @param inode I-node to get flags from\n @return Flags (bitmap)"]
3501    pub fn ext4_inode_get_flags(inode: *mut ext4_inode) -> u32;
3502}
3503unsafe extern "C" {
3504    #[doc = "@brief Set flags (features) of i-node.\n @param inode I-node to set flags to\n @param flags Flags to set to i-node"]
3505    pub fn ext4_inode_set_flags(inode: *mut ext4_inode, flags: u32);
3506}
3507unsafe extern "C" {
3508    #[doc = "@brief Get file generation (used by NFS).\n @param inode I-node\n @return File generation"]
3509    pub fn ext4_inode_get_generation(inode: *mut ext4_inode) -> u32;
3510}
3511unsafe extern "C" {
3512    #[doc = "@brief Set file generation (used by NFS).\n @param inode      I-node\n @param gen File generation"]
3513    pub fn ext4_inode_set_generation(inode: *mut ext4_inode, gen_: u32);
3514}
3515unsafe extern "C" {
3516    #[doc = "@brief Get extra I-node size field.\n @param sb         Superblock\n @param inode      I-node\n @return extra I-node size"]
3517    pub fn ext4_inode_get_extra_isize(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> u16;
3518}
3519unsafe extern "C" {
3520    #[doc = "@brief Set extra I-node size field.\n @param sb         Superblock\n @param inode      I-node\n @param size       extra I-node size"]
3521    pub fn ext4_inode_set_extra_isize(sb: *mut ext4_sblock, inode: *mut ext4_inode, size: u16);
3522}
3523unsafe extern "C" {
3524    #[doc = "@brief Get address of block, where are extended attributes located.\n @param inode I-node\n @param sb    Superblock\n @return Block address"]
3525    pub fn ext4_inode_get_file_acl(inode: *mut ext4_inode, sb: *mut ext4_sblock) -> u64;
3526}
3527unsafe extern "C" {
3528    #[doc = "@brief Set address of block, where are extended attributes located.\n @param inode    I-node\n @param sb       Superblock\n @param acl Block address"]
3529    pub fn ext4_inode_set_file_acl(inode: *mut ext4_inode, sb: *mut ext4_sblock, acl: u64);
3530}
3531unsafe extern "C" {
3532    #[doc = "@brief Get block address of specified direct block.\n @param inode I-node to load block from\n @param idx   Index of logical block\n @return Physical block address"]
3533    pub fn ext4_inode_get_direct_block(inode: *mut ext4_inode, idx: u32) -> u32;
3534}
3535unsafe extern "C" {
3536    #[doc = "@brief Set block address of specified direct block.\n @param inode  I-node to set block address to\n @param idx    Index of logical block\n @param block Physical block address"]
3537    pub fn ext4_inode_set_direct_block(inode: *mut ext4_inode, idx: u32, block: u32);
3538}
3539unsafe extern "C" {
3540    #[doc = "@brief Get block address of specified indirect block.\n @param inode I-node to get block address from\n @param idx   Index of indirect block\n @return Physical block address"]
3541    pub fn ext4_inode_get_indirect_block(inode: *mut ext4_inode, idx: u32) -> u32;
3542}
3543unsafe extern "C" {
3544    #[doc = "@brief Set block address of specified indirect block.\n @param inode  I-node to set block address to\n @param idx    Index of indirect block\n @param block Physical block address"]
3545    pub fn ext4_inode_set_indirect_block(inode: *mut ext4_inode, idx: u32, block: u32);
3546}
3547unsafe extern "C" {
3548    #[doc = "@brief Get device number\n @param inode  I-node to get device number from\n @return Device number"]
3549    pub fn ext4_inode_get_dev(inode: *mut ext4_inode) -> u32;
3550}
3551unsafe extern "C" {
3552    #[doc = "@brief Set device number\n @param inode  I-node to set device number to\n @param dev    Device number"]
3553    pub fn ext4_inode_set_dev(inode: *mut ext4_inode, dev: u32);
3554}
3555unsafe extern "C" {
3556    #[doc = "@brief return the type of i-node\n @param sb    Superblock\n @param inode I-node to return the type of\n @return Result of check operation"]
3557    pub fn ext4_inode_type(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> u32;
3558}
3559unsafe extern "C" {
3560    #[doc = "@brief Check if i-node has specified type.\n @param sb    Superblock\n @param inode I-node to check type of\n @param type  Type to check\n @return Result of check operation"]
3561    pub fn ext4_inode_is_type(sb: *mut ext4_sblock, inode: *mut ext4_inode, type_: u32) -> bool;
3562}
3563unsafe extern "C" {
3564    #[doc = "@brief Check if i-node has specified flag.\n @param inode I-node to check flags of\n @param f  Flag to check\n @return Result of check operation"]
3565    pub fn ext4_inode_has_flag(inode: *mut ext4_inode, f: u32) -> bool;
3566}
3567unsafe extern "C" {
3568    #[doc = "@brief Remove specified flag from i-node.\n @param inode      I-node to clear flag on\n @param f Flag to be cleared"]
3569    pub fn ext4_inode_clear_flag(inode: *mut ext4_inode, f: u32);
3570}
3571unsafe extern "C" {
3572    #[doc = "@brief Set specified flag to i-node.\n @param inode    I-node to set flag on\n @param f Flag to be set"]
3573    pub fn ext4_inode_set_flag(inode: *mut ext4_inode, f: u32);
3574}
3575unsafe extern "C" {
3576    #[doc = "@brief Get inode checksum(crc32)\n @param sb    Superblock\n @param inode I-node to get checksum value from"]
3577    pub fn ext4_inode_get_csum(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> u32;
3578}
3579unsafe extern "C" {
3580    #[doc = "@brief Get inode checksum(crc32)\n @param sb    Superblock\n @param inode I-node to get checksum value from"]
3581    pub fn ext4_inode_set_csum(sb: *mut ext4_sblock, inode: *mut ext4_inode, checksum: u32);
3582}
3583unsafe extern "C" {
3584    #[doc = "@brief Check if i-node can be truncated.\n @param sb    Superblock\n @param inode I-node to check\n @return Result of the check operation"]
3585    pub fn ext4_inode_can_truncate(sb: *mut ext4_sblock, inode: *mut ext4_inode) -> bool;
3586}
3587#[repr(C)]
3588#[derive(Debug, Copy, Clone)]
3589pub struct ext4_extent_header {
3590    _unused: [u8; 0],
3591}
3592unsafe extern "C" {
3593    #[doc = "@brief Get extent header from the root of the extent tree.\n @param inode I-node to get extent header from\n @return Pointer to extent header of the root node"]
3594    pub fn ext4_inode_get_extent_header(inode: *mut ext4_inode) -> *mut ext4_extent_header;
3595}
3596unsafe extern "C" {
3597    pub fn ext4_extent_tree_init(inode_ref: *mut ext4_inode_ref);
3598}
3599unsafe extern "C" {
3600    pub fn ext4_extent_get_blocks(
3601        inode_ref: *mut ext4_inode_ref,
3602        iblock: ext4_lblk_t,
3603        max_blocks: u32,
3604        result: *mut ext4_fsblk_t,
3605        create: bool,
3606        blocks_count: *mut u32,
3607    ) -> ::std::os::raw::c_int;
3608}
3609unsafe extern "C" {
3610    #[doc = "@brief Release all data blocks starting from specified logical block.\n @param inode_ref   I-node to release blocks from\n @param iblock_from First logical block to release\n @return Error code"]
3611    pub fn ext4_extent_remove_space(
3612        inode_ref: *mut ext4_inode_ref,
3613        from: ext4_lblk_t,
3614        to: ext4_lblk_t,
3615    ) -> ::std::os::raw::c_int;
3616}
3617#[repr(C)]
3618#[derive(Debug, Copy, Clone)]
3619pub struct __va_list_tag {
3620    pub gp_offset: ::std::os::raw::c_uint,
3621    pub fp_offset: ::std::os::raw::c_uint,
3622    pub overflow_arg_area: *mut ::std::os::raw::c_void,
3623    pub reg_save_area: *mut ::std::os::raw::c_void,
3624    _unused: [u8; 0],
3625}
3626pub type __builtin_va_list = [__va_list_tag; 1usize];
3627#[repr(C)]
3628#[derive(Debug, Copy, Clone)]
3629pub struct jbd_fs {
3630    pub _address: u8,
3631}
3632#[repr(C)]
3633#[derive(Debug, Copy, Clone)]
3634pub struct jbd_journal {
3635    pub _address: u8,
3636}
3637#[repr(C)]
3638#[derive(Debug, Copy, Clone)]
3639pub struct jbd_trans {
3640    pub _address: u8,
3641}