Lines Matching refs:bh
53 struct buffer_head *bh;
102 bh = affs_bread(sb, key);
103 if (!bh)
105 key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension);
106 affs_brelse(bh);
120 affs_alloc_extblock(struct inode *inode, struct buffer_head *bh, u32 ext)
126 blocknr = affs_alloc_block(inode, bh->b_blocknr);
144 tmp = be32_to_cpu(AFFS_TAIL(sb, bh)->extension);
147 AFFS_TAIL(sb, bh)->extension = cpu_to_be32(blocknr);
148 affs_adjust_checksum(bh, blocknr - tmp);
149 mark_buffer_dirty_inode(bh, inode);
161 struct buffer_head *bh = AFFS_I(inode)->i_ext_bh;
163 get_bh(bh);
166 bh = affs_get_extblock_slow(inode, ext);
168 return bh;
175 struct buffer_head *bh;
182 bh = AFFS_I(inode)->i_ext_bh;
183 ext_key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension);
187 bh = affs_alloc_extblock(inode, bh, ext);
188 if (IS_ERR(bh))
189 return bh;
209 bh = affs_alloc_extblock(inode, prev_bh, ext);
211 if (IS_ERR(bh))
212 return bh;
260 bh = affs_bread(sb, ext_key);
261 if (!bh)
263 ext_key = be32_to_cpu(AFFS_TAIL(sb, bh)->extension);
264 affs_brelse(bh);
277 bh = affs_bread(sb, ext_key);
278 if (!bh)
286 AFFS_I(inode)->i_ext_bh = bh;
287 get_bh(bh);
289 return bh;
292 affs_brelse(bh);
472 struct buffer_head *bh, tmp_bh;
478 bh = affs_bread(inode->i_sb, tmp_bh.b_blocknr);
479 if (bh) {
480 bh->b_state |= tmp_bh.b_state;
481 return bh;
491 struct buffer_head *bh, tmp_bh;
497 bh = affs_getzeroblk(inode->i_sb, tmp_bh.b_blocknr);
498 if (bh) {
499 bh->b_state |= tmp_bh.b_state;
500 return bh;
510 struct buffer_head *bh, tmp_bh;
516 bh = affs_getemptyblk(inode->i_sb, tmp_bh.b_blocknr);
517 if (bh) {
518 bh->b_state |= tmp_bh.b_state;
519 return bh;
530 struct buffer_head *bh;
544 bh = affs_bread_ino(inode, bidx, create);
545 if (IS_ERR(bh))
546 return PTR_ERR(bh);
549 memcpy_to_folio(folio, pos, AFFS_DATA(bh) + boff, tmp);
550 affs_brelse(bh);
562 struct buffer_head *bh, *prev_bh;
569 bh = NULL;
574 bh = affs_bread_ino(inode, bidx, 0);
575 if (IS_ERR(bh))
576 return PTR_ERR(bh);
579 memset(AFFS_DATA(bh) + boff, 0, tmp);
580 be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp);
581 affs_fix_checksum(sb, bh);
582 mark_buffer_dirty_inode(bh, inode);
586 bh = affs_bread_ino(inode, bidx - 1, 0);
587 if (IS_ERR(bh))
588 return PTR_ERR(bh);
592 prev_bh = bh;
593 bh = affs_getzeroblk_ino(inode, bidx);
594 if (IS_ERR(bh))
598 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA);
599 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino);
600 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx);
601 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp);
602 affs_fix_checksum(sb, bh);
603 bh->b_state &= ~(1UL << BH_New);
604 mark_buffer_dirty_inode(bh, inode);
612 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr);
613 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next);
620 affs_brelse(bh);
626 return PTR_ERR(bh);
695 struct buffer_head *bh, *prev_bh;
715 bh = NULL;
721 bh = affs_bread_ino(inode, bidx, 0);
722 if (IS_ERR(bh)) {
723 written = PTR_ERR(bh);
728 memcpy(AFFS_DATA(bh) + boff, data + from, tmp);
729 be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp);
730 affs_fix_checksum(sb, bh);
731 mark_buffer_dirty_inode(bh, inode);
736 bh = affs_bread_ino(inode, bidx - 1, 0);
737 if (IS_ERR(bh)) {
738 written = PTR_ERR(bh);
743 prev_bh = bh;
744 bh = affs_getemptyblk_ino(inode, bidx);
745 if (IS_ERR(bh))
747 memcpy(AFFS_DATA(bh), data + from, bsize);
748 if (buffer_new(bh)) {
749 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA);
750 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino);
751 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx);
752 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(bsize);
753 AFFS_DATA_HEAD(bh)->next = 0;
754 bh->b_state &= ~(1UL << BH_New);
762 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr);
763 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next);
768 affs_fix_checksum(sb, bh);
769 mark_buffer_dirty_inode(bh, inode);
775 prev_bh = bh;
776 bh = affs_bread_ino(inode, bidx, 1);
777 if (IS_ERR(bh))
781 memcpy(AFFS_DATA(bh), data + from, tmp);
782 if (buffer_new(bh)) {
783 AFFS_DATA_HEAD(bh)->ptype = cpu_to_be32(T_DATA);
784 AFFS_DATA_HEAD(bh)->key = cpu_to_be32(inode->i_ino);
785 AFFS_DATA_HEAD(bh)->sequence = cpu_to_be32(bidx);
786 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp);
787 AFFS_DATA_HEAD(bh)->next = 0;
788 bh->b_state &= ~(1UL << BH_New);
796 AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr);
797 affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next);
800 } else if (be32_to_cpu(AFFS_DATA_HEAD(bh)->size) < tmp)
801 AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp);
803 affs_fix_checksum(sb, bh);
804 mark_buffer_dirty_inode(bh, inode);
812 affs_brelse(bh);
830 bh = prev_bh;
832 written = PTR_ERR(bh);
948 struct buffer_head *bh = affs_bread_ino(inode, last_blk, 0);
950 if (IS_ERR(bh)) {
953 ext, PTR_ERR(bh));
956 tmp = be32_to_cpu(AFFS_DATA_HEAD(bh)->next);
957 AFFS_DATA_HEAD(bh)->next = 0;
958 affs_adjust_checksum(bh, -tmp);
959 affs_brelse(bh);