Lines Matching refs:cn
91 static int can_dirty(struct reiserfs_journal_cnode *cn);
369 struct reiserfs_journal_cnode *cn; in get_cnode() local
379 cn = journal->j_cnode_free_list; in get_cnode()
380 if (!cn) { in get_cnode()
381 return cn; in get_cnode()
383 if (cn->next) { in get_cnode()
384 cn->next->prev = NULL; in get_cnode()
386 journal->j_cnode_free_list = cn->next; in get_cnode()
387 memset(cn, 0, sizeof(struct reiserfs_journal_cnode)); in get_cnode()
388 return cn; in get_cnode()
395 struct reiserfs_journal_cnode *cn) in free_cnode() argument
404 cn->next = journal->j_cnode_free_list; in free_cnode()
406 journal->j_cnode_free_list->prev = cn; in free_cnode()
408 …cn->prev = NULL; /* not needed with the memset, but I might kill the memset, and forget to do this… in free_cnode()
409 journal->j_cnode_free_list = cn; in free_cnode()
430 struct reiserfs_journal_cnode *cn; in get_journal_hash_dev() local
431 cn = journal_hash(table, sb, bl); in get_journal_hash_dev()
432 while (cn) { in get_journal_hash_dev()
433 if (cn->blocknr == bl && cn->sb == sb) in get_journal_hash_dev()
434 return cn; in get_journal_hash_dev()
435 cn = cn->hnext; in get_journal_hash_dev()
464 struct reiserfs_journal_cnode *cn; in reiserfs_in_journal() local
500 && (cn = in reiserfs_in_journal()
506 if ((cn = get_journal_hash_dev(sb, journal->j_hash_table, bl))) { in reiserfs_in_journal()
518 struct reiserfs_journal_cnode *cn) in insert_journal_hash() argument
522 cn_orig = journal_hash(table, cn->sb, cn->blocknr); in insert_journal_hash()
523 cn->hnext = cn_orig; in insert_journal_hash()
524 cn->hprev = NULL; in insert_journal_hash()
526 cn_orig->hprev = cn; in insert_journal_hash()
528 journal_hash(table, cn->sb, cn->blocknr) = cn; in insert_journal_hash()
1173 *cn) in find_newer_jl_for_cn()
1175 struct super_block *sb = cn->sb; in find_newer_jl_for_cn()
1176 b_blocknr_t blocknr = cn->blocknr; in find_newer_jl_for_cn()
1178 cn = cn->hprev; in find_newer_jl_for_cn()
1179 while (cn) { in find_newer_jl_for_cn()
1180 if (cn->sb == sb && cn->blocknr == blocknr && cn->jlist) { in find_newer_jl_for_cn()
1181 return cn->jlist; in find_newer_jl_for_cn()
1183 cn = cn->hprev; in find_newer_jl_for_cn()
1204 struct reiserfs_journal_cnode *cn, *last; in remove_all_from_journal_list() local
1205 cn = jl->j_realblock; in remove_all_from_journal_list()
1211 while (cn) { in remove_all_from_journal_list()
1212 if (cn->blocknr != 0) { in remove_all_from_journal_list()
1216 cn->blocknr, cn->bh ? 1 : 0, in remove_all_from_journal_list()
1217 cn->state); in remove_all_from_journal_list()
1219 cn->state = 0; in remove_all_from_journal_list()
1221 jl, cn->blocknr, 1); in remove_all_from_journal_list()
1223 last = cn; in remove_all_from_journal_list()
1224 cn = cn->next; in remove_all_from_journal_list()
1352 struct reiserfs_journal_cnode *cn, *last; in flush_journal_list() local
1413 cn = jl->j_realblock; in flush_journal_list()
1414 while (cn) { in flush_journal_list()
1419 if (cn->blocknr == 0) { in flush_journal_list()
1430 pjl = find_newer_jl_for_cn(cn); in flush_journal_list()
1436 if (!pjl && cn->bh) { in flush_journal_list()
1437 saved_bh = cn->bh; in flush_journal_list()
1446 BUG_ON(!can_dirty(cn)); in flush_journal_list()
1449 } else if (can_dirty(cn)) { in flush_journal_list()
1495 set_bit(BLOCK_NEEDS_FLUSH, &cn->state); in flush_journal_list()
1497 BUG_ON(cn->blocknr != saved_bh->b_blocknr); in flush_journal_list()
1510 last = cn; in flush_journal_list()
1511 cn = cn->next; in flush_journal_list()
1525 cn = jl->j_realblock; in flush_journal_list()
1526 while (cn) { in flush_journal_list()
1527 if (test_bit(BLOCK_NEEDS_FLUSH, &cn->state)) { in flush_journal_list()
1528 if (!cn->bh) { in flush_journal_list()
1534 __wait_on_buffer(cn->bh); in flush_journal_list()
1537 if (!cn->bh) { in flush_journal_list()
1541 if (unlikely(!buffer_uptodate(cn->bh))) { in flush_journal_list()
1554 (cn->bh)); in flush_journal_list()
1557 put_bh(cn->bh); in flush_journal_list()
1559 release_buffer_page(cn->bh); in flush_journal_list()
1561 cn = cn->next; in flush_journal_list()
1635 struct reiserfs_journal_cnode *cn; in write_one_transaction() local
1644 cn = jl->j_realblock; in write_one_transaction()
1645 while (cn) { in write_one_transaction()
1650 if (cn->blocknr == 0) { in write_one_transaction()
1653 if (cn->bh && can_dirty(cn) && buffer_dirty(cn->bh)) { in write_one_transaction()
1660 tmp_bh = cn->bh; in write_one_transaction()
1663 if (cn->bh && can_dirty(cn) && buffer_dirty(tmp_bh)) { in write_one_transaction()
1676 cn = cn->next; in write_one_transaction()
1686 struct reiserfs_journal_cnode *cn; in dirty_one_transaction() local
1691 cn = jl->j_realblock; in dirty_one_transaction()
1692 while (cn) { in dirty_one_transaction()
1698 pjl = find_newer_jl_for_cn(cn); in dirty_one_transaction()
1699 if (!pjl && cn->blocknr && cn->bh in dirty_one_transaction()
1700 && buffer_journal_dirty(cn->bh)) { in dirty_one_transaction()
1701 BUG_ON(!can_dirty(cn)); in dirty_one_transaction()
1707 clear_buffer_journal_new(cn->bh); in dirty_one_transaction()
1708 if (buffer_journal_prepared(cn->bh)) { in dirty_one_transaction()
1709 set_buffer_journal_restore_dirty(cn->bh); in dirty_one_transaction()
1711 set_buffer_journal_test(cn->bh); in dirty_one_transaction()
1712 mark_buffer_dirty(cn->bh); in dirty_one_transaction()
1715 cn = cn->next; in dirty_one_transaction()
3279 struct reiserfs_journal_cnode *cn = NULL; in journal_mark_dirty() local
3345 if (!cn) { in journal_mark_dirty()
3346 cn = get_cnode(sb); in journal_mark_dirty()
3347 if (!cn) { in journal_mark_dirty()
3358 cn->bh = bh; in journal_mark_dirty()
3359 cn->blocknr = bh->b_blocknr; in journal_mark_dirty()
3360 cn->sb = sb; in journal_mark_dirty()
3361 cn->jlist = NULL; in journal_mark_dirty()
3362 insert_journal_hash(journal->j_hash_table, cn); in journal_mark_dirty()
3367 cn->next = NULL; in journal_mark_dirty()
3368 cn->prev = journal->j_last; in journal_mark_dirty()
3369 cn->bh = bh; 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()
3426 struct reiserfs_journal_cnode *cn; in remove_from_transaction() local
3430 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in remove_from_transaction()
3431 if (!cn || !cn->bh) { in remove_from_transaction()
3434 bh = cn->bh; in remove_from_transaction()
3435 if (cn->prev) { in remove_from_transaction()
3436 cn->prev->next = cn->next; in remove_from_transaction()
3438 if (cn->next) { in remove_from_transaction()
3439 cn->next->prev = cn->prev; 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()
3465 free_cnode(sb, cn); in remove_from_transaction()
3480 static int can_dirty(struct reiserfs_journal_cnode *cn) in can_dirty() argument
3482 struct super_block *sb = cn->sb; in can_dirty()
3483 b_blocknr_t blocknr = cn->blocknr; in can_dirty()
3484 struct reiserfs_journal_cnode *cur = cn->hprev; in can_dirty()
3503 cur = cn->hnext; in can_dirty()
3740 struct reiserfs_journal_cnode *cn = NULL; in journal_mark_freed() local
3746 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in journal_mark_freed()
3747 if (cn && cn->bh) { in journal_mark_freed()
3748 bh = cn->bh; in journal_mark_freed()
3781 cn = get_journal_hash_dev(sb, journal->j_list_hash_table, in journal_mark_freed()
3783 while (cn) { in journal_mark_freed()
3784 if (sb == cn->sb && blocknr == cn->blocknr) { in journal_mark_freed()
3785 set_bit(BLOCK_FREED, &cn->state); in journal_mark_freed()
3786 if (cn->bh) { in journal_mark_freed()
3793 clear_buffer_journal_dirty(cn-> in journal_mark_freed()
3795 clear_buffer_dirty(cn->bh); in journal_mark_freed()
3796 clear_buffer_journal_test(cn-> in journal_mark_freed()
3799 put_bh(cn->bh); in journal_mark_freed()
3801 (&cn->bh->b_count) < 0) { in journal_mark_freed()
3811 if (cn->jlist) { in journal_mark_freed()
3812 atomic_dec(&cn->jlist-> in journal_mark_freed()
3815 cn->bh = NULL; in journal_mark_freed()
3818 cn = cn->hnext; in journal_mark_freed()
3930 struct reiserfs_journal_cnode *cn; in reiserfs_restore_prepared_buffer() local
3932 cn = get_journal_hash_dev(sb, in reiserfs_restore_prepared_buffer()
3935 if (cn && can_dirty(cn)) { in reiserfs_restore_prepared_buffer()
3984 struct reiserfs_journal_cnode *cn, *next, *jl_cn; in do_journal_end() local
4125 for (i = 0, cn = journal->j_first; cn; cn = cn->next, i++) { in do_journal_end()
4126 if (buffer_journaled(cn->bh)) { in do_journal_end()
4146 (sb, cn->bh->b_blocknr)) { in do_journal_end()
4150 cn->bh->b_blocknr); in do_journal_end()
4152 jl_cn->blocknr = cn->bh->b_blocknr; in do_journal_end()
4155 jl_cn->bh = cn->bh; in do_journal_end()
4160 cpu_to_le32(cn->bh->b_blocknr); in do_journal_end()
4163 cpu_to_le32(cn->bh->b_blocknr); in do_journal_end()
4192 cn = journal->j_first; in do_journal_end()
4194 while (cn) { in do_journal_end()
4195 clear_buffer_journal_new(cn->bh); in do_journal_end()
4197 if (buffer_journaled(cn->bh)) { in do_journal_end()
4208 page = cn->bh->b_page; in do_journal_end()
4211 addr + offset_in_page(cn->bh->b_data), in do_journal_end()
4212 cn->bh->b_size); in do_journal_end()
4216 set_buffer_journal_dirty(cn->bh); in do_journal_end()
4217 clear_buffer_journaled(cn->bh); in do_journal_end()
4226 brelse(cn->bh); in do_journal_end()
4228 next = cn->next; in do_journal_end()
4229 free_cnode(sb, cn); in do_journal_end()
4230 cn = next; in do_journal_end()