struct journal_s — this is the concrete type associated with journal_t.
struct journal_s { unsigned long j_flags; int j_errno; struct buffer_head * j_sb_buffer; journal_superblock_t * j_superblock; int j_format_version; spinlock_t j_state_lock; int j_barrier_count; struct mutex j_barrier; transaction_t * j_running_transaction; transaction_t * j_committing_transaction; transaction_t * j_checkpoint_transactions; wait_queue_head_t j_wait_transaction_locked; wait_queue_head_t j_wait_logspace; wait_queue_head_t j_wait_done_commit; wait_queue_head_t j_wait_checkpoint; wait_queue_head_t j_wait_commit; wait_queue_head_t j_wait_updates; struct mutex j_checkpoint_mutex; unsigned long j_head; unsigned long j_tail; unsigned long j_free; unsigned long j_first; unsigned long j_last; struct block_device * j_dev; int j_blocksize; unsigned long j_blk_offset; struct block_device * j_fs_dev; unsigned int j_maxlen; spinlock_t j_list_lock; struct inode * j_inode; tid_t j_tail_sequence; tid_t j_transaction_sequence; tid_t j_commit_sequence; tid_t j_commit_request; __u8 j_uuid[16]; struct task_struct * j_task; int j_max_transaction_buffers; unsigned long j_commit_interval; struct timer_list j_commit_timer; spinlock_t j_revoke_lock; struct jbd_revoke_table_s * j_revoke; struct jbd_revoke_table_s * j_revoke_table[2]; struct buffer_head ** j_wbuf; int j_wbufsize; pid_t j_last_sync_writer; void * j_private; };
General journaling state flags
Is there an outstanding uncleared error on the journal (from a prior abort)?
First part of superblock buffer
Second part of superblock buffer
Version of the superblock format
Protect the various scalars in the journal
Number of processes waiting to create a barrier lock
The barrier lock itself
The current running transaction..
the transaction we are pushing to disk
a linked circular list of all transactions waiting for checkpointing
Wait queue for waiting for a locked transaction to start committing, or for a barrier lock to be released
Wait queue for waiting for checkpointing to complete
Wait queue for waiting for commit to complete
Wait queue to trigger checkpointing
Wait queue to trigger commit
Wait queue to wait for updates to complete
Mutex for locking against concurrent checkpoints
Journal head - identifies the first unused block in the journal
Journal tail - identifies the oldest still-used block in the journal.
Journal free - how many free blocks are there in the journal?
The block number of the first usable block
The block number one beyond the last usable block
Device where we store the journal
blocksize for the location where we store the journal.
starting block offset for into the device where we store the journal
Device which holds the client fs. For internal journal this will be equal to j_dev
Total maximum capacity of the journal region on disk.
Protects the buffer lists and internal buffer state.
Optional inode where we store the journal. If present, all journal
block numbers are mapped into this inode via bmap
.
Sequence number of the oldest transaction in the log
Sequence number of the next transaction to grant
Sequence number of the most recently committed transaction
Sequence number of the most recent transaction wanting commit
Uuid of client object.
Pointer to the current commit thread for this journal
Maximum number of metadata buffers to allow in a single compound commit transaction
What is the maximum transaction lifetime before we begin a commit?
The timer used to wakeup the commit thread
Protect the revoke table
The revoke table - maintains the list of revoked blocks in the current transaction.
alternate revoke tables for j_revoke
array of buffer_heads for journal_commit_transaction
maximum number of buffer_heads allowed in j_wbuf, the number that will fit in j_blocksize
most recent pid which did a synchronous write
An opaque pointer to fs-private information.