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