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 transaction_t * j_running_transaction;
18 transaction_t * j_committing_transaction;
19 transaction_t * j_checkpoint_transactions;
20 wait_queue_head_t j_wait_transaction_locked;
21 wait_queue_head_t j_wait_logspace;
22 wait_queue_head_t j_wait_done_commit;
23 wait_queue_head_t j_wait_checkpoint;
24 wait_queue_head_t j_wait_commit;
25 wait_queue_head_t j_wait_updates;
26 struct mutex j_checkpoint_mutex;
27 unsigned int j_head;
28 unsigned int j_tail;
29 unsigned int j_free;
30 unsigned int j_first;
31 unsigned int j_last;
32 struct block_device * j_dev;
33 int j_blocksize;
34 unsigned int j_blk_offset;
35 struct block_device * j_fs_dev;
36 unsigned int j_maxlen;
37 spinlock_t j_list_lock;
38 struct inode * j_inode;
39 tid_t j_tail_sequence;
40 tid_t j_transaction_sequence;
41 tid_t j_commit_sequence;
42 tid_t j_commit_request;
43 tid_t j_commit_waited;
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_running_transaction
83 The current running transaction..
84
85 j_committing_transaction
86 the transaction we are pushing to disk
87
88 j_checkpoint_transactions
89 a linked circular list of all transactions waiting for
90 checkpointing
91
92 j_wait_transaction_locked
93 Wait queue for waiting for a locked transaction to start
94 committing, or for a barrier lock to be released
95
96 j_wait_logspace
97 Wait queue for waiting for checkpointing to complete
98
99 j_wait_done_commit
100 Wait queue for waiting for commit to complete
101
102 j_wait_checkpoint
103 Wait queue to trigger checkpointing
104
105 j_wait_commit
106 Wait queue to trigger commit
107
108 j_wait_updates
109 Wait queue to wait for updates to complete
110
111 j_checkpoint_mutex
112 Mutex for locking against concurrent checkpoints
113
114 j_head
115 Journal head - identifies the first unused block in the journal
116
117 j_tail
118 Journal tail - identifies the oldest still-used block in the
119 journal.
120
121 j_free
122 Journal free - how many free blocks are there in the journal?
123
124 j_first
125 The block number of the first usable block
126
127 j_last
128 The block number one beyond the last usable block
129
130 j_dev
131 Device where we store the journal
132
133 j_blocksize
134 blocksize for the location where we store the journal.
135
136 j_blk_offset
137 starting block offset for into the device where we store the
138 journal
139
140 j_fs_dev
141 Device which holds the client fs. For internal journal this will be
142 equal to j_dev
143
144 j_maxlen
145 Total maximum capacity of the journal region on disk.
146
147 j_list_lock
148 Protects the buffer lists and internal buffer state.
149
150 j_inode
151 Optional inode where we store the journal. If present, all journal
152 block numbers are mapped into this inode via bmap.
153
154 j_tail_sequence
155 Sequence number of the oldest transaction in the log
156
157 j_transaction_sequence
158 Sequence number of the next transaction to grant
159
160 j_commit_sequence
161 Sequence number of the most recently committed transaction
162
163 j_commit_request
164 Sequence number of the most recent transaction wanting commit
165
166 j_commit_waited
167 Sequence number of the most recent transaction someone is waiting
168 for to commit.
169
170 j_uuid[16]
171 Uuid of client object.
172
173 j_task
174 Pointer to the current commit thread for this journal
175
176 j_max_transaction_buffers
177 Maximum number of metadata buffers to allow in a single compound
178 commit transaction
179
180 j_commit_interval
181 What is the maximum transaction lifetime before we begin a commit?
182
183 j_commit_timer
184 The timer used to wakeup the commit thread
185
186 j_revoke_lock
187 Protect the revoke table
188
189 j_revoke
190 The revoke table - maintains the list of revoked blocks in the
191 current transaction.
192
193 j_revoke_table[2]
194 alternate revoke tables for j_revoke
195
196 j_wbuf
197 array of buffer_heads for journal_commit_transaction
198
199 j_wbufsize
200 maximum number of buffer_heads allowed in j_wbuf, the number that
201 will fit in j_blocksize
202
203 j_last_sync_writer
204 most recent pid which did a synchronous write
205
206 j_average_commit_time
207 the average amount of time in nanoseconds it takes to commit a
208 transaction to the disk.
209
210 j_private
211 An opaque pointer to fs-private information.
212
214 Roger Gammans <rgammans@computer-surgery.co.uk>
215 Author.
216
217 Stephen Tweedie <sct@redhat.com>
218 Author.
219
221Kernel Hackers Manual 3.10 June 2019 STRUCT JOURNAL_S(9)