Lines Matching refs:th

92 static int journal_join(struct reiserfs_transaction_handle *th,
110 static int do_journal_begin_r(struct reiserfs_transaction_handle *th,
1910 static int do_journal_release(struct reiserfs_transaction_handle *th, in do_journal_release() argument
1923 BUG_ON(!th->t_trans_id); in do_journal_release()
1924 do_journal_end(th, FLUSH_ALL); in do_journal_release()
1976 int journal_release(struct reiserfs_transaction_handle *th, in journal_release() argument
1979 return do_journal_release(th, sb, 0); in journal_release()
1983 int journal_release_error(struct reiserfs_transaction_handle *th, in journal_release_error() argument
1986 return do_journal_release(th, sb, 1); in journal_release_error()
2911 int journal_transaction_should_end(struct reiserfs_transaction_handle *th, in journal_transaction_should_end() argument
2914 struct reiserfs_journal *journal = SB_JOURNAL(th->t_super); in journal_transaction_should_end()
2917 BUG_ON(!th->t_trans_id); in journal_transaction_should_end()
2918 if (th->t_refcount > 1) in journal_transaction_should_end()
2929 th->t_blocks_allocated += new_alloc ; in journal_transaction_should_end()
2934 void reiserfs_block_writes(struct reiserfs_transaction_handle *th) in reiserfs_block_writes() argument
2936 struct reiserfs_journal *journal = SB_JOURNAL(th->t_super); in reiserfs_block_writes()
2937 BUG_ON(!th->t_trans_id); in reiserfs_block_writes()
3020 static int do_journal_begin_r(struct reiserfs_transaction_handle *th, in do_journal_begin_r() argument
3037 th->t_refcount = 1; in do_journal_begin_r()
3038 th->t_super = sb; in do_journal_begin_r()
3124 th->t_blocks_logged = 0; in do_journal_begin_r()
3125 th->t_blocks_allocated = nblocks; in do_journal_begin_r()
3126 th->t_trans_id = journal->j_trans_id; in do_journal_begin_r()
3128 INIT_LIST_HEAD(&th->t_list); in do_journal_begin_r()
3132 memset(th, 0, sizeof(*th)); in do_journal_begin_r()
3138 th->t_super = sb; in do_journal_begin_r()
3148 struct reiserfs_transaction_handle *th; in reiserfs_persistent_transaction() local
3155 th = current->journal_info; in reiserfs_persistent_transaction()
3156 th->t_refcount++; in reiserfs_persistent_transaction()
3157 BUG_ON(th->t_refcount < 2); in reiserfs_persistent_transaction()
3159 return th; in reiserfs_persistent_transaction()
3161 th = kmalloc(sizeof(struct reiserfs_transaction_handle), GFP_NOFS); in reiserfs_persistent_transaction()
3162 if (!th) in reiserfs_persistent_transaction()
3164 ret = journal_begin(th, s, nblocks); in reiserfs_persistent_transaction()
3166 kfree(th); in reiserfs_persistent_transaction()
3171 return th; in reiserfs_persistent_transaction()
3174 int reiserfs_end_persistent_transaction(struct reiserfs_transaction_handle *th) in reiserfs_end_persistent_transaction() argument
3176 struct super_block *s = th->t_super; in reiserfs_end_persistent_transaction()
3178 if (th->t_trans_id) in reiserfs_end_persistent_transaction()
3179 ret = journal_end(th); in reiserfs_end_persistent_transaction()
3182 if (th->t_refcount == 0) { in reiserfs_end_persistent_transaction()
3184 kfree(th); in reiserfs_end_persistent_transaction()
3189 static int journal_join(struct reiserfs_transaction_handle *th, in journal_join() argument
3198 th->t_handle_save = cur_th; in journal_join()
3200 return do_journal_begin_r(th, sb, 1, JBEGIN_JOIN); in journal_join()
3203 int journal_join_abort(struct reiserfs_transaction_handle *th, in journal_join_abort() argument
3212 th->t_handle_save = cur_th; in journal_join_abort()
3214 return do_journal_begin_r(th, sb, 1, JBEGIN_ABORT); in journal_join_abort()
3217 int journal_begin(struct reiserfs_transaction_handle *th, in journal_begin() argument
3223 th->t_handle_save = NULL; in journal_begin()
3229 memcpy(th, cur_th, sizeof(*th)); in journal_begin()
3230 if (th->t_refcount <= 1) in journal_begin()
3243 th->t_handle_save = current->journal_info; in journal_begin()
3244 current->journal_info = th; in journal_begin()
3247 current->journal_info = th; in journal_begin()
3249 ret = do_journal_begin_r(th, sb, nblocks, JBEGIN_REG); in journal_begin()
3250 BUG_ON(current->journal_info != th); in journal_begin()
3257 current->journal_info = th->t_handle_save; in journal_begin()
3259 BUG_ON(!th->t_refcount); in journal_begin()
3274 int journal_mark_dirty(struct reiserfs_transaction_handle *th, in journal_mark_dirty() argument
3277 struct super_block *sb = th->t_super; in journal_mark_dirty()
3282 BUG_ON(!th->t_trans_id); in journal_mark_dirty()
3285 if (th->t_trans_id != journal->j_trans_id) { in journal_mark_dirty()
3286 reiserfs_panic(th->t_super, "journal-1577", in journal_mark_dirty()
3288 th->t_trans_id, journal->j_trans_id); in journal_mark_dirty()
3327 reiserfs_panic(th->t_super, "journal-1413", in journal_mark_dirty()
3351 if (th->t_blocks_logged == th->t_blocks_allocated) { in journal_mark_dirty()
3352 th->t_blocks_allocated += JOURNAL_PER_BALANCE_CNT; in journal_mark_dirty()
3355 th->t_blocks_logged++; in journal_mark_dirty()
3381 int journal_end(struct reiserfs_transaction_handle *th) in journal_end() argument
3383 struct super_block *sb = th->t_super; in journal_end()
3384 if (!current->journal_info && th->t_refcount > 1) in journal_end()
3386 "th NULL, refcount %d", th->t_refcount); in journal_end()
3388 if (!th->t_trans_id) { in journal_end()
3393 th->t_refcount--; in journal_end()
3394 if (th->t_refcount > 0) { in journal_end()
3402 BUG_ON(cur_th->t_super != th->t_super); in journal_end()
3404 if (th != cur_th) { in journal_end()
3405 memcpy(current->journal_info, th, sizeof(*th)); in journal_end()
3406 th->t_trans_id = 0; in journal_end()
3410 return do_journal_end(th, 0); in journal_end()
3519 int journal_end_sync(struct reiserfs_transaction_handle *th) in journal_end_sync() argument
3521 struct super_block *sb = th->t_super; in journal_end_sync()
3524 BUG_ON(!th->t_trans_id); in journal_end_sync()
3526 BUG_ON(th->t_refcount > 1); in journal_end_sync()
3530 journal_mark_dirty(th, SB_BUFFER_WITH_SB(sb)); in journal_end_sync()
3532 return do_journal_end(th, COMMIT_NOW | WAIT); in journal_end_sync()
3561 struct reiserfs_transaction_handle th; in reiserfs_flush_old_commits() local
3580 if (!journal_join(&th, sb)) { in reiserfs_flush_old_commits()
3584 journal_mark_dirty(&th, SB_BUFFER_WITH_SB(sb)); in reiserfs_flush_old_commits()
3591 do_journal_end(&th, COMMIT_NOW | WAIT); in reiserfs_flush_old_commits()
3611 static int check_journal_end(struct reiserfs_transaction_handle *th, int flags) in check_journal_end() argument
3619 struct super_block *sb = th->t_super; in check_journal_end()
3622 BUG_ON(!th->t_trans_id); in check_journal_end()
3624 if (th->t_trans_id != journal->j_trans_id) { in check_journal_end()
3625 reiserfs_panic(th->t_super, "journal-1577", 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()
3736 int journal_mark_freed(struct reiserfs_transaction_handle *th, in journal_mark_freed() argument
3744 BUG_ON(!th->t_trans_id); in journal_mark_freed()
3841 struct reiserfs_transaction_handle th; in __commit_trans_jl() local
3861 ret = journal_begin(&th, sb, 1); in __commit_trans_jl()
3869 journal_mark_dirty(&th, SB_BUFFER_WITH_SB(sb)); in __commit_trans_jl()
3870 ret = journal_end(&th); in __commit_trans_jl()
3874 ret = journal_end_sync(&th); in __commit_trans_jl()
3980 static int do_journal_end(struct reiserfs_transaction_handle *th, int flags) in do_journal_end() argument
3982 struct super_block *sb = th->t_super; in do_journal_end()
4002 BUG_ON(th->t_refcount > 1); in do_journal_end()
4003 BUG_ON(!th->t_trans_id); in do_journal_end()
4004 BUG_ON(!th->t_super); in do_journal_end()
4010 if (th->t_trans_id == ~0U) in do_journal_end()
4015 current->journal_info = th->t_handle_save; in do_journal_end()
4020 journal_mark_dirty(th, SB_BUFFER_WITH_SB(sb)); in do_journal_end()
4038 if (!check_journal_end(th, flags)) { in do_journal_end()
4062 current->journal_info = th; in do_journal_end()
4063 th->t_refcount++; in do_journal_end()
4066 reiserfs_discard_all_prealloc(th); in do_journal_end()
4068 th->t_refcount--; in do_journal_end()
4069 current->journal_info = th->t_handle_save; in do_journal_end()
4376 memset(th, 0, sizeof(*th)); in do_journal_end()
4382 th->t_super = sb; in do_journal_end()