/Linux-v5.4/fs/jbd2/ |
D | journal.c | 99 static void __journal_abort_soft (journal_t *journal, int errno); 148 journal_t *journal = from_timer(journal, t, j_commit_timer); in commit_timeout() local 150 wake_up_process(journal->j_task); in commit_timeout() 171 journal_t *journal = arg; in kjournald2() local 178 timer_setup(&journal->j_commit_timer, commit_timeout, 0); in kjournald2() 183 journal->j_task = current; in kjournald2() 184 wake_up(&journal->j_wait_done_commit); in kjournald2() 197 write_lock(&journal->j_state_lock); in kjournald2() 200 if (journal->j_flags & JBD2_UNMOUNT) in kjournald2() 204 journal->j_commit_sequence, journal->j_commit_request); in kjournald2() [all …]
|
D | checkpoint.c | 108 void __jbd2_log_wait_for_space(journal_t *journal) in __jbd2_log_wait_for_space() argument 113 nblocks = jbd2_space_needed(journal); in __jbd2_log_wait_for_space() 114 while (jbd2_log_space_left(journal) < nblocks) { in __jbd2_log_wait_for_space() 115 write_unlock(&journal->j_state_lock); in __jbd2_log_wait_for_space() 116 mutex_lock_io(&journal->j_checkpoint_mutex); in __jbd2_log_wait_for_space() 129 write_lock(&journal->j_state_lock); in __jbd2_log_wait_for_space() 130 if (journal->j_flags & JBD2_ABORT) { in __jbd2_log_wait_for_space() 131 mutex_unlock(&journal->j_checkpoint_mutex); in __jbd2_log_wait_for_space() 134 spin_lock(&journal->j_list_lock); in __jbd2_log_wait_for_space() 135 space_left = jbd2_log_space_left(journal); in __jbd2_log_wait_for_space() [all …]
|
D | commit.c | 116 static int journal_submit_commit_record(journal_t *journal, in journal_submit_commit_record() argument 128 if (is_journal_aborted(journal)) in journal_submit_commit_record() 141 if (jbd2_has_feature_checksum(journal)) { in journal_submit_commit_record() 146 jbd2_commit_block_csum_set(journal, bh); in journal_submit_commit_record() 154 if (journal->j_flags & JBD2_BARRIER && in journal_submit_commit_record() 155 !jbd2_has_feature_async_commit(journal)) in journal_submit_commit_record() 169 static int journal_wait_on_commit_record(journal_t *journal, in journal_wait_on_commit_record() argument 213 static int journal_submit_data_buffers(journal_t *journal, in journal_submit_data_buffers() argument 220 spin_lock(&journal->j_list_lock); in journal_submit_data_buffers() 229 spin_unlock(&journal->j_list_lock); in journal_submit_data_buffers() [all …]
|
D | revoke.c | 131 static inline int hash(journal_t *journal, unsigned long long block) in hash() argument 133 return hash_64(block, journal->j_revoke->hash_shift); in hash() 136 static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr, in insert_revoke_hash() argument 151 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; in insert_revoke_hash() 152 spin_lock(&journal->j_revoke_lock); in insert_revoke_hash() 154 spin_unlock(&journal->j_revoke_lock); in insert_revoke_hash() 160 static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal, in find_revoke_record() argument 166 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; in find_revoke_record() 168 spin_lock(&journal->j_revoke_lock); in find_revoke_record() 172 spin_unlock(&journal->j_revoke_lock); in find_revoke_record() [all …]
|
D | transaction.c | 80 static void jbd2_get_transaction(journal_t *journal, in jbd2_get_transaction() argument 83 transaction->t_journal = journal; in jbd2_get_transaction() 86 transaction->t_tid = journal->j_transaction_sequence++; in jbd2_get_transaction() 87 transaction->t_expires = jiffies + journal->j_commit_interval; in jbd2_get_transaction() 91 atomic_read(&journal->j_reserved_credits)); in jbd2_get_transaction() 97 journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); in jbd2_get_transaction() 98 add_timer(&journal->j_commit_timer); in jbd2_get_transaction() 100 J_ASSERT(journal->j_running_transaction == NULL); in jbd2_get_transaction() 101 journal->j_running_transaction = transaction; in jbd2_get_transaction() 145 static void wait_transaction_locked(journal_t *journal) in wait_transaction_locked() argument [all …]
|
D | recovery.c | 39 static int do_one_pass(journal_t *journal, 67 static int do_readahead(journal_t *journal, unsigned int start) in do_readahead() argument 77 max = start + (128 * 1024 / journal->j_blocksize); in do_readahead() 78 if (max > journal->j_maxlen) in do_readahead() 79 max = journal->j_maxlen; in do_readahead() 87 err = jbd2_journal_bmap(journal, next, &blocknr); in do_readahead() 95 bh = __getblk(journal->j_dev, blocknr, journal->j_blocksize); in do_readahead() 129 static int jread(struct buffer_head **bhp, journal_t *journal, in jread() argument 138 if (offset >= journal->j_maxlen) { in jread() 143 err = jbd2_journal_bmap(journal, offset, &blocknr); in jread() [all …]
|
/Linux-v5.4/fs/reiserfs/ |
D | journal.c | 96 struct reiserfs_journal *journal); 117 struct reiserfs_journal *journal = SB_JOURNAL(sb); in init_journal_hash() local 118 memset(journal->j_hash_table, 0, in init_journal_hash() 159 struct reiserfs_journal *journal = SB_JOURNAL(sb); in get_bitmap_node() local 161 struct list_head *entry = journal->j_bitmap_nodes.next; in get_bitmap_node() 163 journal->j_used_bitmap_nodes++; in get_bitmap_node() 166 if (entry != &journal->j_bitmap_nodes) { in get_bitmap_node() 170 journal->j_free_bitmap_nodes--; in get_bitmap_node() 183 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_bitmap_node() local 184 journal->j_used_bitmap_nodes--; in free_bitmap_node() [all …]
|
/Linux-v5.4/drivers/md/bcache/ |
D | journal.c | 38 struct journal_device *ja = &ca->journal; in journal_read_bucket() 42 struct jset *j, *data = ca->set->journal.w[0].data; in journal_read_bucket() 187 struct journal_device *ja = &ca->journal; in bch_journal_read() 292 c->journal.seq = list_entry(list->prev, in bch_journal_read() 305 struct journal *j = &c->journal; in bch_journal_mark() 425 if (c->journal.btree_flushing) in btree_flush_write() 428 spin_lock(&c->journal.flush_write_lock); in btree_flush_write() 429 if (c->journal.btree_flushing) { in btree_flush_write() 430 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write() 433 c->journal.btree_flushing = true; in btree_flush_write() [all …]
|
D | journal.h | 104 struct journal { struct 162 (fifo_idx(&(c)->journal.pin, (l)) > fifo_idx(&(c)->journal.pin, (r))) 177 void bch_journal_next(struct journal *j);
|
/Linux-v5.4/fs/ocfs2/ |
D | journal.c | 63 static void ocfs2_queue_recovery_completion(struct ocfs2_journal *journal, 156 ocfs2_queue_recovery_completion(osb->journal, i, NULL, in ocfs2_queue_replay_slots() 298 struct ocfs2_journal *journal = NULL; in ocfs2_commit_cache() local 300 journal = osb->journal; in ocfs2_commit_cache() 303 down_write(&journal->j_trans_barrier); in ocfs2_commit_cache() 305 flushed = atomic_read(&journal->j_num_trans); in ocfs2_commit_cache() 308 up_write(&journal->j_trans_barrier); in ocfs2_commit_cache() 312 jbd2_journal_lock_updates(journal->j_journal); in ocfs2_commit_cache() 313 status = jbd2_journal_flush(journal->j_journal); in ocfs2_commit_cache() 314 jbd2_journal_unlock_updates(journal->j_journal); in ocfs2_commit_cache() [all …]
|
D | journal.h | 80 static inline void ocfs2_set_ci_lock_trans(struct ocfs2_journal *journal, in ocfs2_set_ci_lock_trans() argument 84 ci->ci_last_trans = journal->j_trans_id; in ocfs2_set_ci_lock_trans() 96 struct ocfs2_journal *journal = in ocfs2_ci_fully_checkpointed() local 97 OCFS2_SB(ocfs2_metadata_cache_get_super(ci))->journal; in ocfs2_ci_fully_checkpointed() 100 ret = time_after(journal->j_trans_id, ci->ci_last_trans); in ocfs2_ci_fully_checkpointed() 112 struct ocfs2_journal *journal = in ocfs2_ci_is_new() local 113 OCFS2_SB(ocfs2_metadata_cache_get_super(ci))->journal; in ocfs2_ci_is_new() 116 ret = !(time_after(journal->j_trans_id, ci->ci_created_trans)); in ocfs2_ci_is_new() 139 ci->ci_created_trans = osb->journal->j_trans_id; in ocfs2_ci_set_new() 172 int ocfs2_journal_init(struct ocfs2_journal *journal, [all …]
|
D | super.c | 288 "Journal", osb->journal->j_state, in ocfs2_osb_dump() 289 osb->journal->j_trans_id, in ocfs2_osb_dump() 290 atomic_read(&osb->journal->j_num_trans)); in ocfs2_osb_dump() 412 if (jbd2_journal_start_commit(osb->journal->j_journal, in ocfs2_sync_fs() 415 jbd2_log_wait_commit(osb->journal->j_journal, in ocfs2_sync_fs() 1980 jbd2_journal_check_used_features(osb->journal->j_journal, 0, 0, in ocfs2_journal_addressable() 2001 struct ocfs2_journal *journal; in ocfs2_initialize_super() local 2185 journal = kzalloc(sizeof(struct ocfs2_journal), GFP_KERNEL); in ocfs2_initialize_super() 2186 if (!journal) { in ocfs2_initialize_super() 2191 osb->journal = journal; in ocfs2_initialize_super() [all …]
|
/Linux-v5.4/include/trace/events/ |
D | jbd2.h | 16 TP_PROTO(journal_t *journal, int result), 18 TP_ARGS(journal, result), 26 __entry->dev = journal->j_fs_dev->bd_dev; 36 TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 38 TP_ARGS(journal, commit_transaction), 47 __entry->dev = journal->j_fs_dev->bd_dev; 59 TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 61 TP_ARGS(journal, commit_transaction) 66 TP_PROTO(journal_t *journal, transaction_t *commit_transaction), 68 TP_ARGS(journal, commit_transaction) [all …]
|
/Linux-v5.4/include/linux/ |
D | jbd2.h | 1279 int jbd2_journal_get_log_tail(journal_t *journal, tid_t *tid, 1281 int __jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block); 1282 void jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block); 1288 void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy); 1290 void jbd2_journal_destroy_checkpoint(journal_t *journal); 1397 extern int jbd2_journal_load (journal_t *journal); 1399 extern int jbd2_journal_recover (journal_t *journal); 1419 extern int jbd2_journal_begin_ordered_truncate(journal_t *journal, 1422 extern void jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_inode *jinode); 1480 extern void jbd2_journal_switch_revoke_table(journal_t *journal); [all …]
|
/Linux-v5.4/Documentation/filesystems/ext4/ |
D | journal.rst | 6 Introduced in ext3, the ext4 filesystem employs a journal to protect the 12 committed is also written to the journal. At some later point in time, 13 the journal code writes the transactions to their final locations on 16 crash during the second slow write, the journal can be replayed all the 18 gets written through the journal to the disk. The effect of this is to 23 through the journal. This means that file data blocks are /not/ 26 option to control journal behavior. If ``data=journal``, all data and 27 metadata are written to disk through the journal. This is slower but 29 disk before the metadata are written to disk through the journal. 31 The journal inode is typically inode 8. The first 68 bytes of the [all …]
|
/Linux-v5.4/Documentation/admin-guide/device-mapper/ |
D | dm-integrity.rst | 12 To guarantee write atomicity, the dm-integrity target uses journal, it 13 writes sector data and integrity tags into a journal, commits the journal 29 instead of a journal. If a bit in the bitmap is 1, the corresponding 32 is faster than the journal mode, because we don't have to write the data 66 D - direct writes (without journal) 73 journal and atomicity is guaranteed. In case of crash, 81 R - recovery mode - in this mode, journal is not replayed, 92 The size of journal, this argument is used only if formatting the 114 The journal watermark in percents. When the size of the journal 115 exceeds this watermark, the thread that flushes the journal will [all …]
|
/Linux-v5.4/Documentation/filesystems/ |
D | journalling.rst | 12 how you decide to allocate the physical media on which the journal 15 for journal stored on a raw device (in a continuous range of blocks). A 21 journal file. The journalling layer expects the space for the journal 23 When loading the journal you must call :c:func:`jbd2_journal_load` to process 24 journal contents. If the client file system detects the journal contents 26 may call :c:func:`jbd2_journal_wipe` to clear the journal contents before 31 transactions in the journal and similarly :c:func:`jbd2_journal_load` will 38 You still need to actually journal your filesystem changes, this is done 40 the modification of each of the buffers with calls to the journal layer, 70 :c:func:`jbd2_journal_destroy` to clean up your in-core journal object. [all …]
|
D | gfs2-uevents.txt | 20 with no journal assigned), and read-only (with journal assigned) status 39 of journal recovery for one of the filesystems journals. It has 40 two environment variables, JID= which specifies the journal id which 43 for every journal recovered, whether it is during the initial mount 44 process or as the result of gfs_controld requesting a specific journal 89 If a journal is in use by the filesystem (journals are not 91 numeric journal id in all GFS2 uevents.
|
D | ubifs-authentication.rst | 130 certain conditions are met (eg. ``fsync(2)``). The journal is used to record 132 of the index. During mount, the journal is read from the flash and replayed 135 UBIFS reserves a bunch of LEBs just for the journal called *log area*. The 140 written on every journal update. Each reference node points to the position of 142 journal entry. These nodes are called *buds* and describe the actual filesystem 145 The log area is maintained as a ring. Whenever the journal is almost full, 151 When writing a journal entry, UBIFS first ensures that enough space is 157 done for the last referenced LEB of the journal. Only this can become corrupt 222 versions of the index tree or the journal, but instead marks them as obsolete 245 - The journal which also contains file contents and metadata by recording changes [all …]
|
/Linux-v5.4/fs/ext4/ |
D | fsync.c | 99 journal_t *journal = EXT4_SB(inode->i_sb)->s_journal; in ext4_sync_file() local 119 if (!journal) { in ext4_sync_file() 151 if (journal->j_flags & JBD2_BARRIER && in ext4_sync_file() 152 !jbd2_trans_will_send_data_barrier(journal, commit_tid)) in ext4_sync_file() 154 ret = jbd2_complete_transaction(journal, commit_tid); in ext4_sync_file()
|
D | ext4_jbd2.c | 44 journal_t *journal; in ext4_journal_check_start() local 54 journal = EXT4_SB(sb)->s_journal; in ext4_journal_check_start() 60 if (journal && is_journal_aborted(journal)) { in ext4_journal_check_start() 70 journal_t *journal; in __ext4_journal_start_sb() local 78 journal = EXT4_SB(sb)->s_journal; in __ext4_journal_start_sb() 79 if (!journal) in __ext4_journal_start_sb() 81 return jbd2__journal_start(journal, blocks, rsv_blocks, GFP_NOFS, in __ext4_journal_start_sb()
|
D | super.c | 411 static void ext4_journal_commit_callback(journal_t *journal, transaction_t *txn) in ext4_journal_commit_callback() argument 413 struct super_block *sb = journal->j_private; in ext4_journal_commit_callback() 415 int error = is_journal_aborted(journal); in ext4_journal_commit_callback() 464 journal_t *journal = EXT4_SB(sb)->s_journal; in ext4_handle_error() local 467 if (journal) in ext4_handle_error() 468 jbd2_journal_abort(journal, -EIO); in ext4_handle_error() 1241 journal_t *journal = EXT4_SB(sb)->s_journal; in bdev_try_to_free_page() local 1246 if (journal) in bdev_try_to_free_page() 1247 return jbd2_journal_try_to_free_buffers(journal, page, in bdev_try_to_free_page() 4715 static void ext4_init_journal_params(struct super_block *sb, journal_t *journal) in ext4_init_journal_params() argument [all …]
|
/Linux-v5.4/Documentation/admin-guide/ |
D | ext4.rst | 66 the filesystem with a large journal can also be helpful for 84 * journal checksumming for robustness, performance 143 Mount filesystem read only. Note that ext4 will replay the journal (and 148 Enable checksumming of the journal transactions. This will allow the 159 When the external journal device's major/minor numbers have changed, 160 these options allow the user to specify the new journal location. The 161 journal device is identified through either its new major/minor numbers 165 Don't load the journal on mounting. Note that if the filesystem was 166 not unmounted cleanly, skipping the journal replay will lead to the 170 data=journal [all …]
|
/Linux-v5.4/fs/f2fs/ |
D | segment.c | 2337 memcpy(&dst->journal, curseg->journal, SUM_JOURNAL_SIZE); in write_current_sum_page() 3437 memcpy(seg_i->journal, kaddr, SUM_JOURNAL_SIZE); in read_compacted_summaries() 3441 memcpy(seg_i->journal, kaddr + SUM_JOURNAL_SIZE, SUM_JOURNAL_SIZE); in read_compacted_summaries() 3541 memcpy(curseg->journal, &sum->journal, SUM_JOURNAL_SIZE); in read_normal_summaries() 3558 struct f2fs_journal *sit_j = CURSEG_I(sbi, CURSEG_COLD_DATA)->journal; in restore_curseg_summaries() 3559 struct f2fs_journal *nat_j = CURSEG_I(sbi, CURSEG_HOT_DATA)->journal; in restore_curseg_summaries() 3613 memcpy(kaddr, seg_i->journal, SUM_JOURNAL_SIZE); in write_compacted_summaries() 3618 memcpy(kaddr + written_size, seg_i->journal, SUM_JOURNAL_SIZE); in write_compacted_summaries() 3682 int f2fs_lookup_journal_in_cursum(struct f2fs_journal *journal, int type, in f2fs_lookup_journal_in_cursum() argument 3688 for (i = 0; i < nats_in_cursum(journal); i++) { in f2fs_lookup_journal_in_cursum() [all …]
|
D | node.c | 521 struct f2fs_journal *journal = curseg->journal; in f2fs_get_node_info() local 548 i = f2fs_lookup_journal_in_cursum(journal, NAT_JOURNAL, nid, 0); in f2fs_get_node_info() 550 ne = nat_in_journal(journal, i); in f2fs_get_node_info() 2257 struct f2fs_journal *journal = curseg->journal; in scan_curseg_cache() local 2261 for (i = 0; i < nats_in_cursum(journal); i++) { in scan_curseg_cache() 2265 addr = le32_to_cpu(nat_in_journal(journal, i).block_addr); in scan_curseg_cache() 2266 nid = le32_to_cpu(nid_in_journal(journal, i)); in scan_curseg_cache() 2703 struct f2fs_journal *journal = curseg->journal; in remove_nats_in_journal() local 2707 for (i = 0; i < nats_in_cursum(journal); i++) { in remove_nats_in_journal() 2710 nid_t nid = le32_to_cpu(nid_in_journal(journal, i)); in remove_nats_in_journal() [all …]
|