Lines Matching refs:bh
52 struct buffer_head *bh; in affs_grow_extcache() local
101 bh = affs_bread(sb, key); in affs_grow_extcache()
102 if (!bh) in affs_grow_extcache()
104 key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_grow_extcache()
105 affs_brelse(bh); in affs_grow_extcache()
119 affs_alloc_extblock(struct inode *inode, struct buffer_head *bh, u32 ext) in affs_alloc_extblock() argument
125 blocknr = affs_alloc_block(inode, bh->b_blocknr); in affs_alloc_extblock()
143 tmp = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_alloc_extblock()
146 AFFS_TAIL(sb, bh)->extension = cpu_to_be32(blocknr); in affs_alloc_extblock()
147 affs_adjust_checksum(bh, blocknr - tmp); in affs_alloc_extblock()
148 mark_buffer_dirty_inode(bh, inode); in affs_alloc_extblock()
160 struct buffer_head *bh = AFFS_I(inode)->i_ext_bh; in affs_get_extblock() local
162 get_bh(bh); in affs_get_extblock()
165 bh = affs_get_extblock_slow(inode, ext); in affs_get_extblock()
167 return bh; in affs_get_extblock()
174 struct buffer_head *bh; in affs_get_extblock_slow() local
181 bh = AFFS_I(inode)->i_ext_bh; in affs_get_extblock_slow()
182 ext_key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_get_extblock_slow()
186 bh = affs_alloc_extblock(inode, bh, ext); in affs_get_extblock_slow()
187 if (IS_ERR(bh)) in affs_get_extblock_slow()
188 return bh; in affs_get_extblock_slow()
208 bh = affs_alloc_extblock(inode, prev_bh, ext); in affs_get_extblock_slow()
210 if (IS_ERR(bh)) in affs_get_extblock_slow()
211 return bh; in affs_get_extblock_slow()
259 bh = affs_bread(sb, ext_key); in affs_get_extblock_slow()
260 if (!bh) in affs_get_extblock_slow()
262 ext_key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension); in affs_get_extblock_slow()
263 affs_brelse(bh); in affs_get_extblock_slow()
276 bh = affs_bread(sb, ext_key); in affs_get_extblock_slow()
277 if (!bh) in affs_get_extblock_slow()
285 AFFS_I(inode)->i_ext_bh = bh; in affs_get_extblock_slow()
286 get_bh(bh); in affs_get_extblock_slow()
288 return bh; in affs_get_extblock_slow()
291 affs_brelse(bh); in affs_get_extblock_slow()
469 struct buffer_head *bh, tmp_bh; in affs_bread_ino() local
475 bh = affs_bread(inode->i_sb, tmp_bh.b_blocknr); in affs_bread_ino()
476 if (bh) { in affs_bread_ino()
477 bh->b_state |= tmp_bh.b_state; in affs_bread_ino()
478 return bh; in affs_bread_ino()
488 struct buffer_head *bh, tmp_bh; in affs_getzeroblk_ino() local
494 bh = affs_getzeroblk(inode->i_sb, tmp_bh.b_blocknr); in affs_getzeroblk_ino()
495 if (bh) { in affs_getzeroblk_ino()
496 bh->b_state |= tmp_bh.b_state; in affs_getzeroblk_ino()
497 return bh; in affs_getzeroblk_ino()
507 struct buffer_head *bh, tmp_bh; in affs_getemptyblk_ino() local
513 bh = affs_getemptyblk(inode->i_sb, tmp_bh.b_blocknr); in affs_getemptyblk_ino()
514 if (bh) { in affs_getemptyblk_ino()
515 bh->b_state |= tmp_bh.b_state; in affs_getemptyblk_ino()
516 return bh; in affs_getemptyblk_ino()
528 struct buffer_head *bh; in affs_do_readpage_ofs() local
542 bh = affs_bread_ino(inode, bidx, create); in affs_do_readpage_ofs()
543 if (IS_ERR(bh)) in affs_do_readpage_ofs()
544 return PTR_ERR(bh); in affs_do_readpage_ofs()
547 memcpy_to_page(page, pos, AFFS_DATA(bh) + boff, tmp); in affs_do_readpage_ofs()
548 affs_brelse(bh); in affs_do_readpage_ofs()
560 struct buffer_head *bh, *prev_bh; in affs_extent_file_ofs() local
567 bh = NULL; in affs_extent_file_ofs()
572 bh = affs_bread_ino(inode, bidx, 0); in affs_extent_file_ofs()
573 if (IS_ERR(bh)) in affs_extent_file_ofs()
574 return PTR_ERR(bh); in affs_extent_file_ofs()
577 memset(AFFS_DATA(bh) + boff, 0, tmp); in affs_extent_file_ofs()
578 be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp); in affs_extent_file_ofs()
579 affs_fix_checksum(sb, bh); in affs_extent_file_ofs()
580 mark_buffer_dirty_inode(bh, inode); in affs_extent_file_ofs()
584 bh = affs_bread_ino(inode, bidx - 1, 0); in affs_extent_file_ofs()
585 if (IS_ERR(bh)) in affs_extent_file_ofs()
586 return PTR_ERR(bh); in affs_extent_file_ofs()
590 prev_bh = bh; in affs_extent_file_ofs()
591 bh = affs_getzeroblk_ino(inode, bidx); in affs_extent_file_ofs()
592 if (IS_ERR(bh)) in affs_extent_file_ofs()
596 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA); in affs_extent_file_ofs()
597 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino); in affs_extent_file_ofs()
598 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx); in affs_extent_file_ofs()
599 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp); in affs_extent_file_ofs()
600 affs_fix_checksum(sb, bh); in affs_extent_file_ofs()
601 bh->b_state &= ~(1UL << BH_New); in affs_extent_file_ofs()
602 mark_buffer_dirty_inode(bh, inode); in affs_extent_file_ofs()
610 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr); in affs_extent_file_ofs()
611 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next); in affs_extent_file_ofs()
618 affs_brelse(bh); in affs_extent_file_ofs()
624 return PTR_ERR(bh); in affs_extent_file_ofs()
693 struct buffer_head *bh, *prev_bh; in affs_write_end_ofs() local
713 bh = NULL; in affs_write_end_ofs()
719 bh = affs_bread_ino(inode, bidx, 0); in affs_write_end_ofs()
720 if (IS_ERR(bh)) { in affs_write_end_ofs()
721 written = PTR_ERR(bh); in affs_write_end_ofs()
726 memcpy(AFFS_DATA(bh) + boff, data + from, tmp); in affs_write_end_ofs()
727 be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp); in affs_write_end_ofs()
728 affs_fix_checksum(sb, bh); in affs_write_end_ofs()
729 mark_buffer_dirty_inode(bh, inode); in affs_write_end_ofs()
734 bh = affs_bread_ino(inode, bidx - 1, 0); in affs_write_end_ofs()
735 if (IS_ERR(bh)) { in affs_write_end_ofs()
736 written = PTR_ERR(bh); in affs_write_end_ofs()
741 prev_bh = bh; in affs_write_end_ofs()
742 bh = affs_getemptyblk_ino(inode, bidx); in affs_write_end_ofs()
743 if (IS_ERR(bh)) in affs_write_end_ofs()
745 memcpy(AFFS_DATA(bh), data + from, bsize); in affs_write_end_ofs()
746 if (buffer_new(bh)) { in affs_write_end_ofs()
747 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA); in affs_write_end_ofs()
748 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino); in affs_write_end_ofs()
749 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx); in affs_write_end_ofs()
750 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(bsize); in affs_write_end_ofs()
751 AFFS_DATA_HEAD(bh)->next = 0; in affs_write_end_ofs()
752 bh->b_state &= ~(1UL << BH_New); in affs_write_end_ofs()
760 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr); in affs_write_end_ofs()
761 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next); in affs_write_end_ofs()
766 affs_fix_checksum(sb, bh); in affs_write_end_ofs()
767 mark_buffer_dirty_inode(bh, inode); in affs_write_end_ofs()
773 prev_bh = bh; in affs_write_end_ofs()
774 bh = affs_bread_ino(inode, bidx, 1); in affs_write_end_ofs()
775 if (IS_ERR(bh)) in affs_write_end_ofs()
779 memcpy(AFFS_DATA(bh), data + from, tmp); in affs_write_end_ofs()
780 if (buffer_new(bh)) { in affs_write_end_ofs()
781 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA); in affs_write_end_ofs()
782 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino); in affs_write_end_ofs()
783 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx); in affs_write_end_ofs()
784 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp); in affs_write_end_ofs()
785 AFFS_DATA_HEAD(bh)->next = 0; in affs_write_end_ofs()
786 bh->b_state &= ~(1UL << BH_New); in affs_write_end_ofs()
794 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr); in affs_write_end_ofs()
795 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next); in affs_write_end_ofs()
798 } else if (be32_to_cpu(AFFS_DATA_HEAD(bh)->size) < tmp) in affs_write_end_ofs()
799 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp); in affs_write_end_ofs()
801 affs_fix_checksum(sb, bh); in affs_write_end_ofs()
802 mark_buffer_dirty_inode(bh, inode); in affs_write_end_ofs()
810 affs_brelse(bh); in affs_write_end_ofs()
828 bh = prev_bh; in affs_write_end_ofs()
830 written = PTR_ERR(bh); in affs_write_end_ofs()
945 struct buffer_head *bh = affs_bread_ino(inode, last_blk, 0); in affs_truncate() local
947 if (IS_ERR(bh)) { in affs_truncate()
950 ext, PTR_ERR(bh)); in affs_truncate()
953 tmp = be32_to_cpu(AFFS_DATA_HEAD(bh)->next); in affs_truncate()
954 AFFS_DATA_HEAD(bh)->next = 0; in affs_truncate()
955 affs_adjust_checksum(bh, -tmp); in affs_truncate()
956 affs_brelse(bh); in affs_truncate()