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;
514 /* insert cn into table */
516 struct reiserfs_journal_cnode *cn)
520 cn_orig = journal_hash(table, cn->sb, cn->blocknr);
521 cn->hnext = cn_orig;
522 cn->hprev = NULL;
524 cn_orig->hprev = cn;
526 journal_hash(table, cn->sb, cn->blocknr) = cn;
1170 *cn)
1172 struct super_block *sb = cn->sb;
1173 b_blocknr_t blocknr = cn->blocknr;
1175 cn = cn->hprev;
1176 while (cn) {
1177 if (cn->sb == sb && cn->blocknr == blocknr && cn->jlist) {
1178 return cn->jlist;
1180 cn = cn->hprev;
1201 struct reiserfs_journal_cnode *cn, *last;
1202 cn = jl->j_realblock;
1208 while (cn) {
1209 if (cn->blocknr != 0) {
1213 cn->blocknr, cn->bh ? 1 : 0,
1214 cn->state);
1216 cn->state = 0;
1218 jl, cn->blocknr, 1);
1220 last = cn;
1221 cn = cn->next;
1350 struct reiserfs_journal_cnode *cn;
1411 cn = jl->j_realblock;
1412 while (cn) {
1417 if (cn->blocknr == 0) {
1428 pjl = find_newer_jl_for_cn(cn);
1434 if (!pjl && cn->bh) {
1435 saved_bh = cn->bh;
1444 BUG_ON(!can_dirty(cn));
1447 } else if (can_dirty(cn)) {
1493 set_bit(BLOCK_NEEDS_FLUSH, &cn->state);
1495 BUG_ON(cn->blocknr != saved_bh->b_blocknr);
1508 cn = cn->next;
1522 cn = jl->j_realblock;
1523 while (cn) {
1524 if (test_bit(BLOCK_NEEDS_FLUSH, &cn->state)) {
1525 if (!cn->bh) {
1527 "cn->bh is NULL");
1531 __wait_on_buffer(cn->bh);
1534 if (!cn->bh) {
1536 "cn->bh is NULL");
1538 if (unlikely(!buffer_uptodate(cn->bh))) {
1551 (cn->bh));
1554 put_bh(cn->bh);
1556 release_buffer_page(cn->bh);
1558 cn = cn->next;
1632 struct reiserfs_journal_cnode *cn;
1641 cn = jl->j_realblock;
1642 while (cn) {
1647 if (cn->blocknr == 0) {
1650 if (cn->bh && can_dirty(cn) && buffer_dirty(cn->bh)) {
1654 * to lock_buffer(cn->bh), so we have to inc the buffer
1657 tmp_bh = cn->bh;
1660 if (cn->bh && can_dirty(cn) && buffer_dirty(tmp_bh)) {
1667 /* note, cn->bh might be null now */
1673 cn = cn->next;
1683 struct reiserfs_journal_cnode *cn;
1687 cn = jl->j_realblock;
1688 while (cn) {
1694 pjl = find_newer_jl_for_cn(cn);
1695 if (!pjl && cn->blocknr && cn->bh
1696 && buffer_journal_dirty(cn->bh)) {
1697 BUG_ON(!can_dirty(cn));
1703 clear_buffer_journal_new(cn->bh);
1704 if (buffer_journal_prepared(cn->bh)) {
1705 set_buffer_journal_restore_dirty(cn->bh);
1707 set_buffer_journal_test(cn->bh);
1708 mark_buffer_dirty(cn->bh);
1711 cn = cn->next;
3290 struct reiserfs_journal_cnode *cn = NULL;
3356 if (!cn) {
3357 cn = get_cnode(sb);
3358 if (!cn) {
3369 cn->bh = bh;
3370 cn->blocknr = bh->b_blocknr;
3371 cn->sb = sb;
3372 cn->jlist = NULL;
3373 insert_journal_hash(journal->j_hash_table, cn);
3378 cn->next = NULL;
3379 cn->prev = journal->j_last;
3380 cn->bh = bh;
3382 journal->j_last->next = cn;
3383 journal->j_last = cn;
3385 journal->j_first = cn;
3386 journal->j_last = cn;
3437 struct reiserfs_journal_cnode *cn;
3441 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr);
3442 if (!cn || !cn->bh) {
3445 bh = cn->bh;
3446 if (cn->prev) {
3447 cn->prev->next = cn->next;
3449 if (cn->next) {
3450 cn->next->prev = cn->prev;
3452 if (cn == journal->j_first) {
3453 journal->j_first = cn->next;
3455 if (cn == journal->j_last) {
3456 journal->j_last = cn->prev;
3475 free_cnode(sb, cn);
3490 static int can_dirty(struct reiserfs_journal_cnode *cn)
3492 struct super_block *sb = cn->sb;
3493 b_blocknr_t blocknr = cn->blocknr;
3494 struct reiserfs_journal_cnode *cur = cn->hprev;
3498 * first test hprev. These are all newer than cn, so any node here
3510 * then test hnext. These are all older than cn. As long as they
3511 * are committed to the log, it is safe to write cn to disk
3513 cur = cn->hnext;
3750 struct reiserfs_journal_cnode *cn = NULL;
3756 cn = get_journal_hash_dev(sb, journal->j_hash_table, blocknr);
3757 if (cn && cn->bh) {
3758 bh = cn->bh;
3791 cn = get_journal_hash_dev(sb, journal->j_list_hash_table,
3793 while (cn) {
3794 if (sb == cn->sb && blocknr == cn->blocknr) {
3795 set_bit(BLOCK_FREED, &cn->state);
3796 if (cn->bh) {
3803 clear_buffer_journal_dirty(cn->
3805 clear_buffer_dirty(cn->bh);
3806 clear_buffer_journal_test(cn->
3809 put_bh(cn->bh);
3811 (&cn->bh->b_count) < 0) {
3814 "cn->bh->b_count < 0");
3821 if (cn->jlist) {
3822 atomic_dec(&cn->jlist->
3825 cn->bh = NULL;
3828 cn = cn->hnext;
3940 struct reiserfs_journal_cnode *cn;
3942 cn = get_journal_hash_dev(sb,
3945 if (cn && can_dirty(cn)) {
3994 struct reiserfs_journal_cnode *cn, *next, *jl_cn;
4134 for (i = 0, cn = journal->j_first; cn; cn = cn->next, i++) {
4135 if (buffer_journaled(cn->bh)) {
4155 (sb, cn->bh->b_blocknr)) {
4159 cn->bh->b_blocknr);
4161 jl_cn->blocknr = cn->bh->b_blocknr;
4164 jl_cn->bh = cn->bh;
4169 cpu_to_le32(cn->bh->b_blocknr);
4172 cpu_to_le32(cn->bh->b_blocknr);
4201 cn = journal->j_first;
4203 while (cn) {
4204 clear_buffer_journal_new(cn->bh);
4206 if (buffer_journaled(cn->bh)) {
4217 page = cn->bh->b_page;
4220 addr + offset_in_page(cn->bh->b_data),
4221 cn->bh->b_size);
4225 set_buffer_journal_dirty(cn->bh);
4226 clear_buffer_journaled(cn->bh);
4235 brelse(cn->bh);
4237 next = cn->next;
4238 free_cnode(sb, cn);
4239 cn = next;