1STRUCT JOURNAL_S(9) The Linux Journalling API STRUCT JOURNAL_S(9)
2
3
4
6 struct_journal_s - this is the concrete type associated with journal_t.
7
9 struct journal_s {
10 unsigned long j_flags;
11 int j_errno;
12 struct buffer_head * j_sb_buffer;
13 journal_superblock_t * j_superblock;
14 int j_format_version;
15 spinlock_t j_state_lock;
16 int j_barrier_count;
17 struct mutex j_barrier;
18 transaction_t * j_running_transaction;
19 transaction_t * j_committing_transaction;
20 transaction_t * j_checkpoint_transactions;
21 wait_queue_head_t j_wait_transaction_locked;
22 wait_queue_head_t j_wait_logspace;
23 wait_queue_head_t j_wait_done_commit;
24 wait_queue_head_t j_wait_checkpoint;
25 wait_queue_head_t j_wait_commit;
26 wait_queue_head_t j_wait_updates;
27 struct mutex j_checkpoint_mutex;
28 unsigned int j_head;
29 unsigned int j_tail;
30 unsigned int j_free;
31 unsigned int j_first;
32 unsigned int j_last;
33 struct block_device * j_dev;
34 int j_blocksize;
35 unsigned int j_blk_offset;
36 struct block_device * j_fs_dev;
37 unsigned int j_maxlen;
38 spinlock_t j_list_lock;
39 struct inode * j_inode;
40 tid_t j_tail_sequence;
41 tid_t j_transaction_sequence;
42 tid_t j_commit_sequence;
43 tid_t j_commit_request;
44 __u8 j_uuid[16];
45 struct task_struct * j_task;
46 int j_max_transaction_buffers;
47 unsigned long j_commit_interval;
48 struct timer_list j_commit_timer;
49 spinlock_t j_revoke_lock;
50 struct jbd_revoke_table_s * j_revoke;
51 struct jbd_revoke_table_s * j_revoke_table[2];
52 struct buffer_head ** j_wbuf;
53 int j_wbufsize;
54 pid_t j_last_sync_writer;
55 u64 j_average_commit_time;
56 void * j_private;
57 };
58
60 j_flags
61 General journaling state flags
62
63 j_errno
64 Is there an outstanding uncleared error on the journal (from a
65 prior abort)?
66
67 j_sb_buffer
68 First part of superblock buffer
69
70 j_superblock
71 Second part of superblock buffer
72
73 j_format_version
74 Version of the superblock format
75
76 j_state_lock
77 Protect the various scalars in the journal
78
79 j_barrier_count
80 Number of processes waiting to create a barrier lock
81
82 j_barrier
83 The barrier lock itself
84
85 j_running_transaction
86 The current running transaction..
87
88 j_committing_transaction
89 the transaction we are pushing to disk
90
91 j_checkpoint_transactions
92 a linked circular list of all transactions waiting for
93 checkpointing
94
95 j_wait_transaction_locked
96 Wait queue for waiting for a locked transaction to start
97 committing, or for a barrier lock to be released
98
99 j_wait_logspace
100 Wait queue for waiting for checkpointing to complete
101
102 j_wait_done_commit
103 Wait queue for waiting for commit to complete
104
105 j_wait_checkpoint
106 Wait queue to trigger checkpointing
107
108 j_wait_commit
109 Wait queue to trigger commit
110
111 j_wait_updates
112 Wait queue to wait for updates to complete
113
114 j_checkpoint_mutex
115 Mutex for locking against concurrent checkpoints
116
117 j_head
118 Journal head - identifies the first unused block in the journal
119
120 j_tail
121 Journal tail - identifies the oldest still-used block in the
122 journal.
123
124 j_free
125 Journal free - how many free blocks are there in the journal?
126
127 j_first
128 The block number of the first usable block
129
130 j_last
131 The block number one beyond the last usable block
132
133 j_dev
134 Device where we store the journal
135
136 j_blocksize
137 blocksize for the location where we store the journal.
138
139 j_blk_offset
140 starting block offset for into the device where we store the
141 journal
142
143 j_fs_dev
144 Device which holds the client fs. For internal journal this will be
145 equal to j_dev
146
147 j_maxlen
148 Total maximum capacity of the journal region on disk.
149
150 j_list_lock
151 Protects the buffer lists and internal buffer state.
152
153 j_inode
154 Optional inode where we store the journal. If present, all journal
155 block numbers are mapped into this inode via bmap.
156
157 j_tail_sequence
158 Sequence number of the oldest transaction in the log
159
160 j_transaction_sequence
161 Sequence number of the next transaction to grant
162
163 j_commit_sequence
164 Sequence number of the most recently committed transaction
165
166 j_commit_request
167 Sequence number of the most recent transaction wanting commit
168
169 j_uuid[16]
170 Uuid of client object.
171
172 j_task
173 Pointer to the current commit thread for this journal
174
175 j_max_transaction_buffers
176 Maximum number of metadata buffers to allow in a single compound
177 commit transaction
178
179 j_commit_interval
180 What is the maximum transaction lifetime before we begin a commit?
181
182 j_commit_timer
183 The timer used to wakeup the commit thread
184
185 j_revoke_lock
186 Protect the revoke table
187
188 j_revoke
189 The revoke table - maintains the list of revoked blocks in the
190 current transaction.
191
192 j_revoke_table[2]
193 alternate revoke tables for j_revoke
194
195 j_wbuf
196 array of buffer_heads for journal_commit_transaction
197
198 j_wbufsize
199 maximum number of buffer_heads allowed in j_wbuf, the number that
200 will fit in j_blocksize
201
202 j_last_sync_writer
203 most recent pid which did a synchronous write
204
205 j_average_commit_time
206 the average amount of time in nanoseconds it takes to commit a
207 transaction to the disk.
208
209 j_private
210 An opaque pointer to fs-private information.
211
213 Roger Gammans <rgammans@computer-surgery.co.uk>
214 Author.
215
216 Stephen Tweedie <sct@redhat.com>
217 Author.
218
220Kernel Hackers Manual 2.6. November 2011 STRUCT JOURNAL_S(9)