Lines Matching refs:journal
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()
185 if (journal->j_free_bitmap_nodes > REISERFS_MAX_BITMAP_NODES) { in free_bitmap_node()
189 list_add(&bn->list, &journal->j_bitmap_nodes); in free_bitmap_node()
190 journal->j_free_bitmap_nodes++; in free_bitmap_node()
197 struct reiserfs_journal *journal = SB_JOURNAL(sb); in allocate_bitmap_nodes() local
202 list_add(&bn->list, &journal->j_bitmap_nodes); in allocate_bitmap_nodes()
203 journal->j_free_bitmap_nodes++; in allocate_bitmap_nodes()
260 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_bitmap_nodes() local
261 struct list_head *next = journal->j_bitmap_nodes.next; in free_bitmap_nodes()
264 while (next != &journal->j_bitmap_nodes) { in free_bitmap_nodes()
269 next = journal->j_bitmap_nodes.next; in free_bitmap_nodes()
270 journal->j_free_bitmap_nodes--; in free_bitmap_nodes()
316 struct reiserfs_journal *journal = SB_JOURNAL(sb); in get_list_bitmap() local
320 i = journal->j_list_bitmap_index; in get_list_bitmap()
321 journal->j_list_bitmap_index = (i + 1) % JOURNAL_NUM_BITMAPS; in get_list_bitmap()
322 jb = journal->j_list_bitmap + i; in get_list_bitmap()
323 if (journal->j_list_bitmap[i].journal_list) { in get_list_bitmap()
325 journal->j_list_bitmap[i]. in get_list_bitmap()
327 if (!journal->j_list_bitmap[i].journal_list) { in get_list_bitmap()
372 struct reiserfs_journal *journal = SB_JOURNAL(sb); in get_cnode() local
376 if (journal->j_cnode_free <= 0) { in get_cnode()
379 journal->j_cnode_used++; in get_cnode()
380 journal->j_cnode_free--; in get_cnode()
381 cn = journal->j_cnode_free_list; in get_cnode()
388 journal->j_cnode_free_list = cn->next; in get_cnode()
399 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_cnode() local
403 journal->j_cnode_used--; in free_cnode()
404 journal->j_cnode_free++; in free_cnode()
406 cn->next = journal->j_cnode_free_list; in free_cnode()
407 if (journal->j_cnode_free_list) { in free_cnode()
408 journal->j_cnode_free_list->prev = cn; in free_cnode()
411 journal->j_cnode_free_list = cn; in free_cnode()
465 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_in_journal() local
473 PROC_INFO_INC(sb, journal.in_journal); in reiserfs_in_journal()
482 PROC_INFO_INC(sb, journal.in_journal_bitmap); in reiserfs_in_journal()
483 jb = journal->j_list_bitmap + i; in reiserfs_in_journal()
503 get_journal_hash_dev(sb, journal->j_list_hash_table, bl))) { in reiserfs_in_journal()
508 if ((cn = get_journal_hash_dev(sb, journal->j_hash_table, bl))) { in reiserfs_in_journal()
513 PROC_INFO_INC(sb, journal.in_journal_reusable); in reiserfs_in_journal()
536 PROC_INFO_INC(sb, journal.lock_journal); in lock_journal()
583 struct reiserfs_journal *journal = SB_JOURNAL(s); in journal_list_still_alive() local
584 struct list_head *entry = &journal->j_journal_list; in journal_list_still_alive()
888 struct reiserfs_journal *journal = SB_JOURNAL(s); in flush_older_commits() local
904 if (entry == &journal->j_journal_list || in flush_older_commits()
944 if (entry == &journal->j_journal_list) in flush_older_commits()
982 struct reiserfs_journal *journal = SB_JOURNAL(s); in flush_commit_list() local
998 BUG_ON(trans_id == journal->j_trans_id); in flush_commit_list()
1037 ret = write_ordered_buffers(&journal->j_dirty_buffers_lock, in flush_commit_list()
1038 journal, jl, &jl->j_bh_list); in flush_commit_list()
1051 atomic_inc(&journal->j_async_throttle); in flush_commit_list()
1068 atomic_dec(&journal->j_async_throttle); in flush_commit_list()
1110 if (likely(!retval && !reiserfs_is_journal_aborted (journal))) { in flush_commit_list()
1135 if (journal->j_last_commit_id != 0 && in flush_commit_list()
1136 (jl->j_trans_id - journal->j_last_commit_id) != 1) { in flush_commit_list()
1138 journal->j_last_commit_id, jl->j_trans_id); in flush_commit_list()
1140 journal->j_last_commit_id = jl->j_trans_id; in flush_commit_list()
1148 retval = retval ? retval : journal->j_errno; in flush_commit_list()
1204 struct reiserfs_journal *journal = SB_JOURNAL(sb); in remove_all_from_journal_list() local
1221 remove_journal_hash(sb, journal->j_list_hash_table, in remove_all_from_journal_list()
1244 struct reiserfs_journal *journal = SB_JOURNAL(sb); in _update_journal_header_block() local
1247 if (reiserfs_is_journal_aborted(journal)) in _update_journal_header_block()
1250 if (trans_id >= journal->j_last_flush_trans_id) { in _update_journal_header_block()
1251 if (buffer_locked((journal->j_header_bh))) { in _update_journal_header_block()
1253 __wait_on_buffer(journal->j_header_bh); in _update_journal_header_block()
1255 if (unlikely(!buffer_uptodate(journal->j_header_bh))) { in _update_journal_header_block()
1263 journal->j_last_flush_trans_id = trans_id; in _update_journal_header_block()
1264 journal->j_first_unflushed_offset = offset; in _update_journal_header_block()
1265 jh = (struct reiserfs_journal_header *)(journal->j_header_bh-> in _update_journal_header_block()
1269 jh->j_mount_id = cpu_to_le32(journal->j_mount_id); in _update_journal_header_block()
1271 set_buffer_dirty(journal->j_header_bh); in _update_journal_header_block()
1275 __sync_dirty_buffer(journal->j_header_bh, in _update_journal_header_block()
1278 sync_dirty_buffer(journal->j_header_bh); in _update_journal_header_block()
1281 if (!buffer_uptodate(journal->j_header_bh)) { in _update_journal_header_block()
1306 struct reiserfs_journal *journal = SB_JOURNAL(sb); in flush_older_journal_lists() local
1314 entry = journal->j_journal_list.next; in flush_older_journal_lists()
1316 if (entry == &journal->j_journal_list) in flush_older_journal_lists()
1333 struct reiserfs_journal *journal = SB_JOURNAL(s); in del_from_work_list() local
1336 journal->j_num_work_lists--; in del_from_work_list()
1360 struct reiserfs_journal *journal = SB_JOURNAL(s); in flush_journal_list() local
1366 if (atomic_read(&journal->j_wcount) != 0) { in flush_journal_list()
1368 atomic_read(&journal->j_wcount)); in flush_journal_list()
1373 reiserfs_mutex_lock_safe(&journal->j_flush_mutex, s); in flush_journal_list()
1374 } else if (mutex_trylock(&journal->j_flush_mutex)) { in flush_journal_list()
1379 if (j_len_saved > journal->j_trans_max) { in flush_journal_list()
1398 && !reiserfs_is_journal_aborted(journal)) in flush_journal_list()
1411 if (atomic_read(&journal->j_wcount) != 0) { in flush_journal_list()
1583 err = journal->j_errno; in flush_journal_list()
1606 journal->j_num_lists--; in flush_journal_list()
1609 if (journal->j_last_flush_id != 0 && in flush_journal_list()
1610 (jl->j_trans_id - journal->j_last_flush_id) != 1) { in flush_journal_list()
1612 journal->j_last_flush_id, jl->j_trans_id); in flush_journal_list()
1614 journal->j_last_flush_id = jl->j_trans_id; in flush_journal_list()
1629 mutex_unlock(&journal->j_flush_mutex); in flush_journal_list()
1734 struct reiserfs_journal *journal = SB_JOURNAL(s); in kupdate_transactions() local
1737 reiserfs_mutex_lock_safe(&journal->j_flush_mutex, s); in kupdate_transactions()
1764 if (entry == &journal->j_journal_list) { in kupdate_transactions()
1778 mutex_unlock(&journal->j_flush_mutex); in kupdate_transactions()
1803 struct reiserfs_journal *journal = SB_JOURNAL(s); in flush_used_journal_lists() local
1822 if (tjl->j_list.next == &journal->j_journal_list) in flush_used_journal_lists()
1890 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_journal_ram() local
1891 kfree(journal->j_current_jl); in free_journal_ram()
1892 journal->j_num_lists--; in free_journal_ram()
1894 vfree(journal->j_cnode_free_orig); in free_journal_ram()
1895 free_list_bitmaps(sb, journal->j_list_bitmap); in free_journal_ram()
1897 if (journal->j_header_bh) { in free_journal_ram()
1898 brelse(journal->j_header_bh); in free_journal_ram()
1904 release_journal_dev(sb, journal); in free_journal_ram()
1905 vfree(journal); in free_journal_ram()
1917 struct reiserfs_journal *journal = SB_JOURNAL(sb); in do_journal_release() local
1943 if (!error && reiserfs_is_journal_aborted(journal)) { in do_journal_release()
2125 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_read_transaction() local
2308 journal->j_start = cur_dblock - SB_ONDISK_JOURNAL_1st_BLOCK(sb); in journal_read_transaction()
2309 journal->j_last_flush_trans_id = trans_id; in journal_read_transaction()
2310 journal->j_trans_id = trans_id + 1; in journal_read_transaction()
2312 if (journal->j_trans_id == 0) in journal_read_transaction()
2313 journal->j_trans_id = 10; in journal_read_transaction()
2380 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_read() local
2397 journal->j_dev_bd); in journal_read()
2405 journal->j_header_bh = journal_bread(sb, in journal_read()
2408 if (!journal->j_header_bh) { in journal_read()
2411 jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data); in journal_read()
2458 reiserfs_breada(journal->j_dev_bd, cur_dblock, in journal_read()
2524 SB_ONDISK_JOURNAL_1st_BLOCK(sb) + journal->j_start; in journal_read()
2541 journal->j_start = le32_to_cpu(jh->j_first_unflushed_offset); in journal_read()
2542 journal->j_trans_id = in journal_read()
2545 if (journal->j_trans_id == 0) in journal_read()
2546 journal->j_trans_id = 10; in journal_read()
2547 journal->j_last_flush_trans_id = in journal_read()
2549 journal->j_mount_id = le32_to_cpu(jh->j_mount_id) + 1; in journal_read()
2551 journal->j_mount_id = newest_mount_id + 1; in journal_read()
2554 "newest_mount_id to %lu", journal->j_mount_id); in journal_read()
2555 journal->j_first_unflushed_offset = journal->j_start; in journal_read()
2564 _update_journal_header_block(sb, journal->j_start, in journal_read()
2565 journal->j_last_flush_trans_id)) { in journal_read()
2598 struct reiserfs_journal *journal) in release_journal_dev() argument
2600 if (journal->j_dev_bd != NULL) { in release_journal_dev()
2601 blkdev_put(journal->j_dev_bd, journal->j_dev_mode); in release_journal_dev()
2602 journal->j_dev_bd = NULL; in release_journal_dev()
2607 struct reiserfs_journal *journal, in journal_init_dev() argument
2617 journal->j_dev_bd = NULL; in journal_init_dev()
2628 journal->j_dev_bd = blkdev_get_by_dev(jdev, blkdev_mode, in journal_init_dev()
2629 journal); in journal_init_dev()
2630 journal->j_dev_mode = blkdev_mode; in journal_init_dev()
2631 if (IS_ERR(journal->j_dev_bd)) { in journal_init_dev()
2632 result = PTR_ERR(journal->j_dev_bd); in journal_init_dev()
2633 journal->j_dev_bd = NULL; in journal_init_dev()
2639 set_blocksize(journal->j_dev_bd, super->s_blocksize); in journal_init_dev()
2644 journal->j_dev_mode = blkdev_mode; in journal_init_dev()
2645 journal->j_dev_bd = blkdev_get_by_path(jdev_name, blkdev_mode, journal); in journal_init_dev()
2646 if (IS_ERR(journal->j_dev_bd)) { in journal_init_dev()
2647 result = PTR_ERR(journal->j_dev_bd); in journal_init_dev()
2648 journal->j_dev_bd = NULL; in journal_init_dev()
2655 set_blocksize(journal->j_dev_bd, super->s_blocksize); in journal_init_dev()
2658 journal->j_dev_bd); in journal_init_dev()
2677 struct reiserfs_journal *journal) in check_advise_trans_params() argument
2679 if (journal->j_trans_max) { in check_advise_trans_params()
2685 if (journal->j_trans_max > JOURNAL_TRANS_MAX_DEFAULT / ratio || in check_advise_trans_params()
2686 journal->j_trans_max < JOURNAL_TRANS_MIN_DEFAULT / ratio || in check_advise_trans_params()
2687 SB_ONDISK_JOURNAL_SIZE(sb) / journal->j_trans_max < in check_advise_trans_params()
2691 "FSCK?", journal->j_trans_max); in check_advise_trans_params()
2694 if (journal->j_max_batch != (journal->j_trans_max) * in check_advise_trans_params()
2698 "FSCK?", journal->j_max_batch); in check_advise_trans_params()
2713 journal->j_trans_max = JOURNAL_TRANS_MAX_DEFAULT; in check_advise_trans_params()
2714 journal->j_max_batch = JOURNAL_MAX_BATCH_DEFAULT; in check_advise_trans_params()
2715 journal->j_max_commit_age = JOURNAL_MAX_COMMIT_AGE; in check_advise_trans_params()
2728 struct reiserfs_journal *journal; in journal_init() local
2732 journal = SB_JOURNAL(sb) = vzalloc(sizeof(struct reiserfs_journal)); in journal_init()
2733 if (!journal) { in journal_init()
2738 INIT_LIST_HEAD(&journal->j_bitmap_nodes); in journal_init()
2739 INIT_LIST_HEAD(&journal->j_prealloc_list); in journal_init()
2740 INIT_LIST_HEAD(&journal->j_working_list); in journal_init()
2741 INIT_LIST_HEAD(&journal->j_journal_list); in journal_init()
2742 journal->j_persistent_trans = 0; in journal_init()
2743 if (reiserfs_allocate_list_bitmaps(sb, journal->j_list_bitmap, in journal_init()
2775 if (journal_init_dev(sb, journal, j_dev_name) != 0) { in journal_init()
2802 journal->j_dev_bd, in journal_init()
2808 journal->j_trans_max = le32_to_cpu(jh->jh_journal.jp_journal_trans_max); in journal_init()
2809 journal->j_max_batch = le32_to_cpu(jh->jh_journal.jp_journal_max_batch); in journal_init()
2810 journal->j_max_commit_age = in journal_init()
2812 journal->j_max_trans_age = JOURNAL_MAX_TRANS_AGE; in journal_init()
2814 if (check_advise_trans_params(sb, journal) != 0) in journal_init()
2816 journal->j_default_max_commit_age = journal->j_max_commit_age; in journal_init()
2819 journal->j_max_commit_age = commit_max_age; in journal_init()
2820 journal->j_max_trans_age = commit_max_age; in journal_init()
2826 journal->j_dev_bd, in journal_init()
2829 journal->j_trans_max, in journal_init()
2830 journal->j_max_batch, in journal_init()
2831 journal->j_max_commit_age, journal->j_max_trans_age); in journal_init()
2835 journal->j_list_bitmap_index = 0; in journal_init()
2838 memset(journal->j_list_hash_table, 0, in journal_init()
2841 INIT_LIST_HEAD(&journal->j_dirty_buffers); in journal_init()
2842 spin_lock_init(&journal->j_dirty_buffers_lock); in journal_init()
2844 journal->j_start = 0; in journal_init()
2845 journal->j_len = 0; in journal_init()
2846 journal->j_len_alloc = 0; in journal_init()
2847 atomic_set(&journal->j_wcount, 0); in journal_init()
2848 atomic_set(&journal->j_async_throttle, 0); in journal_init()
2849 journal->j_bcount = 0; in journal_init()
2850 journal->j_trans_start_time = 0; in journal_init()
2851 journal->j_last = NULL; in journal_init()
2852 journal->j_first = NULL; in journal_init()
2853 init_waitqueue_head(&journal->j_join_wait); in journal_init()
2854 mutex_init(&journal->j_mutex); in journal_init()
2855 mutex_init(&journal->j_flush_mutex); in journal_init()
2857 journal->j_trans_id = 10; in journal_init()
2858 journal->j_mount_id = 10; in journal_init()
2859 journal->j_state = 0; in journal_init()
2860 atomic_set(&journal->j_jlock, 0); in journal_init()
2861 journal->j_cnode_free_list = allocate_cnodes(num_cnodes); in journal_init()
2862 journal->j_cnode_free_orig = journal->j_cnode_free_list; in journal_init()
2863 journal->j_cnode_free = journal->j_cnode_free_list ? num_cnodes : 0; in journal_init()
2864 journal->j_cnode_used = 0; in journal_init()
2865 journal->j_must_wait = 0; in journal_init()
2867 if (journal->j_cnode_free == 0) { in journal_init()
2877 jl = journal->j_current_jl; in journal_init()
2900 INIT_DELAYED_WORK(&journal->j_work, flush_async_commits); in journal_init()
2901 journal->j_work_sb = sb; in journal_init()
2916 struct reiserfs_journal *journal = SB_JOURNAL(th->t_super); in journal_transaction_should_end() local
2922 if (journal->j_must_wait > 0 || in journal_transaction_should_end()
2923 (journal->j_len_alloc + new_alloc) >= journal->j_max_batch || in journal_transaction_should_end()
2924 atomic_read(&journal->j_jlock) || in journal_transaction_should_end()
2925 (now - journal->j_trans_start_time) > journal->j_max_trans_age || in journal_transaction_should_end()
2926 journal->j_cnode_free < (journal->j_trans_max * 3)) { in journal_transaction_should_end()
2930 journal->j_len_alloc += new_alloc; in journal_transaction_should_end()
2938 struct reiserfs_journal *journal = SB_JOURNAL(th->t_super); in reiserfs_block_writes() local
2940 journal->j_must_wait = 1; in reiserfs_block_writes()
2941 set_bit(J_WRITERS_BLOCKED, &journal->j_state); in reiserfs_block_writes()
2948 struct reiserfs_journal *journal = SB_JOURNAL(s); in reiserfs_allow_writes() local
2949 clear_bit(J_WRITERS_BLOCKED, &journal->j_state); in reiserfs_allow_writes()
2950 wake_up(&journal->j_join_wait); in reiserfs_allow_writes()
2956 struct reiserfs_journal *journal = SB_JOURNAL(s); in reiserfs_wait_on_write_block() local
2957 wait_event(journal->j_join_wait, in reiserfs_wait_on_write_block()
2958 !test_bit(J_WRITERS_BLOCKED, &journal->j_state)); in reiserfs_wait_on_write_block()
2964 struct reiserfs_journal *journal = SB_JOURNAL(s); in queue_log_writer() local
2965 set_bit(J_WRITERS_QUEUED, &journal->j_state); in queue_log_writer()
2972 add_wait_queue(&journal->j_join_wait, &wait); in queue_log_writer()
2974 if (test_bit(J_WRITERS_QUEUED, &journal->j_state)) { in queue_log_writer()
2980 remove_wait_queue(&journal->j_join_wait, &wait); in queue_log_writer()
2985 struct reiserfs_journal *journal = SB_JOURNAL(s); in wake_queued_writers() local
2986 if (test_and_clear_bit(J_WRITERS_QUEUED, &journal->j_state)) in wake_queued_writers()
2987 wake_up(&journal->j_join_wait); in wake_queued_writers()
2992 struct reiserfs_journal *journal = SB_JOURNAL(sb); in let_transaction_grow() local
2993 unsigned long bcount = journal->j_bcount; in let_transaction_grow()
3001 journal->j_current_jl->j_state |= LIST_COMMIT_PENDING; in let_transaction_grow()
3002 while ((atomic_read(&journal->j_wcount) > 0 || in let_transaction_grow()
3003 atomic_read(&journal->j_jlock)) && in let_transaction_grow()
3004 journal->j_trans_id == trans_id) { in let_transaction_grow()
3007 if (journal->j_trans_id != trans_id) in let_transaction_grow()
3009 if (bcount == journal->j_bcount) in let_transaction_grow()
3011 bcount = journal->j_bcount; in let_transaction_grow()
3028 struct reiserfs_journal *journal = SB_JOURNAL(sb); in do_journal_begin_r() local
3035 BUG_ON(nblocks > journal->j_trans_max); in do_journal_begin_r()
3037 PROC_INFO_INC(sb, journal.journal_being); in do_journal_begin_r()
3044 if (join != JBEGIN_ABORT && reiserfs_is_journal_aborted(journal)) { in do_journal_begin_r()
3046 retval = journal->j_errno; in do_journal_begin_r()
3049 journal->j_bcount++; in do_journal_begin_r()
3051 if (test_bit(J_WRITERS_BLOCKED, &journal->j_state)) { in do_journal_begin_r()
3056 PROC_INFO_INC(sb, journal.journal_relock_writers); in do_journal_begin_r()
3068 if ((!join && journal->j_must_wait > 0) || in do_journal_begin_r()
3070 && (journal->j_len_alloc + nblocks + 2) >= journal->j_max_batch) in do_journal_begin_r()
3071 || (!join && atomic_read(&journal->j_wcount) > 0 in do_journal_begin_r()
3072 && journal->j_trans_start_time > 0 in do_journal_begin_r()
3073 && (now - journal->j_trans_start_time) > in do_journal_begin_r()
3074 journal->j_max_trans_age) || (!join in do_journal_begin_r()
3075 && atomic_read(&journal->j_jlock)) in do_journal_begin_r()
3076 || (!join && journal->j_cnode_free < (journal->j_trans_max * 3))) { in do_journal_begin_r()
3078 old_trans_id = journal->j_trans_id; in do_journal_begin_r()
3082 if (!join && (journal->j_len_alloc + nblocks + 2) >= in do_journal_begin_r()
3083 journal->j_max_batch && in do_journal_begin_r()
3084 ((journal->j_len + nblocks + 2) * 100) < in do_journal_begin_r()
3085 (journal->j_len_alloc * 75)) { in do_journal_begin_r()
3086 if (atomic_read(&journal->j_wcount) > 10) { in do_journal_begin_r()
3096 if (atomic_read(&journal->j_jlock)) { in do_journal_begin_r()
3097 while (journal->j_trans_id == old_trans_id && in do_journal_begin_r()
3098 atomic_read(&journal->j_jlock)) { in do_journal_begin_r()
3108 if (old_trans_id != journal->j_trans_id) { in do_journal_begin_r()
3117 PROC_INFO_INC(sb, journal.journal_relock_wcount); in do_journal_begin_r()
3121 if (journal->j_trans_start_time == 0) { in do_journal_begin_r()
3122 journal->j_trans_start_time = ktime_get_seconds(); in do_journal_begin_r()
3124 atomic_inc(&journal->j_wcount); in do_journal_begin_r()
3125 journal->j_len_alloc += nblocks; in do_journal_begin_r()
3128 th->t_trans_id = journal->j_trans_id; in do_journal_begin_r()
3280 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_mark_dirty() local
3286 PROC_INFO_INC(sb, journal.mark_dirty); in journal_mark_dirty()
3287 if (th->t_trans_id != journal->j_trans_id) { in journal_mark_dirty()
3290 th->t_trans_id, journal->j_trans_id); in journal_mark_dirty()
3297 PROC_INFO_INC(sb, journal.mark_dirty_already); in journal_mark_dirty()
3317 if (atomic_read(&journal->j_wcount) <= 0) { in journal_mark_dirty()
3320 atomic_read(&journal->j_wcount)); in journal_mark_dirty()
3328 if (journal->j_len >= journal->j_trans_max) { in journal_mark_dirty()
3331 journal->j_len); in journal_mark_dirty()
3336 PROC_INFO_INC(sb, journal.mark_dirty_notjournal); in journal_mark_dirty()
3340 if (journal->j_len > journal->j_len_alloc) { in journal_mark_dirty()
3341 journal->j_len_alloc = journal->j_len + JOURNAL_PER_BALANCE_CNT; in journal_mark_dirty()
3355 journal->j_len_alloc += JOURNAL_PER_BALANCE_CNT; in journal_mark_dirty()
3358 journal->j_len++; in journal_mark_dirty()
3364 insert_journal_hash(journal->j_hash_table, cn); in journal_mark_dirty()
3370 cn->prev = journal->j_last; in journal_mark_dirty()
3372 if (journal->j_last) { in journal_mark_dirty()
3373 journal->j_last->next = cn; in journal_mark_dirty()
3374 journal->j_last = cn; in journal_mark_dirty()
3376 journal->j_first = cn; in journal_mark_dirty()
3377 journal->j_last = cn; in journal_mark_dirty()
3429 struct reiserfs_journal *journal = SB_JOURNAL(sb); in remove_from_transaction() local
3432 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in remove_from_transaction()
3443 if (cn == journal->j_first) { in remove_from_transaction()
3444 journal->j_first = cn->next; in remove_from_transaction()
3446 if (cn == journal->j_last) { in remove_from_transaction()
3447 journal->j_last = cn->prev; in remove_from_transaction()
3450 remove_journal_hash(sb, journal->j_hash_table, NULL, in remove_from_transaction()
3465 journal->j_len--; in remove_from_transaction()
3466 journal->j_len_alloc--; in remove_from_transaction()
3524 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_end_sync() local
3529 if (journal->j_len == 0) { in journal_end_sync()
3540 struct reiserfs_journal *journal = in flush_async_commits() local
3542 struct super_block *sb = journal->j_work_sb; in flush_async_commits()
3547 if (!list_empty(&journal->j_journal_list)) { in flush_async_commits()
3549 entry = journal->j_journal_list.prev; in flush_async_commits()
3564 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_flush_old_commits() local
3571 if (list_empty(&journal->j_journal_list)) in reiserfs_flush_old_commits()
3578 if (atomic_read(&journal->j_wcount) <= 0 && in reiserfs_flush_old_commits()
3579 journal->j_trans_start_time > 0 && in reiserfs_flush_old_commits()
3580 journal->j_len > 0 && in reiserfs_flush_old_commits()
3581 (now - journal->j_trans_start_time) > journal->j_max_trans_age) { in reiserfs_flush_old_commits()
3622 struct reiserfs_journal *journal = SB_JOURNAL(sb); in check_journal_end() local
3626 if (th->t_trans_id != journal->j_trans_id) { in check_journal_end()
3629 th->t_trans_id, journal->j_trans_id); in check_journal_end()
3632 journal->j_len_alloc -= (th->t_blocks_allocated - th->t_blocks_logged); in check_journal_end()
3634 if (atomic_read(&journal->j_wcount) > 0) in check_journal_end()
3635 atomic_dec(&journal->j_wcount); in check_journal_end()
3643 BUG_ON(journal->j_len == 0); in check_journal_end()
3653 if (atomic_read(&journal->j_wcount) > 0) { in check_journal_end()
3657 jl = journal->j_current_jl; in check_journal_end()
3661 atomic_set(&journal->j_jlock, 1); in check_journal_end()
3663 journal->j_next_full_flush = 1; in check_journal_end()
3671 while (journal->j_trans_id == trans_id) { in check_journal_end()
3672 if (atomic_read(&journal->j_jlock)) { in check_journal_end()
3676 if (journal->j_trans_id == trans_id) { in check_journal_end()
3677 atomic_set(&journal->j_jlock, in check_journal_end()
3683 BUG_ON(journal->j_trans_id == trans_id); in check_journal_end()
3698 if ((now - journal->j_trans_start_time) > journal->j_max_trans_age) { in check_journal_end()
3700 journal->j_next_async_flush = 1; in check_journal_end()
3704 if (!(journal->j_must_wait > 0) && !(atomic_read(&journal->j_jlock)) in check_journal_end()
3705 && !flush && !commit_now && (journal->j_len < journal->j_max_batch) in check_journal_end()
3706 && journal->j_len_alloc < journal->j_max_batch in check_journal_end()
3707 && journal->j_cnode_free > (journal->j_trans_max * 3)) { in check_journal_end()
3708 journal->j_bcount++; in check_journal_end()
3713 if (journal->j_start > SB_ONDISK_JOURNAL_SIZE(sb)) { in check_journal_end()
3716 journal->j_start); in check_journal_end()
3741 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_mark_freed() local
3748 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in journal_mark_freed()
3764 jb = journal->j_current_jl->j_list_bitmap; in journal_mark_freed()
3783 cn = get_journal_hash_dev(sb, journal->j_list_hash_table, in journal_mark_freed()
3831 struct reiserfs_journal *journal = SB_JOURNAL(inode->i_sb); in reiserfs_update_inode_transaction() local
3832 REISERFS_I(inode)->i_jl = journal->j_current_jl; in reiserfs_update_inode_transaction()
3833 REISERFS_I(inode)->i_trans_id = journal->j_trans_id; in reiserfs_update_inode_transaction()
3845 struct reiserfs_journal *journal = SB_JOURNAL(sb); in __commit_trans_jl() local
3852 if (id == journal->j_trans_id) { in __commit_trans_jl()
3853 jl = journal->j_current_jl; in __commit_trans_jl()
3859 if (journal->j_trans_id != id) { in __commit_trans_jl()
3868 if (journal->j_trans_id != id) { in __commit_trans_jl()
3896 if (journal->j_errno) in __commit_trans_jl()
3897 ret = journal->j_errno; in __commit_trans_jl()
3925 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_restore_prepared_buffer() local
3926 PROC_INFO_INC(sb, journal.restore_prepared); in reiserfs_restore_prepared_buffer()
3935 journal->j_list_hash_table, in reiserfs_restore_prepared_buffer()
3956 PROC_INFO_INC(sb, journal.prepare); in reiserfs_prepare_for_journal()
3985 struct reiserfs_journal *journal = SB_JOURNAL(sb); in do_journal_end() local
4019 if (journal->j_len == 0) { in do_journal_end()
4026 if (journal->j_next_full_flush) { in do_journal_end()
4030 if (journal->j_next_async_flush) { in do_journal_end()
4048 if (journal->j_next_full_flush) { in do_journal_end()
4056 if (journal->j_must_wait > 0) { in do_journal_end()
4078 journal->j_start); in do_journal_end()
4083 set_desc_trans_id(desc, journal->j_trans_id); in do_journal_end()
4090 ((journal->j_start + journal->j_len + in do_journal_end()
4094 set_commit_trans_id(commit, journal->j_trans_id); in do_journal_end()
4098 jl = journal->j_current_jl; in do_journal_end()
4112 jl->j_trans_id = journal->j_trans_id; in do_journal_end()
4113 jl->j_timestamp = journal->j_trans_start_time; in do_journal_end()
4115 jl->j_start = journal->j_start; in do_journal_end()
4116 jl->j_len = journal->j_len; in do_journal_end()
4117 atomic_set(&jl->j_nonzerolen, journal->j_len); in do_journal_end()
4118 atomic_set(&jl->j_commit_left, journal->j_len + 2); in do_journal_end()
4127 for (i = 0, cn = journal->j_first; cn; cn = cn->next, i++) { in do_journal_end()
4159 insert_journal_hash(journal->j_list_hash_table, jl_cn); in do_journal_end()
4171 set_desc_trans_len(desc, journal->j_len); in do_journal_end()
4172 set_desc_mount_id(desc, journal->j_mount_id); in do_journal_end()
4173 set_desc_trans_id(desc, journal->j_trans_id); in do_journal_end()
4174 set_commit_trans_len(commit, journal->j_len); in do_journal_end()
4180 BUG_ON(journal->j_len == 0); in do_journal_end()
4193 cur_write_start = journal->j_start; in do_journal_end()
4194 cn = journal->j_first; in do_journal_end()
4242 journal->j_current_jl = alloc_journal_list(sb); in do_journal_end()
4245 list_add_tail(&jl->j_list, &journal->j_journal_list); in do_journal_end()
4246 list_add_tail(&jl->j_working_list, &journal->j_working_list); in do_journal_end()
4247 journal->j_num_work_lists++; in do_journal_end()
4250 old_start = journal->j_start; in do_journal_end()
4251 journal->j_start = in do_journal_end()
4252 (journal->j_start + journal->j_len + in do_journal_end()
4254 atomic_set(&journal->j_wcount, 0); in do_journal_end()
4255 journal->j_bcount = 0; in do_journal_end()
4256 journal->j_last = NULL; in do_journal_end()
4257 journal->j_first = NULL; in do_journal_end()
4258 journal->j_len = 0; in do_journal_end()
4259 journal->j_trans_start_time = 0; in do_journal_end()
4261 if (++journal->j_trans_id == 0) in do_journal_end()
4262 journal->j_trans_id = 10; in do_journal_end()
4263 journal->j_current_jl->j_trans_id = journal->j_trans_id; in do_journal_end()
4264 journal->j_must_wait = 0; in do_journal_end()
4265 journal->j_len_alloc = 0; in do_journal_end()
4266 journal->j_next_full_flush = 0; in do_journal_end()
4267 journal->j_next_async_flush = 0; in do_journal_end()
4285 write_ordered_buffers(&journal->j_dirty_buffers_lock, in do_journal_end()
4286 journal, jl, &jl->j_tail_bh_list); in do_journal_end()
4310 &journal->j_work, HZ / 10); in do_journal_end()
4319 list_for_each_safe(entry, safe, &journal->j_journal_list) { in do_journal_end()
4321 if (journal->j_start <= temp_jl->j_start) { in do_journal_end()
4322 if ((journal->j_start + journal->j_trans_max + 1) >= in do_journal_end()
4326 } else if ((journal->j_start + in do_journal_end()
4327 journal->j_trans_max + 1) < in do_journal_end()
4337 } else if ((journal->j_start + in do_journal_end()
4338 journal->j_trans_max + 1) > in do_journal_end()
4340 if (((journal->j_start + journal->j_trans_max + 1) % in do_journal_end()
4357 journal->j_current_jl->j_list_bitmap = in do_journal_end()
4358 get_list_bitmap(sb, journal->j_current_jl); in do_journal_end()
4360 if (!(journal->j_current_jl->j_list_bitmap)) { in do_journal_end()
4365 atomic_set(&journal->j_jlock, 0); in do_journal_end()
4368 clear_bit(J_WRITERS_QUEUED, &journal->j_state); in do_journal_end()
4369 wake_up(&journal->j_join_wait); in do_journal_end()
4386 return journal->j_errno; in do_journal_end()
4392 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_abort_journal() local
4393 if (test_bit(J_ABORTED, &journal->j_state)) in reiserfs_abort_journal()
4396 if (!journal->j_errno) in reiserfs_abort_journal()
4397 journal->j_errno = errno; in reiserfs_abort_journal()
4400 set_bit(J_ABORTED, &journal->j_state); in reiserfs_abort_journal()