struct journal_s — The journal_s type 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;
rwlock_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_done_commit;
wait_queue_head_t j_wait_commit;
wait_queue_head_t j_wait_updates;
wait_queue_head_t j_wait_reserved;
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 long j_blk_offset;
struct block_device * j_fs_dev;
unsigned int j_maxlen;
atomic_t j_reserved_credits;
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 jbd2_revoke_table_s * j_revoke;
struct jbd2_revoke_table_s * j_revoke_table[2];
struct buffer_head ** j_wbuf;
int j_wbufsize;
pid_t j_last_sync_writer;
spinlock_t j_history_lock;
struct proc_dir_entry * j_proc_entry;
struct transaction_stats_s j_stats;
void * j_private;
#ifdef CONFIG_DEBUG_LOCK_ALLOC
struct lockdep_map j_trans_commit_map;
#endif
}; unsigned long j_flagsGeneral journaling state flags
int j_errnoIs there an outstanding uncleared error on the journal (from a prior abort)?
struct buffer_head * j_sb_bufferFirst part of superblock buffer
journal_superblock_t * j_superblockSecond part of superblock buffer
int j_format_versionVersion of the superblock format
rwlock_t j_state_lockProtect the various scalars in the journal
int j_barrier_countNumber of processes waiting to create a barrier lock
struct mutex j_barrierThe barrier lock itself
transaction_t * j_running_transactionThe current running transaction..
transaction_t * j_committing_transactionthe transaction we are pushing to disk
transaction_t * j_checkpoint_transactionsa linked circular list of all transactions waiting for checkpointing
wait_queue_head_t j_wait_transaction_lockedWait queue for waiting for a locked transaction to start committing, or for a barrier lock to be released
wait_queue_head_t j_wait_done_commitWait queue for waiting for commit to complete
wait_queue_head_t j_wait_commitWait queue to trigger commit
wait_queue_head_t j_wait_updatesWait queue to wait for updates to complete
wait_queue_head_t j_wait_reservedWait queue to wait for reserved buffer credits to drop
struct mutex j_checkpoint_mutexMutex for locking against concurrent checkpoints
unsigned long j_headJournal head - identifies the first unused block in the journal
unsigned long j_tailJournal tail - identifies the oldest still-used block in the journal.
unsigned long j_freeJournal free - how many free blocks are there in the journal?
unsigned long j_firstThe block number of the first usable block
unsigned long j_lastThe block number one beyond the last usable block
struct block_device * j_devDevice where we store the journal
int j_blocksizeblocksize for the location where we store the journal.
unsigned long long j_blk_offsetstarting block offset for into the device where we store the journal
struct block_device * j_fs_devDevice which holds the client fs. For internal journal this will be equal to j_dev
unsigned int j_maxlenTotal maximum capacity of the journal region on disk.
atomic_t j_reserved_creditsNumber of buffers reserved from the running transaction
spinlock_t j_list_lockProtects the buffer lists and internal buffer state.
struct inode * j_inode
Optional inode where we store the journal. If present, all journal
block numbers are mapped into this inode via bmap.
tid_t j_tail_sequenceSequence number of the oldest transaction in the log
tid_t j_transaction_sequenceSequence number of the next transaction to grant
tid_t j_commit_sequenceSequence number of the most recently committed transaction
tid_t j_commit_requestSequence number of the most recent transaction wanting commit
__u8 j_uuid[16]Uuid of client object.
struct task_struct * j_taskPointer to the current commit thread for this journal
int j_max_transaction_buffersMaximum number of metadata buffers to allow in a single compound commit transaction
unsigned long j_commit_intervalWhat is the maximum transaction lifetime before we begin a commit?
struct timer_list j_commit_timerThe timer used to wakeup the commit thread
spinlock_t j_revoke_lockProtect the revoke table
struct jbd2_revoke_table_s * j_revokeThe revoke table - maintains the list of revoked blocks in the current transaction.
struct jbd2_revoke_table_s * j_revoke_table[2]alternate revoke tables for j_revoke
struct buffer_head ** j_wbufarray of buffer_heads for jbd2_journal_commit_transaction
int j_wbufsizemaximum number of buffer_heads allowed in j_wbuf, the number that will fit in j_blocksize
pid_t j_last_sync_writermost recent pid which did a synchronous write
spinlock_t j_history_lockProtect the transactions statistics history
struct proc_dir_entry * j_proc_entryprocfs entry for the jbd statistics directory
struct transaction_stats_s j_statsOverall statistics
void * j_privateAn opaque pointer to fs-private information.
struct lockdep_map j_trans_commit_mapLockdep entity to track transaction commit dependencies