Lines Matching refs:cn

90 static int can_dirty(struct reiserfs_journal_cnode *cn);
369 struct reiserfs_journal_cnode *cn;
379 cn = journal->j_cnode_free_list;
380 if (!cn) {
381 return cn;
383 if (cn->next) {
384 cn->next->prev = NULL;
386 journal->j_cnode_free_list = cn->next;
387 memset(cn, 0, sizeof(struct reiserfs_journal_cnode));
388 return cn;
395 struct reiserfs_journal_cnode *cn)
403 /* memset(cn, 0, sizeof(struct reiserfs_journal_cnode)) ; */
404 cn->next = journal->j_cnode_free_list;
406 journal->j_cnode_free_list->prev = cn;
408 cn->prev = NULL; /* not needed with the memset, but I might kill the memset, and forget to do this */
409 journal->j_cnode_free_list = cn;
430 struct reiserfs_journal_cnode *cn;
431 cn = journal_hash(table, sb, bl);
432 while (cn) {
433 if (cn->blocknr == bl && cn->sb == sb)
434 return cn;
435 cn = cn->hnext;
464 struct reiserfs_journal_cnode *cn;
500 && (cn =
506 if ((cn = get_journal_hash_dev(sb, journal->j_hash_table, bl))) {
516 /* insert cn into table */
518 struct reiserfs_journal_cnode *cn)
522 cn_orig = journal_hash(table, cn->sb, cn->blocknr);
523 cn->hnext = cn_orig;
524 cn->hprev = NULL;
526 cn_orig->hprev = cn;
528 journal_hash(table, cn->sb, cn->blocknr) = cn;
1169 *cn)
1171 struct super_block *sb = cn->sb;
1172 b_blocknr_t blocknr = cn->blocknr;
1174 cn = cn->hprev;
1175 while (cn) {
1176 if (cn->sb == sb && cn->blocknr == blocknr && cn->jlist) {
1177 return cn->jlist;
1179 cn = cn->hprev;
1200 struct reiserfs_journal_cnode *cn, *last;
1201 cn = jl->j_realblock;
1207 while (cn) {
1208 if (cn->blocknr != 0) {
1212 cn->blocknr, cn->bh ? 1 : 0,
1213 cn->state);
1215 cn->state = 0;
1217 jl, cn->blocknr, 1);
1219 last = cn;
1220 cn = cn->next;
1349 struct reiserfs_journal_cnode *cn;
1410 cn = jl->j_realblock;
1411 while (cn) {
1416 if (cn->blocknr == 0) {
1427 pjl = find_newer_jl_for_cn(cn);
1433 if (!pjl && cn->bh) {
1434 saved_bh = cn->bh;
1443 BUG_ON(!can_dirty(cn));
1446 } else if (can_dirty(cn)) {
1492 set_bit(BLOCK_NEEDS_FLUSH, &cn->state);
1494 BUG_ON(cn->blocknr != saved_bh->b_blocknr);
1507 cn = cn->next;
1521 cn = jl->j_realblock;
1522 while (cn) {
1523 if (test_bit(BLOCK_NEEDS_FLUSH, &cn->state)) {
1524 if (!cn->bh) {
1526 "cn->bh is NULL");
1530 __wait_on_buffer(cn->bh);
1533 if (!cn->bh) {
1535 "cn->bh is NULL");
1537 if (unlikely(!buffer_uptodate(cn->bh))) {
1550 (cn->bh));
1553 put_bh(cn->bh);
1555 release_buffer_page(cn->bh);
1557 cn = cn->next;
1631 struct reiserfs_journal_cnode *cn;
1640 cn = jl->j_realblock;
1641 while (cn) {
1646 if (cn->blocknr == 0) {
1649 if (cn->bh && can_dirty(cn) && buffer_dirty(cn->bh)) {
1653 * to lock_buffer(cn->bh), so we have to inc the buffer
1656 tmp_bh = cn->bh;
1659 if (cn->bh && can_dirty(cn) && buffer_dirty(tmp_bh)) {
1666 /* note, cn->bh might be null now */
1672 cn = cn->next;
1682 struct reiserfs_journal_cnode *cn;
1686 cn = jl->j_realblock;
1687 while (cn) {
1693 pjl = find_newer_jl_for_cn(cn);
1694 if (!pjl && cn->blocknr && cn->bh
1695 && buffer_journal_dirty(cn->bh)) {
1696 BUG_ON(!can_dirty(cn));
1702 clear_buffer_journal_new(cn->bh);
1703 if (buffer_journal_prepared(cn->bh)) {
1704 set_buffer_journal_restore_dirty(cn->bh);
1706 set_buffer_journal_test(cn->bh);
1707 mark_buffer_dirty(cn->bh);
1710 cn = cn->next;
3285 struct reiserfs_journal_cnode *cn = NULL;
3351 if (!cn) {
3352 cn = get_cnode(sb);
3353 if (!cn) {
3364 cn->bh = bh;
3365 cn->blocknr = bh->b_blocknr;
3366 cn->sb = sb;
3367 cn->jlist = NULL;
3368 insert_journal_hash(journal->j_hash_table, cn);
3373 cn->next = NULL;
3374 cn->prev = journal->j_last;
3375 cn->bh = bh;
3377 journal->j_last->next = cn;
3378 journal->j_last = cn;
3380 journal->j_first = cn;
3381 journal->j_last = cn;
3432 struct reiserfs_journal_cnode *cn;
3436 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr);
3437 if (!cn || !cn->bh) {
3440 bh = cn->bh;
3441 if (cn->prev) {
3442 cn->prev->next = cn->next;
3444 if (cn->next) {
3445 cn->next->prev = cn->prev;
3447 if (cn == journal->j_first) {
3448 journal->j_first = cn->next;
3450 if (cn == journal->j_last) {
3451 journal->j_last = cn->prev;
3470 free_cnode(sb, cn);
3485 static int can_dirty(struct reiserfs_journal_cnode *cn)
3487 struct super_block *sb = cn->sb;
3488 b_blocknr_t blocknr = cn->blocknr;
3489 struct reiserfs_journal_cnode *cur = cn->hprev;
3493 * first test hprev. These are all newer than cn, so any node here
3505 * then test hnext. These are all older than cn. As long as they
3506 * are committed to the log, it is safe to write cn to disk
3508 cur = cn->hnext;
3745 struct reiserfs_journal_cnode *cn = NULL;
3751 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr);
3752 if (cn && cn->bh) {
3753 bh = cn->bh;
3786 cn = get_journal_hash_dev(sb, journal->j_list_hash_table,
3788 while (cn) {
3789 if (sb == cn->sb && blocknr == cn->blocknr) {
3790 set_bit(BLOCK_FREED, &cn->state);
3791 if (cn->bh) {
3798 clear_buffer_journal_dirty(cn->
3800 clear_buffer_dirty(cn->bh);
3801 clear_buffer_journal_test(cn->
3804 put_bh(cn->bh);
3806 (&cn->bh->b_count) < 0) {
3809 "cn->bh->b_count < 0");
3816 if (cn->jlist) {
3817 atomic_dec(&cn->jlist->
3820 cn->bh = NULL;
3823 cn = cn->hnext;
3935 struct reiserfs_journal_cnode *cn;
3937 cn = get_journal_hash_dev(sb,
3940 if (cn && can_dirty(cn)) {
3989 struct reiserfs_journal_cnode *cn, *next, *jl_cn;
4129 for (i = 0, cn = journal->j_first; cn; cn = cn->next, i++) {
4130 if (buffer_journaled(cn->bh)) {
4150 (sb, cn->bh->b_blocknr)) {
4154 cn->bh->b_blocknr);
4156 jl_cn->blocknr = cn->bh->b_blocknr;
4159 jl_cn->bh = cn->bh;
4164 cpu_to_le32(cn->bh->b_blocknr);
4167 cpu_to_le32(cn->bh->b_blocknr);
4196 cn = journal->j_first;
4198 while (cn) {
4199 clear_buffer_journal_new(cn->bh);
4201 if (buffer_journaled(cn->bh)) {
4212 page = cn->bh->b_page;
4215 addr + offset_in_page(cn->bh->b_data),
4216 cn->bh->b_size);
4220 set_buffer_journal_dirty(cn->bh);
4221 clear_buffer_journaled(cn->bh);
4230 brelse(cn->bh);
4232 next = cn->next;
4233 free_cnode(sb, cn);
4234 cn = next;