Lines Matching refs:bh
50 struct buffer_head *bh; in affs_grow_extcache() local
99 bh = affs_bread(sb, key); in affs_grow_extcache()
100 if (!bh) in affs_grow_extcache()
102 key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_grow_extcache()
103 affs_brelse(bh); in affs_grow_extcache()
117 affs_alloc_extblock(struct inode *inode, struct buffer_head *bh, u32 ext) in affs_alloc_extblock() argument
123 blocknr = affs_alloc_block(inode, bh->b_blocknr); in affs_alloc_extblock()
141 tmp = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_alloc_extblock()
144 AFFS_TAIL(sb, bh)->extension = cpu_to_be32(blocknr); in affs_alloc_extblock()
145 affs_adjust_checksum(bh, blocknr - tmp); in affs_alloc_extblock()
146 mark_buffer_dirty_inode(bh, inode); in affs_alloc_extblock()
158 struct buffer_head *bh = AFFS_I(inode)->i_ext_bh; in affs_get_extblock() local
160 get_bh(bh); in affs_get_extblock()
163 bh = affs_get_extblock_slow(inode, ext); in affs_get_extblock()
165 return bh; in affs_get_extblock()
172 struct buffer_head *bh; in affs_get_extblock_slow() local
179 bh = AFFS_I(inode)->i_ext_bh; in affs_get_extblock_slow()
180 ext_key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_get_extblock_slow()
184 bh = affs_alloc_extblock(inode, bh, ext); in affs_get_extblock_slow()
185 if (IS_ERR(bh)) in affs_get_extblock_slow()
186 return bh; in affs_get_extblock_slow()
206 bh = affs_alloc_extblock(inode, prev_bh, ext); in affs_get_extblock_slow()
208 if (IS_ERR(bh)) in affs_get_extblock_slow()
209 return bh; in affs_get_extblock_slow()
257 bh = affs_bread(sb, ext_key); in affs_get_extblock_slow()
258 if (!bh) in affs_get_extblock_slow()
260 ext_key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_get_extblock_slow()
261 affs_brelse(bh); in affs_get_extblock_slow()
274 bh = affs_bread(sb, ext_key); in affs_get_extblock_slow()
275 if (!bh) in affs_get_extblock_slow()
283 AFFS_I(inode)->i_ext_bh = bh; in affs_get_extblock_slow()
284 get_bh(bh); in affs_get_extblock_slow()
286 return bh; in affs_get_extblock_slow()
289 affs_brelse(bh); in affs_get_extblock_slow()
446 struct buffer_head *bh, tmp_bh; in affs_bread_ino() local
452 bh = affs_bread(inode->i_sb, tmp_bh.b_blocknr); in affs_bread_ino()
453 if (bh) { in affs_bread_ino()
454 bh->b_state |= tmp_bh.b_state; in affs_bread_ino()
455 return bh; in affs_bread_ino()
465 struct buffer_head *bh, tmp_bh; in affs_getzeroblk_ino() local
471 bh = affs_getzeroblk(inode->i_sb, tmp_bh.b_blocknr); in affs_getzeroblk_ino()
472 if (bh) { in affs_getzeroblk_ino()
473 bh->b_state |= tmp_bh.b_state; in affs_getzeroblk_ino()
474 return bh; in affs_getzeroblk_ino()
484 struct buffer_head *bh, tmp_bh; in affs_getemptyblk_ino() local
490 bh = affs_getemptyblk(inode->i_sb, tmp_bh.b_blocknr); in affs_getemptyblk_ino()
491 if (bh) { in affs_getemptyblk_ino()
492 bh->b_state |= tmp_bh.b_state; in affs_getemptyblk_ino()
493 return bh; in affs_getemptyblk_ino()
505 struct buffer_head *bh; in affs_do_readpage_ofs() local
522 bh = affs_bread_ino(inode, bidx, 0); in affs_do_readpage_ofs()
523 if (IS_ERR(bh)) in affs_do_readpage_ofs()
524 return PTR_ERR(bh); in affs_do_readpage_ofs()
527 memcpy(data + pos, AFFS_DATA(bh) + boff, tmp); in affs_do_readpage_ofs()
528 affs_brelse(bh); in affs_do_readpage_ofs()
542 struct buffer_head *bh, *prev_bh; in affs_extent_file_ofs() local
549 bh = NULL; in affs_extent_file_ofs()
554 bh = affs_bread_ino(inode, bidx, 0); in affs_extent_file_ofs()
555 if (IS_ERR(bh)) in affs_extent_file_ofs()
556 return PTR_ERR(bh); in affs_extent_file_ofs()
559 memset(AFFS_DATA(bh) + boff, 0, tmp); in affs_extent_file_ofs()
560 be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp); in affs_extent_file_ofs()
561 affs_fix_checksum(sb, bh); in affs_extent_file_ofs()
562 mark_buffer_dirty_inode(bh, inode); in affs_extent_file_ofs()
566 bh = affs_bread_ino(inode, bidx - 1, 0); in affs_extent_file_ofs()
567 if (IS_ERR(bh)) in affs_extent_file_ofs()
568 return PTR_ERR(bh); in affs_extent_file_ofs()
572 prev_bh = bh; in affs_extent_file_ofs()
573 bh = affs_getzeroblk_ino(inode, bidx); in affs_extent_file_ofs()
574 if (IS_ERR(bh)) in affs_extent_file_ofs()
578 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA); in affs_extent_file_ofs()
579 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino); in affs_extent_file_ofs()
580 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx); in affs_extent_file_ofs()
581 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp); in affs_extent_file_ofs()
582 affs_fix_checksum(sb, bh); in affs_extent_file_ofs()
583 bh->b_state &= ~(1UL << BH_New); in affs_extent_file_ofs()
584 mark_buffer_dirty_inode(bh, inode); in affs_extent_file_ofs()
592 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr); in affs_extent_file_ofs()
593 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next); in affs_extent_file_ofs()
600 affs_brelse(bh); in affs_extent_file_ofs()
606 return PTR_ERR(bh); in affs_extent_file_ofs()
674 struct buffer_head *bh, *prev_bh; in affs_write_end_ofs() local
694 bh = NULL; in affs_write_end_ofs()
700 bh = affs_bread_ino(inode, bidx, 0); in affs_write_end_ofs()
701 if (IS_ERR(bh)) { in affs_write_end_ofs()
702 written = PTR_ERR(bh); in affs_write_end_ofs()
707 memcpy(AFFS_DATA(bh) + boff, data + from, tmp); in affs_write_end_ofs()
708 be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp); in affs_write_end_ofs()
709 affs_fix_checksum(sb, bh); in affs_write_end_ofs()
710 mark_buffer_dirty_inode(bh, inode); in affs_write_end_ofs()
715 bh = affs_bread_ino(inode, bidx - 1, 0); in affs_write_end_ofs()
716 if (IS_ERR(bh)) { in affs_write_end_ofs()
717 written = PTR_ERR(bh); in affs_write_end_ofs()
722 prev_bh = bh; in affs_write_end_ofs()
723 bh = affs_getemptyblk_ino(inode, bidx); in affs_write_end_ofs()
724 if (IS_ERR(bh)) in affs_write_end_ofs()
726 memcpy(AFFS_DATA(bh), data + from, bsize); in affs_write_end_ofs()
727 if (buffer_new(bh)) { in affs_write_end_ofs()
728 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA); in affs_write_end_ofs()
729 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino); in affs_write_end_ofs()
730 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx); in affs_write_end_ofs()
731 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(bsize); in affs_write_end_ofs()
732 AFFS_DATA_HEAD(bh)->next = 0; in affs_write_end_ofs()
733 bh->b_state &= ~(1UL << BH_New); in affs_write_end_ofs()
741 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr); in affs_write_end_ofs()
742 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next); in affs_write_end_ofs()
747 affs_fix_checksum(sb, bh); in affs_write_end_ofs()
748 mark_buffer_dirty_inode(bh, inode); in affs_write_end_ofs()
754 prev_bh = bh; in affs_write_end_ofs()
755 bh = affs_bread_ino(inode, bidx, 1); in affs_write_end_ofs()
756 if (IS_ERR(bh)) in affs_write_end_ofs()
760 memcpy(AFFS_DATA(bh), data + from, tmp); in affs_write_end_ofs()
761 if (buffer_new(bh)) { in affs_write_end_ofs()
762 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA); in affs_write_end_ofs()
763 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino); in affs_write_end_ofs()
764 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx); in affs_write_end_ofs()
765 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp); in affs_write_end_ofs()
766 AFFS_DATA_HEAD(bh)->next = 0; in affs_write_end_ofs()
767 bh->b_state &= ~(1UL << BH_New); in affs_write_end_ofs()
775 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr); in affs_write_end_ofs()
776 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next); in affs_write_end_ofs()
779 } else if (be32_to_cpu(AFFS_DATA_HEAD(bh)->size) < tmp) in affs_write_end_ofs()
780 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp); in affs_write_end_ofs()
782 affs_fix_checksum(sb, bh); in affs_write_end_ofs()
783 mark_buffer_dirty_inode(bh, inode); in affs_write_end_ofs()
791 affs_brelse(bh); in affs_write_end_ofs()
803 bh = prev_bh; in affs_write_end_ofs()
805 written = PTR_ERR(bh); in affs_write_end_ofs()
918 struct buffer_head *bh = affs_bread_ino(inode, last_blk, 0); in affs_truncate() local
920 if (IS_ERR(bh)) { in affs_truncate()
923 ext, PTR_ERR(bh)); in affs_truncate()
926 tmp = be32_to_cpu(AFFS_DATA_HEAD(bh)->next); in affs_truncate()
927 AFFS_DATA_HEAD(bh)->next = 0; in affs_truncate()
928 affs_adjust_checksum(bh, -tmp); in affs_truncate()
929 affs_brelse(bh); in affs_truncate()