Lines Matching refs:bh
75 typedef int (*ea_call_t) (struct gfs2_inode *ip, struct buffer_head *bh,
79 static int ea_foreach_i(struct gfs2_inode *ip, struct buffer_head *bh, in ea_foreach_i() argument
85 if (gfs2_metatype_check(GFS2_SB(&ip->i_inode), bh, GFS2_METATYPE_EA)) in ea_foreach_i()
88 for (ea = GFS2_EA_BH2FIRST(bh);; prev = ea, ea = GFS2_EA2NEXT(ea)) { in ea_foreach_i()
91 if (!(bh->b_data <= (char *)ea && (char *)GFS2_EA2NEXT(ea) <= in ea_foreach_i()
92 bh->b_data + bh->b_size)) in ea_foreach_i()
97 error = ea_call(ip, bh, ea, prev, data); in ea_foreach_i()
103 bh->b_data + bh->b_size) in ea_foreach_i()
118 struct buffer_head *bh, *eabh; in ea_foreach() local
122 error = gfs2_meta_read(ip->i_gl, ip->i_eattr, DIO_WAIT, &bh); in ea_foreach()
127 error = ea_foreach_i(ip, bh, ea_call, data); in ea_foreach()
131 if (gfs2_metatype_check(GFS2_SB(&ip->i_inode), bh, GFS2_METATYPE_IN)) { in ea_foreach()
136 eablk = (__be64 *)(bh->b_data + sizeof(struct gfs2_meta_header)); in ea_foreach()
155 brelse(bh); in ea_foreach()
166 static int ea_find_i(struct gfs2_inode *ip, struct buffer_head *bh, in ea_find_i() argument
179 get_bh(bh); in ea_find_i()
180 el->el_bh = bh; in ea_find_i()
225 static int ea_dealloc_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh, in ea_dealloc_unstuffed() argument
274 gfs2_trans_add_meta(ip->i_gl, bh); in ea_dealloc_unstuffed()
325 static int ea_remove_unstuffed(struct gfs2_inode *ip, struct buffer_head *bh, in ea_remove_unstuffed() argument
339 error = ea_dealloc_unstuffed(ip, bh, ea, prev, (leave) ? &error : NULL); in ea_remove_unstuffed()
365 static int ea_list_i(struct gfs2_inode *ip, struct buffer_head *bh, in ea_list_i() argument
466 struct buffer_head **bh; in gfs2_iter_unstuffed() local
475 bh = kcalloc(nptrs, sizeof(struct buffer_head *), GFP_NOFS); in gfs2_iter_unstuffed()
476 if (!bh) in gfs2_iter_unstuffed()
481 bh + x); in gfs2_iter_unstuffed()
484 brelse(bh[x]); in gfs2_iter_unstuffed()
491 error = gfs2_meta_wait(sdp, bh[x]); in gfs2_iter_unstuffed()
494 brelse(bh[x]); in gfs2_iter_unstuffed()
497 if (gfs2_metatype_check(sdp, bh[x], GFS2_METATYPE_ED)) { in gfs2_iter_unstuffed()
499 brelse(bh[x]); in gfs2_iter_unstuffed()
504 pos = bh[x]->b_data + sizeof(struct gfs2_meta_header); in gfs2_iter_unstuffed()
513 gfs2_trans_add_meta(ip->i_gl, bh[x]); in gfs2_iter_unstuffed()
519 brelse(bh[x]); in gfs2_iter_unstuffed()
523 kfree(bh); in gfs2_iter_unstuffed()
685 struct buffer_head *bh; in ea_write() local
694 bh = gfs2_meta_new(ip->i_gl, block); in ea_write()
695 gfs2_trans_add_meta(ip->i_gl, bh); in ea_write()
696 gfs2_metatype_set(bh, GFS2_METATYPE_ED, GFS2_FORMAT_ED); in ea_write()
702 memcpy(bh->b_data + mh_size, data, copy); in ea_write()
704 memset(bh->b_data + mh_size + copy, 0, in ea_write()
707 *dataptr++ = cpu_to_be64(bh->b_blocknr); in ea_write()
711 brelse(bh); in ea_write()
773 struct buffer_head *bh; in ea_init_i() local
776 error = ea_alloc_blk(ip, &bh); in ea_init_i()
780 ip->i_eattr = bh->b_blocknr; in ea_init_i()
781 error = ea_write(ip, GFS2_EA_BH2FIRST(bh), er); in ea_init_i()
783 brelse(bh); in ea_init_i()
866 static int ea_set_simple_noalloc(struct gfs2_inode *ip, struct buffer_head *bh, in ea_set_simple_noalloc() argument
877 gfs2_trans_add_meta(ip->i_gl, bh); in ea_set_simple_noalloc()
921 static int ea_set_simple(struct gfs2_inode *ip, struct buffer_head *bh, in ea_set_simple() argument
937 error = ea_remove_unstuffed(ip, bh, ea, prev, 1); in ea_set_simple()
948 error = ea_set_simple_noalloc(ip, bh, ea, es); in ea_set_simple()
954 es->es_bh = bh; in ea_set_simple()