1ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross/****************************************************************************
2ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ****************************************************************************
3ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***
4ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***   This header was automatically generated from a Linux kernel header
5ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***   of the same name, to make information necessary for userspace to
6ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***   call into the kernel available to libc.  It contains only constants,
7ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***   structures, and macros generated from the original header, and thus,
8ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***   contains no copyrightable information.
9ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ***
10ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ****************************************************************************
11ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ****************************************************************************/
12ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#ifndef _LINUX_JBD2_H
13ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define _LINUX_JBD2_H
14ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
15ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_DEBUG
16ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define jfs_debug jbd_debug
17ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
18ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define journal_oom_retry 1
19ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
20ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#undef JBD2_PARANOID_IOFAIL
21ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
22ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_DEFAULT_MAX_COMMIT_AGE 5
23ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
24ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define jbd_debug(f, a...)
25ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
26ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_MIN_JOURNAL_BLOCKS 1024
27ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
28ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_MAGIC_NUMBER 0xc03b3998U
29ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
30ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_DESCRIPTOR_BLOCK 1
31ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_COMMIT_BLOCK 2
32ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_SUPERBLOCK_V1 3
33ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_SUPERBLOCK_V2 4
34ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_REVOKE_BLOCK 5
35ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
36ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct journal_header_s
37ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{
38ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_magic;
39ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_blocktype;
40ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_sequence;
41ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} journal_header_t;
42ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
43ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_CRC32_CHKSUM 1
44ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_MD5_CHKSUM 2
45ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_SHA1_CHKSUM 3
46ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
47ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_CRC32_CHKSUM_SIZE 4
48ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
49ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_CHECKSUM_BYTES (32 / sizeof(u32))
50ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
51ec0a2e83dc66d67addeb90e83144187691852a3eColin Crossstruct commit_header {
52ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_magic;
53ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_blocktype;
54ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_sequence;
55ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross unsigned char h_chksum_type;
56ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross unsigned char h_chksum_size;
57ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross unsigned char h_padding[2];
58ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_chksum[JBD2_CHECKSUM_BYTES];
59ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be64 h_commit_sec;
60ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_commit_nsec;
61ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross};
62ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
63ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct journal_block_tag_s
64ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{
65ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 t_blocknr;
66ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 t_flags;
67ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 t_blocknr_high;
68ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} journal_block_tag_t;
69ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
70ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_TAG_SIZE32 (offsetof(journal_block_tag_t, t_blocknr_high))
71ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_TAG_SIZE64 (sizeof(journal_block_tag_t))
72ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
73ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct jbd2_journal_revoke_header_s
74ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{
75ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross journal_header_t r_header;
76ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 r_count;
77ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} jbd2_journal_revoke_header_t;
78ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
79ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_ESCAPE 1
80ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_SAME_UUID 2
81ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_DELETED 4
82ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_LAST_TAG 8
83ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
84ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct journal_superblock_s
85ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{
86ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
87ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross journal_header_t s_header;
88ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
89ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_blocksize;
90ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_maxlen;
91ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_first;
92ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
93ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_sequence;
94ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_start;
95ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
96ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_errno;
97ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
98ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_feature_compat;
99ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_feature_incompat;
100ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_feature_ro_compat;
101ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
102ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __u8 s_uuid[16];
103ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
104ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_nr_users;
105ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
106ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_dynsuper;
107ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
108ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_max_transaction;
109ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_max_trans_data;
110ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
111ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __u32 s_padding[44];
112ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
113ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __u8 s_users[16*48];
114ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
115ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} journal_superblock_t;
116ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
117ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_HAS_COMPAT_FEATURE(j,mask)   ((j)->j_format_version >= 2 &&   ((j)->j_superblock->s_feature_compat & cpu_to_be32((mask))))
118ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_HAS_RO_COMPAT_FEATURE(j,mask)   ((j)->j_format_version >= 2 &&   ((j)->j_superblock->s_feature_ro_compat & cpu_to_be32((mask))))
119ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_HAS_INCOMPAT_FEATURE(j,mask)   ((j)->j_format_version >= 2 &&   ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask))))
120ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
121ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_COMPAT_CHECKSUM 0x00000001
122ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
123ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_INCOMPAT_REVOKE 0x00000001
124ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_INCOMPAT_64BIT 0x00000002
125ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004
126ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
127ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_KNOWN_COMPAT_FEATURES JBD2_FEATURE_COMPAT_CHECKSUM
128ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_KNOWN_ROCOMPAT_FEATURES 0
129ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_KNOWN_INCOMPAT_FEATURES (JBD2_FEATURE_INCOMPAT_REVOKE |   JBD2_FEATURE_INCOMPAT_64BIT |   JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)
130ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
131ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_None 0
132ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Metadata 1
133ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Forget 2
134ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_IO 3
135ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Shadow 4
136ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_LogCtl 5
137ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Reserved 6
138ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Types 7
139ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
140ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#endif
141ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross
142