Lines Matching refs:journal
95 struct reiserfs_journal *journal);
116 struct reiserfs_journal *journal = SB_JOURNAL(sb); in init_journal_hash() local
117 memset(journal->j_hash_table, 0, in init_journal_hash()
158 struct reiserfs_journal *journal = SB_JOURNAL(sb); in get_bitmap_node() local
160 struct list_head *entry = journal->j_bitmap_nodes.next; in get_bitmap_node()
162 journal->j_used_bitmap_nodes++; in get_bitmap_node()
165 if (entry != &journal->j_bitmap_nodes) { in get_bitmap_node()
169 journal->j_free_bitmap_nodes--; in get_bitmap_node()
182 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_bitmap_node() local
183 journal->j_used_bitmap_nodes--; in free_bitmap_node()
184 if (journal->j_free_bitmap_nodes > REISERFS_MAX_BITMAP_NODES) { in free_bitmap_node()
188 list_add(&bn->list, &journal->j_bitmap_nodes); in free_bitmap_node()
189 journal->j_free_bitmap_nodes++; in free_bitmap_node()
196 struct reiserfs_journal *journal = SB_JOURNAL(sb); in allocate_bitmap_nodes() local
201 list_add(&bn->list, &journal->j_bitmap_nodes); in allocate_bitmap_nodes()
202 journal->j_free_bitmap_nodes++; in allocate_bitmap_nodes()
259 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_bitmap_nodes() local
260 struct list_head *next = journal->j_bitmap_nodes.next; in free_bitmap_nodes()
263 while (next != &journal->j_bitmap_nodes) { in free_bitmap_nodes()
268 next = journal->j_bitmap_nodes.next; in free_bitmap_nodes()
269 journal->j_free_bitmap_nodes--; in free_bitmap_nodes()
315 struct reiserfs_journal *journal = SB_JOURNAL(sb); in get_list_bitmap() local
319 i = journal->j_list_bitmap_index; in get_list_bitmap()
320 journal->j_list_bitmap_index = (i + 1) % JOURNAL_NUM_BITMAPS; in get_list_bitmap()
321 jb = journal->j_list_bitmap + i; in get_list_bitmap()
322 if (journal->j_list_bitmap[i].journal_list) { in get_list_bitmap()
324 journal->j_list_bitmap[i]. in get_list_bitmap()
326 if (!journal->j_list_bitmap[i].journal_list) { in get_list_bitmap()
370 struct reiserfs_journal *journal = SB_JOURNAL(sb); in get_cnode() local
374 if (journal->j_cnode_free <= 0) { in get_cnode()
377 journal->j_cnode_used++; in get_cnode()
378 journal->j_cnode_free--; in get_cnode()
379 cn = journal->j_cnode_free_list; in get_cnode()
386 journal->j_cnode_free_list = cn->next; in get_cnode()
397 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_cnode() local
401 journal->j_cnode_used--; in free_cnode()
402 journal->j_cnode_free++; in free_cnode()
404 cn->next = journal->j_cnode_free_list; in free_cnode()
405 if (journal->j_cnode_free_list) { in free_cnode()
406 journal->j_cnode_free_list->prev = cn; in free_cnode()
409 journal->j_cnode_free_list = cn; in free_cnode()
463 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_in_journal() local
471 PROC_INFO_INC(sb, journal.in_journal); in reiserfs_in_journal()
480 PROC_INFO_INC(sb, journal.in_journal_bitmap); in reiserfs_in_journal()
481 jb = journal->j_list_bitmap + i; in reiserfs_in_journal()
501 get_journal_hash_dev(sb, journal->j_list_hash_table, bl))) { in reiserfs_in_journal()
506 if ((cn = get_journal_hash_dev(sb, journal->j_hash_table, bl))) { in reiserfs_in_journal()
511 PROC_INFO_INC(sb, journal.in_journal_reusable); in reiserfs_in_journal()
534 PROC_INFO_INC(sb, journal.lock_journal); in lock_journal()
581 struct reiserfs_journal *journal = SB_JOURNAL(s); in journal_list_still_alive() local
582 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()
1134 if (journal->j_last_commit_id != 0 && in flush_commit_list()
1135 (jl->j_trans_id - journal->j_last_commit_id) != 1) { in flush_commit_list()
1137 journal->j_last_commit_id, jl->j_trans_id); in flush_commit_list()
1139 journal->j_last_commit_id = jl->j_trans_id; in flush_commit_list()
1147 retval = retval ? retval : journal->j_errno; in flush_commit_list()
1203 struct reiserfs_journal *journal = SB_JOURNAL(sb); in remove_all_from_journal_list() local
1220 remove_journal_hash(sb, journal->j_list_hash_table, in remove_all_from_journal_list()
1243 struct reiserfs_journal *journal = SB_JOURNAL(sb); in _update_journal_header_block() local
1246 if (reiserfs_is_journal_aborted(journal)) in _update_journal_header_block()
1249 if (trans_id >= journal->j_last_flush_trans_id) { in _update_journal_header_block()
1250 if (buffer_locked((journal->j_header_bh))) { in _update_journal_header_block()
1252 __wait_on_buffer(journal->j_header_bh); in _update_journal_header_block()
1254 if (unlikely(!buffer_uptodate(journal->j_header_bh))) { in _update_journal_header_block()
1262 journal->j_last_flush_trans_id = trans_id; in _update_journal_header_block()
1263 journal->j_first_unflushed_offset = offset; in _update_journal_header_block()
1264 jh = (struct reiserfs_journal_header *)(journal->j_header_bh-> in _update_journal_header_block()
1268 jh->j_mount_id = cpu_to_le32(journal->j_mount_id); in _update_journal_header_block()
1270 set_buffer_dirty(journal->j_header_bh); in _update_journal_header_block()
1274 __sync_dirty_buffer(journal->j_header_bh, WRITE_FLUSH_FUA); in _update_journal_header_block()
1276 sync_dirty_buffer(journal->j_header_bh); in _update_journal_header_block()
1279 if (!buffer_uptodate(journal->j_header_bh)) { in _update_journal_header_block()
1304 struct reiserfs_journal *journal = SB_JOURNAL(sb); in flush_older_journal_lists() local
1312 entry = journal->j_journal_list.next; in flush_older_journal_lists()
1314 if (entry == &journal->j_journal_list) in flush_older_journal_lists()
1331 struct reiserfs_journal *journal = SB_JOURNAL(s); in del_from_work_list() local
1334 journal->j_num_work_lists--; in del_from_work_list()
1358 struct reiserfs_journal *journal = SB_JOURNAL(s); in flush_journal_list() local
1364 if (atomic_read(&journal->j_wcount) != 0) { in flush_journal_list()
1366 atomic_read(&journal->j_wcount)); in flush_journal_list()
1371 reiserfs_mutex_lock_safe(&journal->j_flush_mutex, s); in flush_journal_list()
1372 } else if (mutex_trylock(&journal->j_flush_mutex)) { in flush_journal_list()
1377 if (j_len_saved > journal->j_trans_max) { in flush_journal_list()
1396 && !reiserfs_is_journal_aborted(journal)) in flush_journal_list()
1409 if (atomic_read(&journal->j_wcount) != 0) { in flush_journal_list()
1581 err = journal->j_errno; in flush_journal_list()
1604 journal->j_num_lists--; in flush_journal_list()
1607 if (journal->j_last_flush_id != 0 && in flush_journal_list()
1608 (jl->j_trans_id - journal->j_last_flush_id) != 1) { in flush_journal_list()
1610 journal->j_last_flush_id, jl->j_trans_id); in flush_journal_list()
1612 journal->j_last_flush_id = jl->j_trans_id; in flush_journal_list()
1627 mutex_unlock(&journal->j_flush_mutex); in flush_journal_list()
1732 struct reiserfs_journal *journal = SB_JOURNAL(s); in kupdate_transactions() local
1735 reiserfs_mutex_lock_safe(&journal->j_flush_mutex, s); in kupdate_transactions()
1762 if (entry == &journal->j_journal_list) { in kupdate_transactions()
1776 mutex_unlock(&journal->j_flush_mutex); in kupdate_transactions()
1801 struct reiserfs_journal *journal = SB_JOURNAL(s); in flush_used_journal_lists() local
1820 if (tjl->j_list.next == &journal->j_journal_list) in flush_used_journal_lists()
1888 struct reiserfs_journal *journal = SB_JOURNAL(sb); in free_journal_ram() local
1889 kfree(journal->j_current_jl); in free_journal_ram()
1890 journal->j_num_lists--; in free_journal_ram()
1892 vfree(journal->j_cnode_free_orig); in free_journal_ram()
1893 free_list_bitmaps(sb, journal->j_list_bitmap); in free_journal_ram()
1895 if (journal->j_header_bh) { in free_journal_ram()
1896 brelse(journal->j_header_bh); in free_journal_ram()
1902 release_journal_dev(sb, journal); in free_journal_ram()
1903 vfree(journal); in free_journal_ram()
1915 struct reiserfs_journal *journal = SB_JOURNAL(sb); in do_journal_release() local
1941 if (!error && reiserfs_is_journal_aborted(journal)) { in do_journal_release()
2123 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_read_transaction() local
2304 journal->j_start = cur_dblock - SB_ONDISK_JOURNAL_1st_BLOCK(sb); in journal_read_transaction()
2305 journal->j_last_flush_trans_id = trans_id; in journal_read_transaction()
2306 journal->j_trans_id = trans_id + 1; in journal_read_transaction()
2308 if (journal->j_trans_id == 0) in journal_read_transaction()
2309 journal->j_trans_id = 10; in journal_read_transaction()
2376 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_read() local
2394 bdevname(journal->j_dev_bd, b)); in journal_read()
2402 journal->j_header_bh = journal_bread(sb, in journal_read()
2405 if (!journal->j_header_bh) { in journal_read()
2408 jh = (struct reiserfs_journal_header *)(journal->j_header_bh->b_data); in journal_read()
2455 reiserfs_breada(journal->j_dev_bd, cur_dblock, in journal_read()
2521 SB_ONDISK_JOURNAL_1st_BLOCK(sb) + journal->j_start; in journal_read()
2538 journal->j_start = le32_to_cpu(jh->j_first_unflushed_offset); in journal_read()
2539 journal->j_trans_id = in journal_read()
2542 if (journal->j_trans_id == 0) in journal_read()
2543 journal->j_trans_id = 10; in journal_read()
2544 journal->j_last_flush_trans_id = in journal_read()
2546 journal->j_mount_id = le32_to_cpu(jh->j_mount_id) + 1; in journal_read()
2548 journal->j_mount_id = newest_mount_id + 1; in journal_read()
2551 "newest_mount_id to %lu", journal->j_mount_id); in journal_read()
2552 journal->j_first_unflushed_offset = journal->j_start; in journal_read()
2561 _update_journal_header_block(sb, journal->j_start, in journal_read()
2562 journal->j_last_flush_trans_id)) { in journal_read()
2595 struct reiserfs_journal *journal) in release_journal_dev() argument
2597 if (journal->j_dev_bd != NULL) { in release_journal_dev()
2598 blkdev_put(journal->j_dev_bd, journal->j_dev_mode); in release_journal_dev()
2599 journal->j_dev_bd = NULL; in release_journal_dev()
2604 struct reiserfs_journal *journal, in journal_init_dev() argument
2614 journal->j_dev_bd = NULL; in journal_init_dev()
2625 journal->j_dev_bd = blkdev_get_by_dev(jdev, blkdev_mode, in journal_init_dev()
2626 journal); in journal_init_dev()
2627 journal->j_dev_mode = blkdev_mode; in journal_init_dev()
2628 if (IS_ERR(journal->j_dev_bd)) { in journal_init_dev()
2629 result = PTR_ERR(journal->j_dev_bd); in journal_init_dev()
2630 journal->j_dev_bd = NULL; in journal_init_dev()
2636 set_blocksize(journal->j_dev_bd, super->s_blocksize); in journal_init_dev()
2641 journal->j_dev_mode = blkdev_mode; in journal_init_dev()
2642 journal->j_dev_bd = blkdev_get_by_path(jdev_name, blkdev_mode, journal); in journal_init_dev()
2643 if (IS_ERR(journal->j_dev_bd)) { in journal_init_dev()
2644 result = PTR_ERR(journal->j_dev_bd); in journal_init_dev()
2645 journal->j_dev_bd = NULL; in journal_init_dev()
2652 set_blocksize(journal->j_dev_bd, super->s_blocksize); in journal_init_dev()
2655 bdevname(journal->j_dev_bd, b)); in journal_init_dev()
2674 struct reiserfs_journal *journal) in check_advise_trans_params() argument
2676 if (journal->j_trans_max) { in check_advise_trans_params()
2682 if (journal->j_trans_max > JOURNAL_TRANS_MAX_DEFAULT / ratio || in check_advise_trans_params()
2683 journal->j_trans_max < JOURNAL_TRANS_MIN_DEFAULT / ratio || in check_advise_trans_params()
2684 SB_ONDISK_JOURNAL_SIZE(sb) / journal->j_trans_max < in check_advise_trans_params()
2688 "FSCK?", journal->j_trans_max); in check_advise_trans_params()
2691 if (journal->j_max_batch != (journal->j_trans_max) * in check_advise_trans_params()
2695 "FSCK?", journal->j_max_batch); in check_advise_trans_params()
2710 journal->j_trans_max = JOURNAL_TRANS_MAX_DEFAULT; in check_advise_trans_params()
2711 journal->j_max_batch = JOURNAL_MAX_BATCH_DEFAULT; in check_advise_trans_params()
2712 journal->j_max_commit_age = JOURNAL_MAX_COMMIT_AGE; in check_advise_trans_params()
2725 struct reiserfs_journal *journal; in journal_init() local
2730 journal = SB_JOURNAL(sb) = vzalloc(sizeof(struct reiserfs_journal)); in journal_init()
2731 if (!journal) { in journal_init()
2736 INIT_LIST_HEAD(&journal->j_bitmap_nodes); in journal_init()
2737 INIT_LIST_HEAD(&journal->j_prealloc_list); in journal_init()
2738 INIT_LIST_HEAD(&journal->j_working_list); in journal_init()
2739 INIT_LIST_HEAD(&journal->j_journal_list); in journal_init()
2740 journal->j_persistent_trans = 0; in journal_init()
2741 if (reiserfs_allocate_list_bitmaps(sb, journal->j_list_bitmap, in journal_init()
2773 if (journal_init_dev(sb, journal, j_dev_name) != 0) { in journal_init()
2800 bdevname(journal->j_dev_bd, b), in journal_init()
2806 journal->j_trans_max = le32_to_cpu(jh->jh_journal.jp_journal_trans_max); in journal_init()
2807 journal->j_max_batch = le32_to_cpu(jh->jh_journal.jp_journal_max_batch); in journal_init()
2808 journal->j_max_commit_age = in journal_init()
2810 journal->j_max_trans_age = JOURNAL_MAX_TRANS_AGE; in journal_init()
2812 if (check_advise_trans_params(sb, journal) != 0) in journal_init()
2814 journal->j_default_max_commit_age = journal->j_max_commit_age; in journal_init()
2817 journal->j_max_commit_age = commit_max_age; in journal_init()
2818 journal->j_max_trans_age = commit_max_age; in journal_init()
2824 bdevname(journal->j_dev_bd, b), in journal_init()
2827 journal->j_trans_max, in journal_init()
2828 journal->j_max_batch, in journal_init()
2829 journal->j_max_commit_age, journal->j_max_trans_age); in journal_init()
2833 journal->j_list_bitmap_index = 0; in journal_init()
2836 memset(journal->j_list_hash_table, 0, in journal_init()
2839 INIT_LIST_HEAD(&journal->j_dirty_buffers); in journal_init()
2840 spin_lock_init(&journal->j_dirty_buffers_lock); in journal_init()
2842 journal->j_start = 0; in journal_init()
2843 journal->j_len = 0; in journal_init()
2844 journal->j_len_alloc = 0; in journal_init()
2845 atomic_set(&journal->j_wcount, 0); in journal_init()
2846 atomic_set(&journal->j_async_throttle, 0); in journal_init()
2847 journal->j_bcount = 0; in journal_init()
2848 journal->j_trans_start_time = 0; in journal_init()
2849 journal->j_last = NULL; in journal_init()
2850 journal->j_first = NULL; in journal_init()
2851 init_waitqueue_head(&journal->j_join_wait); in journal_init()
2852 mutex_init(&journal->j_mutex); in journal_init()
2853 mutex_init(&journal->j_flush_mutex); in journal_init()
2855 journal->j_trans_id = 10; in journal_init()
2856 journal->j_mount_id = 10; in journal_init()
2857 journal->j_state = 0; in journal_init()
2858 atomic_set(&journal->j_jlock, 0); in journal_init()
2859 journal->j_cnode_free_list = allocate_cnodes(num_cnodes); in journal_init()
2860 journal->j_cnode_free_orig = journal->j_cnode_free_list; in journal_init()
2861 journal->j_cnode_free = journal->j_cnode_free_list ? num_cnodes : 0; in journal_init()
2862 journal->j_cnode_used = 0; in journal_init()
2863 journal->j_must_wait = 0; in journal_init()
2865 if (journal->j_cnode_free == 0) { in journal_init()
2875 jl = journal->j_current_jl; in journal_init()
2898 INIT_DELAYED_WORK(&journal->j_work, flush_async_commits); in journal_init()
2899 journal->j_work_sb = sb; in journal_init()
2914 struct reiserfs_journal *journal = SB_JOURNAL(th->t_super); in journal_transaction_should_end() local
2920 if (journal->j_must_wait > 0 || in journal_transaction_should_end()
2921 (journal->j_len_alloc + new_alloc) >= journal->j_max_batch || in journal_transaction_should_end()
2922 atomic_read(&journal->j_jlock) || in journal_transaction_should_end()
2923 (now - journal->j_trans_start_time) > journal->j_max_trans_age || in journal_transaction_should_end()
2924 journal->j_cnode_free < (journal->j_trans_max * 3)) { in journal_transaction_should_end()
2928 journal->j_len_alloc += new_alloc; in journal_transaction_should_end()
2936 struct reiserfs_journal *journal = SB_JOURNAL(th->t_super); in reiserfs_block_writes() local
2938 journal->j_must_wait = 1; in reiserfs_block_writes()
2939 set_bit(J_WRITERS_BLOCKED, &journal->j_state); in reiserfs_block_writes()
2946 struct reiserfs_journal *journal = SB_JOURNAL(s); in reiserfs_allow_writes() local
2947 clear_bit(J_WRITERS_BLOCKED, &journal->j_state); in reiserfs_allow_writes()
2948 wake_up(&journal->j_join_wait); in reiserfs_allow_writes()
2954 struct reiserfs_journal *journal = SB_JOURNAL(s); in reiserfs_wait_on_write_block() local
2955 wait_event(journal->j_join_wait, in reiserfs_wait_on_write_block()
2956 !test_bit(J_WRITERS_BLOCKED, &journal->j_state)); in reiserfs_wait_on_write_block()
2962 struct reiserfs_journal *journal = SB_JOURNAL(s); in queue_log_writer() local
2963 set_bit(J_WRITERS_QUEUED, &journal->j_state); in queue_log_writer()
2970 add_wait_queue(&journal->j_join_wait, &wait); in queue_log_writer()
2972 if (test_bit(J_WRITERS_QUEUED, &journal->j_state)) { in queue_log_writer()
2978 remove_wait_queue(&journal->j_join_wait, &wait); in queue_log_writer()
2983 struct reiserfs_journal *journal = SB_JOURNAL(s); in wake_queued_writers() local
2984 if (test_and_clear_bit(J_WRITERS_QUEUED, &journal->j_state)) in wake_queued_writers()
2985 wake_up(&journal->j_join_wait); in wake_queued_writers()
2990 struct reiserfs_journal *journal = SB_JOURNAL(sb); in let_transaction_grow() local
2991 unsigned long bcount = journal->j_bcount; in let_transaction_grow()
2999 journal->j_current_jl->j_state |= LIST_COMMIT_PENDING; in let_transaction_grow()
3000 while ((atomic_read(&journal->j_wcount) > 0 || in let_transaction_grow()
3001 atomic_read(&journal->j_jlock)) && in let_transaction_grow()
3002 journal->j_trans_id == trans_id) { in let_transaction_grow()
3005 if (journal->j_trans_id != trans_id) in let_transaction_grow()
3007 if (bcount == journal->j_bcount) in let_transaction_grow()
3009 bcount = journal->j_bcount; in let_transaction_grow()
3026 struct reiserfs_journal *journal = SB_JOURNAL(sb); in do_journal_begin_r() local
3033 BUG_ON(nblocks > journal->j_trans_max); in do_journal_begin_r()
3035 PROC_INFO_INC(sb, journal.journal_being); in do_journal_begin_r()
3042 if (join != JBEGIN_ABORT && reiserfs_is_journal_aborted(journal)) { in do_journal_begin_r()
3044 retval = journal->j_errno; in do_journal_begin_r()
3047 journal->j_bcount++; in do_journal_begin_r()
3049 if (test_bit(J_WRITERS_BLOCKED, &journal->j_state)) { in do_journal_begin_r()
3054 PROC_INFO_INC(sb, journal.journal_relock_writers); in do_journal_begin_r()
3066 if ((!join && journal->j_must_wait > 0) || in do_journal_begin_r()
3068 && (journal->j_len_alloc + nblocks + 2) >= journal->j_max_batch) in do_journal_begin_r()
3069 || (!join && atomic_read(&journal->j_wcount) > 0 in do_journal_begin_r()
3070 && journal->j_trans_start_time > 0 in do_journal_begin_r()
3071 && (now - journal->j_trans_start_time) > in do_journal_begin_r()
3072 journal->j_max_trans_age) || (!join in do_journal_begin_r()
3073 && atomic_read(&journal->j_jlock)) in do_journal_begin_r()
3074 || (!join && journal->j_cnode_free < (journal->j_trans_max * 3))) { in do_journal_begin_r()
3076 old_trans_id = journal->j_trans_id; in do_journal_begin_r()
3080 if (!join && (journal->j_len_alloc + nblocks + 2) >= in do_journal_begin_r()
3081 journal->j_max_batch && in do_journal_begin_r()
3082 ((journal->j_len + nblocks + 2) * 100) < in do_journal_begin_r()
3083 (journal->j_len_alloc * 75)) { in do_journal_begin_r()
3084 if (atomic_read(&journal->j_wcount) > 10) { in do_journal_begin_r()
3094 if (atomic_read(&journal->j_jlock)) { in do_journal_begin_r()
3095 while (journal->j_trans_id == old_trans_id && in do_journal_begin_r()
3096 atomic_read(&journal->j_jlock)) { in do_journal_begin_r()
3106 if (old_trans_id != journal->j_trans_id) { in do_journal_begin_r()
3115 PROC_INFO_INC(sb, journal.journal_relock_wcount); in do_journal_begin_r()
3119 if (journal->j_trans_start_time == 0) { in do_journal_begin_r()
3120 journal->j_trans_start_time = get_seconds(); in do_journal_begin_r()
3122 atomic_inc(&journal->j_wcount); in do_journal_begin_r()
3123 journal->j_len_alloc += nblocks; in do_journal_begin_r()
3126 th->t_trans_id = journal->j_trans_id; in do_journal_begin_r()
3278 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_mark_dirty() local
3284 PROC_INFO_INC(sb, journal.mark_dirty); in journal_mark_dirty()
3285 if (th->t_trans_id != journal->j_trans_id) { in journal_mark_dirty()
3288 th->t_trans_id, journal->j_trans_id); in journal_mark_dirty()
3295 PROC_INFO_INC(sb, journal.mark_dirty_already); in journal_mark_dirty()
3315 if (atomic_read(&journal->j_wcount) <= 0) { in journal_mark_dirty()
3318 atomic_read(&journal->j_wcount)); in journal_mark_dirty()
3326 if (journal->j_len >= journal->j_trans_max) { in journal_mark_dirty()
3329 journal->j_len); in journal_mark_dirty()
3334 PROC_INFO_INC(sb, journal.mark_dirty_notjournal); in journal_mark_dirty()
3338 if (journal->j_len > journal->j_len_alloc) { in journal_mark_dirty()
3339 journal->j_len_alloc = journal->j_len + JOURNAL_PER_BALANCE_CNT; in journal_mark_dirty()
3353 journal->j_len_alloc += JOURNAL_PER_BALANCE_CNT; in journal_mark_dirty()
3356 journal->j_len++; in journal_mark_dirty()
3362 insert_journal_hash(journal->j_hash_table, cn); in journal_mark_dirty()
3368 cn->prev = journal->j_last; in journal_mark_dirty()
3370 if (journal->j_last) { in journal_mark_dirty()
3371 journal->j_last->next = cn; in journal_mark_dirty()
3372 journal->j_last = cn; in journal_mark_dirty()
3374 journal->j_first = cn; in journal_mark_dirty()
3375 journal->j_last = cn; in journal_mark_dirty()
3427 struct reiserfs_journal *journal = SB_JOURNAL(sb); in remove_from_transaction() local
3430 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in remove_from_transaction()
3441 if (cn == journal->j_first) { in remove_from_transaction()
3442 journal->j_first = cn->next; in remove_from_transaction()
3444 if (cn == journal->j_last) { in remove_from_transaction()
3445 journal->j_last = cn->prev; in remove_from_transaction()
3448 remove_journal_hash(sb, journal->j_hash_table, NULL, in remove_from_transaction()
3463 journal->j_len--; in remove_from_transaction()
3464 journal->j_len_alloc--; in remove_from_transaction()
3522 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_end_sync() local
3527 if (journal->j_len == 0) { in journal_end_sync()
3538 struct reiserfs_journal *journal = in flush_async_commits() local
3540 struct super_block *sb = journal->j_work_sb; in flush_async_commits()
3545 if (!list_empty(&journal->j_journal_list)) { in flush_async_commits()
3547 entry = journal->j_journal_list.prev; in flush_async_commits()
3562 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_flush_old_commits() local
3569 if (list_empty(&journal->j_journal_list)) in reiserfs_flush_old_commits()
3576 if (atomic_read(&journal->j_wcount) <= 0 && in reiserfs_flush_old_commits()
3577 journal->j_trans_start_time > 0 && in reiserfs_flush_old_commits()
3578 journal->j_len > 0 && in reiserfs_flush_old_commits()
3579 (now - journal->j_trans_start_time) > journal->j_max_trans_age) { in reiserfs_flush_old_commits()
3620 struct reiserfs_journal *journal = SB_JOURNAL(sb); in check_journal_end() local
3624 if (th->t_trans_id != journal->j_trans_id) { in check_journal_end()
3627 th->t_trans_id, journal->j_trans_id); in check_journal_end()
3630 journal->j_len_alloc -= (th->t_blocks_allocated - th->t_blocks_logged); in check_journal_end()
3632 if (atomic_read(&journal->j_wcount) > 0) in check_journal_end()
3633 atomic_dec(&journal->j_wcount); in check_journal_end()
3641 BUG_ON(journal->j_len == 0); in check_journal_end()
3651 if (atomic_read(&journal->j_wcount) > 0) { in check_journal_end()
3655 jl = journal->j_current_jl; in check_journal_end()
3659 atomic_set(&journal->j_jlock, 1); in check_journal_end()
3661 journal->j_next_full_flush = 1; in check_journal_end()
3669 while (journal->j_trans_id == trans_id) { in check_journal_end()
3670 if (atomic_read(&journal->j_jlock)) { in check_journal_end()
3674 if (journal->j_trans_id == trans_id) { in check_journal_end()
3675 atomic_set(&journal->j_jlock, in check_journal_end()
3681 BUG_ON(journal->j_trans_id == trans_id); in check_journal_end()
3696 if ((now - journal->j_trans_start_time) > journal->j_max_trans_age) { in check_journal_end()
3698 journal->j_next_async_flush = 1; in check_journal_end()
3702 if (!(journal->j_must_wait > 0) && !(atomic_read(&journal->j_jlock)) in check_journal_end()
3703 && !flush && !commit_now && (journal->j_len < journal->j_max_batch) in check_journal_end()
3704 && journal->j_len_alloc < journal->j_max_batch in check_journal_end()
3705 && journal->j_cnode_free > (journal->j_trans_max * 3)) { in check_journal_end()
3706 journal->j_bcount++; in check_journal_end()
3711 if (journal->j_start > SB_ONDISK_JOURNAL_SIZE(sb)) { in check_journal_end()
3714 journal->j_start); in check_journal_end()
3739 struct reiserfs_journal *journal = SB_JOURNAL(sb); in journal_mark_freed() local
3746 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in journal_mark_freed()
3762 jb = journal->j_current_jl->j_list_bitmap; in journal_mark_freed()
3781 cn = get_journal_hash_dev(sb, journal->j_list_hash_table, in journal_mark_freed()
3829 struct reiserfs_journal *journal = SB_JOURNAL(inode->i_sb); in reiserfs_update_inode_transaction() local
3830 REISERFS_I(inode)->i_jl = journal->j_current_jl; in reiserfs_update_inode_transaction()
3831 REISERFS_I(inode)->i_trans_id = journal->j_trans_id; in reiserfs_update_inode_transaction()
3843 struct reiserfs_journal *journal = SB_JOURNAL(sb); in __commit_trans_jl() local
3850 if (id == journal->j_trans_id) { in __commit_trans_jl()
3851 jl = journal->j_current_jl; in __commit_trans_jl()
3857 if (journal->j_trans_id != id) { in __commit_trans_jl()
3866 if (journal->j_trans_id != id) { in __commit_trans_jl()
3894 if (journal->j_errno) in __commit_trans_jl()
3895 ret = journal->j_errno; in __commit_trans_jl()
3923 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_restore_prepared_buffer() local
3924 PROC_INFO_INC(sb, journal.restore_prepared); in reiserfs_restore_prepared_buffer()
3933 journal->j_list_hash_table, in reiserfs_restore_prepared_buffer()
3954 PROC_INFO_INC(sb, journal.prepare); in reiserfs_prepare_for_journal()
3983 struct reiserfs_journal *journal = SB_JOURNAL(sb); in do_journal_end() local
4017 if (journal->j_len == 0) { in do_journal_end()
4024 if (journal->j_next_full_flush) { in do_journal_end()
4028 if (journal->j_next_async_flush) { in do_journal_end()
4046 if (journal->j_next_full_flush) { in do_journal_end()
4054 if (journal->j_must_wait > 0) { in do_journal_end()
4076 journal->j_start); in do_journal_end()
4081 set_desc_trans_id(desc, journal->j_trans_id); in do_journal_end()
4088 ((journal->j_start + journal->j_len + in do_journal_end()
4092 set_commit_trans_id(commit, journal->j_trans_id); in do_journal_end()
4096 jl = journal->j_current_jl; in do_journal_end()
4110 jl->j_trans_id = journal->j_trans_id; in do_journal_end()
4111 jl->j_timestamp = journal->j_trans_start_time; in do_journal_end()
4113 jl->j_start = journal->j_start; in do_journal_end()
4114 jl->j_len = journal->j_len; in do_journal_end()
4115 atomic_set(&jl->j_nonzerolen, journal->j_len); in do_journal_end()
4116 atomic_set(&jl->j_commit_left, journal->j_len + 2); in do_journal_end()
4125 for (i = 0, cn = journal->j_first; cn; cn = cn->next, i++) { in do_journal_end()
4157 insert_journal_hash(journal->j_list_hash_table, jl_cn); in do_journal_end()
4169 set_desc_trans_len(desc, journal->j_len); in do_journal_end()
4170 set_desc_mount_id(desc, journal->j_mount_id); in do_journal_end()
4171 set_desc_trans_id(desc, journal->j_trans_id); in do_journal_end()
4172 set_commit_trans_len(commit, journal->j_len); in do_journal_end()
4178 BUG_ON(journal->j_len == 0); in do_journal_end()
4191 cur_write_start = journal->j_start; in do_journal_end()
4192 cn = journal->j_first; in do_journal_end()
4240 journal->j_current_jl = alloc_journal_list(sb); in do_journal_end()
4243 list_add_tail(&jl->j_list, &journal->j_journal_list); in do_journal_end()
4244 list_add_tail(&jl->j_working_list, &journal->j_working_list); in do_journal_end()
4245 journal->j_num_work_lists++; in do_journal_end()
4248 old_start = journal->j_start; in do_journal_end()
4249 journal->j_start = in do_journal_end()
4250 (journal->j_start + journal->j_len + in do_journal_end()
4252 atomic_set(&journal->j_wcount, 0); in do_journal_end()
4253 journal->j_bcount = 0; in do_journal_end()
4254 journal->j_last = NULL; in do_journal_end()
4255 journal->j_first = NULL; in do_journal_end()
4256 journal->j_len = 0; in do_journal_end()
4257 journal->j_trans_start_time = 0; in do_journal_end()
4259 if (++journal->j_trans_id == 0) in do_journal_end()
4260 journal->j_trans_id = 10; in do_journal_end()
4261 journal->j_current_jl->j_trans_id = journal->j_trans_id; in do_journal_end()
4262 journal->j_must_wait = 0; in do_journal_end()
4263 journal->j_len_alloc = 0; in do_journal_end()
4264 journal->j_next_full_flush = 0; in do_journal_end()
4265 journal->j_next_async_flush = 0; in do_journal_end()
4283 write_ordered_buffers(&journal->j_dirty_buffers_lock, in do_journal_end()
4284 journal, jl, &jl->j_tail_bh_list); in do_journal_end()
4308 &journal->j_work, HZ / 10); in do_journal_end()
4317 list_for_each_safe(entry, safe, &journal->j_journal_list) { in do_journal_end()
4319 if (journal->j_start <= temp_jl->j_start) { in do_journal_end()
4320 if ((journal->j_start + journal->j_trans_max + 1) >= in do_journal_end()
4324 } else if ((journal->j_start + in do_journal_end()
4325 journal->j_trans_max + 1) < in do_journal_end()
4335 } else if ((journal->j_start + in do_journal_end()
4336 journal->j_trans_max + 1) > in do_journal_end()
4338 if (((journal->j_start + journal->j_trans_max + 1) % in do_journal_end()
4355 journal->j_current_jl->j_list_bitmap = in do_journal_end()
4356 get_list_bitmap(sb, journal->j_current_jl); in do_journal_end()
4358 if (!(journal->j_current_jl->j_list_bitmap)) { in do_journal_end()
4363 atomic_set(&journal->j_jlock, 0); in do_journal_end()
4366 clear_bit(J_WRITERS_QUEUED, &journal->j_state); in do_journal_end()
4367 wake_up(&journal->j_join_wait); in do_journal_end()
4384 return journal->j_errno; in do_journal_end()
4390 struct reiserfs_journal *journal = SB_JOURNAL(sb); in reiserfs_abort_journal() local
4391 if (test_bit(J_ABORTED, &journal->j_state)) in reiserfs_abort_journal()
4394 if (!journal->j_errno) in reiserfs_abort_journal()
4395 journal->j_errno = errno; in reiserfs_abort_journal()
4398 set_bit(J_ABORTED, &journal->j_state); in reiserfs_abort_journal()