• Home
  • Raw
  • Download

Lines Matching full:cn

92 static int can_dirty(struct reiserfs_journal_cnode *cn);
371 struct reiserfs_journal_cnode *cn; in get_cnode() local
381 cn = journal->j_cnode_free_list; in get_cnode()
382 if (!cn) { in get_cnode()
383 return cn; in get_cnode()
385 if (cn->next) { in get_cnode()
386 cn->next->prev = NULL; in get_cnode()
388 journal->j_cnode_free_list = cn->next; in get_cnode()
389 memset(cn, 0, sizeof(struct reiserfs_journal_cnode)); in get_cnode()
390 return cn; in get_cnode()
397 struct reiserfs_journal_cnode *cn) in free_cnode() argument
405 /* memset(cn, 0, sizeof(struct reiserfs_journal_cnode)) ; */ in free_cnode()
406 cn->next = journal->j_cnode_free_list; in free_cnode()
408 journal->j_cnode_free_list->prev = cn; in free_cnode()
410cn->prev = NULL; /* not needed with the memset, but I might kill the memset, and forget to do this… in free_cnode()
411 journal->j_cnode_free_list = cn; in free_cnode()
432 struct reiserfs_journal_cnode *cn; in get_journal_hash_dev() local
433 cn = journal_hash(table, sb, bl); in get_journal_hash_dev()
434 while (cn) { in get_journal_hash_dev()
435 if (cn->blocknr == bl && cn->sb == sb) in get_journal_hash_dev()
436 return cn; in get_journal_hash_dev()
437 cn = cn->hnext; in get_journal_hash_dev()
466 struct reiserfs_journal_cnode *cn; in reiserfs_in_journal() local
502 && (cn = in reiserfs_in_journal()
508 if ((cn = get_journal_hash_dev(sb, journal->j_hash_table, bl))) { in reiserfs_in_journal()
518 /* insert cn into table */
520 struct reiserfs_journal_cnode *cn) in insert_journal_hash() argument
524 cn_orig = journal_hash(table, cn->sb, cn->blocknr); in insert_journal_hash()
525 cn->hnext = cn_orig; in insert_journal_hash()
526 cn->hprev = NULL; in insert_journal_hash()
528 cn_orig->hprev = cn; in insert_journal_hash()
530 journal_hash(table, cn->sb, cn->blocknr) = cn; in insert_journal_hash()
1174 *cn) in find_newer_jl_for_cn()
1176 struct super_block *sb = cn->sb; in find_newer_jl_for_cn()
1177 b_blocknr_t blocknr = cn->blocknr; in find_newer_jl_for_cn()
1179 cn = cn->hprev; in find_newer_jl_for_cn()
1180 while (cn) { in find_newer_jl_for_cn()
1181 if (cn->sb == sb && cn->blocknr == blocknr && cn->jlist) { in find_newer_jl_for_cn()
1182 return cn->jlist; in find_newer_jl_for_cn()
1184 cn = cn->hprev; in find_newer_jl_for_cn()
1205 struct reiserfs_journal_cnode *cn, *last; in remove_all_from_journal_list() local
1206 cn = jl->j_realblock; in remove_all_from_journal_list()
1212 while (cn) { in remove_all_from_journal_list()
1213 if (cn->blocknr != 0) { in remove_all_from_journal_list()
1217 cn->blocknr, cn->bh ? 1 : 0, in remove_all_from_journal_list()
1218 cn->state); in remove_all_from_journal_list()
1220 cn->state = 0; in remove_all_from_journal_list()
1222 jl, cn->blocknr, 1); in remove_all_from_journal_list()
1224 last = cn; in remove_all_from_journal_list()
1225 cn = cn->next; in remove_all_from_journal_list()
1354 struct reiserfs_journal_cnode *cn, *last; in flush_journal_list() local
1415 cn = jl->j_realblock; in flush_journal_list()
1416 while (cn) { in flush_journal_list()
1421 if (cn->blocknr == 0) { in flush_journal_list()
1432 pjl = find_newer_jl_for_cn(cn); in flush_journal_list()
1438 if (!pjl && cn->bh) { in flush_journal_list()
1439 saved_bh = cn->bh; in flush_journal_list()
1448 BUG_ON(!can_dirty(cn)); in flush_journal_list()
1451 } else if (can_dirty(cn)) { in flush_journal_list()
1497 set_bit(BLOCK_NEEDS_FLUSH, &cn->state); in flush_journal_list()
1499 BUG_ON(cn->blocknr != saved_bh->b_blocknr); in flush_journal_list()
1512 last = cn; in flush_journal_list()
1513 cn = cn->next; in flush_journal_list()
1527 cn = jl->j_realblock; in flush_journal_list()
1528 while (cn) { in flush_journal_list()
1529 if (test_bit(BLOCK_NEEDS_FLUSH, &cn->state)) { in flush_journal_list()
1530 if (!cn->bh) { in flush_journal_list()
1532 "cn->bh is NULL"); in flush_journal_list()
1536 __wait_on_buffer(cn->bh); in flush_journal_list()
1539 if (!cn->bh) { in flush_journal_list()
1541 "cn->bh is NULL"); in flush_journal_list()
1543 if (unlikely(!buffer_uptodate(cn->bh))) { in flush_journal_list()
1556 (cn->bh)); in flush_journal_list()
1559 put_bh(cn->bh); in flush_journal_list()
1561 release_buffer_page(cn->bh); in flush_journal_list()
1563 cn = cn->next; in flush_journal_list()
1637 struct reiserfs_journal_cnode *cn; in write_one_transaction() local
1646 cn = jl->j_realblock; in write_one_transaction()
1647 while (cn) { in write_one_transaction()
1652 if (cn->blocknr == 0) { in write_one_transaction()
1655 if (cn->bh && can_dirty(cn) && buffer_dirty(cn->bh)) { in write_one_transaction()
1659 * to lock_buffer(cn->bh), so we have to inc the buffer in write_one_transaction()
1662 tmp_bh = cn->bh; in write_one_transaction()
1665 if (cn->bh && can_dirty(cn) && buffer_dirty(tmp_bh)) { in write_one_transaction()
1672 /* note, cn->bh might be null now */ in write_one_transaction()
1678 cn = cn->next; in write_one_transaction()
1688 struct reiserfs_journal_cnode *cn; in dirty_one_transaction() local
1693 cn = jl->j_realblock; in dirty_one_transaction()
1694 while (cn) { in dirty_one_transaction()
1700 pjl = find_newer_jl_for_cn(cn); in dirty_one_transaction()
1701 if (!pjl && cn->blocknr && cn->bh in dirty_one_transaction()
1702 && buffer_journal_dirty(cn->bh)) { in dirty_one_transaction()
1703 BUG_ON(!can_dirty(cn)); in dirty_one_transaction()
1709 clear_buffer_journal_new(cn->bh); in dirty_one_transaction()
1710 if (buffer_journal_prepared(cn->bh)) { in dirty_one_transaction()
1711 set_buffer_journal_restore_dirty(cn->bh); in dirty_one_transaction()
1713 set_buffer_journal_test(cn->bh); in dirty_one_transaction()
1714 mark_buffer_dirty(cn->bh); in dirty_one_transaction()
1717 cn = cn->next; in dirty_one_transaction()
3281 struct reiserfs_journal_cnode *cn = NULL; in journal_mark_dirty() local
3347 if (!cn) { in journal_mark_dirty()
3348 cn = get_cnode(sb); in journal_mark_dirty()
3349 if (!cn) { in journal_mark_dirty()
3360 cn->bh = bh; in journal_mark_dirty()
3361 cn->blocknr = bh->b_blocknr; in journal_mark_dirty()
3362 cn->sb = sb; in journal_mark_dirty()
3363 cn->jlist = NULL; in journal_mark_dirty()
3364 insert_journal_hash(journal->j_hash_table, cn); in journal_mark_dirty()
3369 cn->next = NULL; in journal_mark_dirty()
3370 cn->prev = journal->j_last; in journal_mark_dirty()
3371 cn->bh = bh; 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()
3428 struct reiserfs_journal_cnode *cn; in remove_from_transaction() local
3432 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in remove_from_transaction()
3433 if (!cn || !cn->bh) { in remove_from_transaction()
3436 bh = cn->bh; in remove_from_transaction()
3437 if (cn->prev) { in remove_from_transaction()
3438 cn->prev->next = cn->next; in remove_from_transaction()
3440 if (cn->next) { in remove_from_transaction()
3441 cn->next->prev = cn->prev; 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()
3467 free_cnode(sb, cn); in remove_from_transaction()
3482 static int can_dirty(struct reiserfs_journal_cnode *cn) in can_dirty() argument
3484 struct super_block *sb = cn->sb; in can_dirty()
3485 b_blocknr_t blocknr = cn->blocknr; in can_dirty()
3486 struct reiserfs_journal_cnode *cur = cn->hprev; in can_dirty()
3490 * first test hprev. These are all newer than cn, so any node here in can_dirty()
3502 * then test hnext. These are all older than cn. As long as they in can_dirty()
3503 * are committed to the log, it is safe to write cn to disk in can_dirty()
3505 cur = cn->hnext; in can_dirty()
3742 struct reiserfs_journal_cnode *cn = NULL; in journal_mark_freed() local
3748 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr); in journal_mark_freed()
3749 if (cn && cn->bh) { in journal_mark_freed()
3750 bh = cn->bh; in journal_mark_freed()
3783 cn = get_journal_hash_dev(sb, journal->j_list_hash_table, in journal_mark_freed()
3785 while (cn) { in journal_mark_freed()
3786 if (sb == cn->sb && blocknr == cn->blocknr) { in journal_mark_freed()
3787 set_bit(BLOCK_FREED, &cn->state); in journal_mark_freed()
3788 if (cn->bh) { in journal_mark_freed()
3795 clear_buffer_journal_dirty(cn-> in journal_mark_freed()
3797 clear_buffer_dirty(cn->bh); in journal_mark_freed()
3798 clear_buffer_journal_test(cn-> in journal_mark_freed()
3801 put_bh(cn->bh); in journal_mark_freed()
3803 (&cn->bh->b_count) < 0) { in journal_mark_freed()
3806 "cn->bh->b_count < 0"); in journal_mark_freed()
3813 if (cn->jlist) { in journal_mark_freed()
3814 atomic_dec(&cn->jlist-> in journal_mark_freed()
3817 cn->bh = NULL; in journal_mark_freed()
3820 cn = cn->hnext; in journal_mark_freed()
3932 struct reiserfs_journal_cnode *cn; in reiserfs_restore_prepared_buffer() local
3934 cn = get_journal_hash_dev(sb, in reiserfs_restore_prepared_buffer()
3937 if (cn && can_dirty(cn)) { in reiserfs_restore_prepared_buffer()
3986 struct reiserfs_journal_cnode *cn, *next, *jl_cn; in do_journal_end() local
4127 for (i = 0, cn = journal->j_first; cn; cn = cn->next, i++) { in do_journal_end()
4128 if (buffer_journaled(cn->bh)) { in do_journal_end()
4148 (sb, cn->bh->b_blocknr)) { in do_journal_end()
4152 cn->bh->b_blocknr); in do_journal_end()
4154 jl_cn->blocknr = cn->bh->b_blocknr; in do_journal_end()
4157 jl_cn->bh = cn->bh; in do_journal_end()
4162 cpu_to_le32(cn->bh->b_blocknr); in do_journal_end()
4165 cpu_to_le32(cn->bh->b_blocknr); in do_journal_end()
4194 cn = journal->j_first; in do_journal_end()
4196 while (cn) { in do_journal_end()
4197 clear_buffer_journal_new(cn->bh); in do_journal_end()
4199 if (buffer_journaled(cn->bh)) { in do_journal_end()
4210 page = cn->bh->b_page; in do_journal_end()
4213 addr + offset_in_page(cn->bh->b_data), in do_journal_end()
4214 cn->bh->b_size); in do_journal_end()
4218 set_buffer_journal_dirty(cn->bh); in do_journal_end()
4219 clear_buffer_journaled(cn->bh); in do_journal_end()
4228 brelse(cn->bh); in do_journal_end()
4230 next = cn->next; in do_journal_end()
4231 free_cnode(sb, cn); in do_journal_end()
4232 cn = next; in do_journal_end()