Lines Matching refs:bh
68 #define HDR(bh) ((struct ext2_xattr_header *)((bh)->b_data)) argument
70 #define FIRST_ENTRY(bh) ENTRY(HDR(bh)+1) argument
80 # define ea_bdebug(bh, f...) do { \ argument
82 bh->b_bdev, (unsigned long) bh->b_blocknr); \
198 struct buffer_head *bh = NULL; in ext2_xattr_get() local
219 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_get()
221 if (!bh) in ext2_xattr_get()
223 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_get()
224 atomic_read(&(bh->b_count)), le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_get()
225 end = bh->b_data + bh->b_size; in ext2_xattr_get()
226 if (!ext2_xattr_header_valid(HDR(bh))) { in ext2_xattr_get()
236 entry = FIRST_ENTRY(bh); in ext2_xattr_get()
251 if (ext2_xattr_cache_insert(ea_block_cache, bh)) in ext2_xattr_get()
257 if (ext2_xattr_cache_insert(ea_block_cache, bh)) in ext2_xattr_get()
264 memcpy(buffer, bh->b_data + le16_to_cpu(entry->e_value_offs), in ext2_xattr_get()
270 brelse(bh); in ext2_xattr_get()
290 struct buffer_head *bh = NULL; in ext2_xattr_list() local
305 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_list()
307 if (!bh) in ext2_xattr_list()
309 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_list()
310 atomic_read(&(bh->b_count)), le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_list()
311 end = bh->b_data + bh->b_size; in ext2_xattr_list()
312 if (!ext2_xattr_header_valid(HDR(bh))) { in ext2_xattr_list()
322 entry = FIRST_ENTRY(bh); in ext2_xattr_list()
329 if (ext2_xattr_cache_insert(ea_block_cache, bh)) in ext2_xattr_list()
333 for (entry = FIRST_ENTRY(bh); !IS_LAST_ENTRY(entry); in ext2_xattr_list()
360 brelse(bh); in ext2_xattr_list()
410 struct buffer_head *bh = NULL; in ext2_xattr_set() local
442 bh = sb_bread(sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_set()
444 if (!bh) in ext2_xattr_set()
446 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_set()
447 atomic_read(&(bh->b_count)), in ext2_xattr_set()
448 le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_set()
449 header = HDR(bh); in ext2_xattr_set()
450 end = bh->b_data + bh->b_size; in ext2_xattr_set()
464 last = FIRST_ENTRY(bh); in ext2_xattr_set()
517 lock_buffer(bh); in ext2_xattr_set()
521 ea_bdebug(bh, "modifying in-place"); in ext2_xattr_set()
527 bh->b_blocknr); in ext2_xattr_set()
533 unlock_buffer(bh); in ext2_xattr_set()
534 ea_bdebug(bh, "cloning"); in ext2_xattr_set()
535 header = kmemdup(HDR(bh), bh->b_size, GFP_KERNEL); in ext2_xattr_set()
541 offset = (char *)here - bh->b_data; in ext2_xattr_set()
543 offset = (char *)last - bh->b_data; in ext2_xattr_set()
630 if (bh && header == HDR(bh)) in ext2_xattr_set()
631 unlock_buffer(bh); /* we were modifying in-place. */ in ext2_xattr_set()
632 error = ext2_xattr_set2(inode, bh, NULL); in ext2_xattr_set()
635 if (bh && header == HDR(bh)) in ext2_xattr_set()
636 unlock_buffer(bh); /* we were modifying in-place. */ in ext2_xattr_set()
637 error = ext2_xattr_set2(inode, bh, header); in ext2_xattr_set()
641 if (!(bh && header == HDR(bh))) in ext2_xattr_set()
643 brelse(bh); in ext2_xattr_set()
790 struct buffer_head *bh = NULL; in ext2_xattr_delete_inode() local
804 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_delete_inode()
805 if (!bh) { in ext2_xattr_delete_inode()
811 ea_bdebug(bh, "b_count=%d", atomic_read(&(bh->b_count))); in ext2_xattr_delete_inode()
812 if (!ext2_xattr_header_valid(HDR(bh))) { in ext2_xattr_delete_inode()
818 lock_buffer(bh); in ext2_xattr_delete_inode()
819 if (HDR(bh)->h_refcount == cpu_to_le32(1)) { in ext2_xattr_delete_inode()
820 __u32 hash = le32_to_cpu(HDR(bh)->h_hash); in ext2_xattr_delete_inode()
827 bh->b_blocknr); in ext2_xattr_delete_inode()
829 get_bh(bh); in ext2_xattr_delete_inode()
830 bforget(bh); in ext2_xattr_delete_inode()
831 unlock_buffer(bh); in ext2_xattr_delete_inode()
833 le32_add_cpu(&HDR(bh)->h_refcount, -1); in ext2_xattr_delete_inode()
834 ea_bdebug(bh, "refcount now=%d", in ext2_xattr_delete_inode()
835 le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_delete_inode()
836 unlock_buffer(bh); in ext2_xattr_delete_inode()
837 mark_buffer_dirty(bh); in ext2_xattr_delete_inode()
839 sync_dirty_buffer(bh); in ext2_xattr_delete_inode()
845 brelse(bh); in ext2_xattr_delete_inode()
858 ext2_xattr_cache_insert(struct mb_cache *cache, struct buffer_head *bh) in ext2_xattr_cache_insert() argument
860 __u32 hash = le32_to_cpu(HDR(bh)->h_hash); in ext2_xattr_cache_insert()
863 error = mb_cache_entry_create(cache, GFP_NOFS, hash, bh->b_blocknr, in ext2_xattr_cache_insert()
867 ea_bdebug(bh, "already in cache (%d cache entries)", in ext2_xattr_cache_insert()
872 ea_bdebug(bh, "inserting [%x]", (int)hash); in ext2_xattr_cache_insert()
937 struct buffer_head *bh; in ext2_xattr_cache_find() local
939 bh = sb_bread(inode->i_sb, ce->e_value); in ext2_xattr_cache_find()
940 if (!bh) { in ext2_xattr_cache_find()
945 lock_buffer(bh); in ext2_xattr_cache_find()
957 unlock_buffer(bh); in ext2_xattr_cache_find()
958 brelse(bh); in ext2_xattr_cache_find()
960 } else if (le32_to_cpu(HDR(bh)->h_refcount) > in ext2_xattr_cache_find()
964 le32_to_cpu(HDR(bh)->h_refcount), in ext2_xattr_cache_find()
966 } else if (!ext2_xattr_cmp(header, HDR(bh))) { in ext2_xattr_cache_find()
967 ea_bdebug(bh, "b_count=%d", in ext2_xattr_cache_find()
968 atomic_read(&(bh->b_count))); in ext2_xattr_cache_find()
971 return bh; in ext2_xattr_cache_find()
973 unlock_buffer(bh); in ext2_xattr_cache_find()
974 brelse(bh); in ext2_xattr_cache_find()