Lines Matching refs:bh

67 #define HDR(bh) ((struct ext2_xattr_header *)((bh)->b_data))  argument
69 #define FIRST_ENTRY(bh) ENTRY(HDR(bh)+1) argument
79 # define ea_bdebug(bh, f...) do { \ argument
82 bdevname(bh->b_bdev, b), \
83 (unsigned long) bh->b_blocknr); \
152 struct buffer_head *bh = NULL; in ext2_xattr_get() local
172 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_get()
174 if (!bh) in ext2_xattr_get()
176 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_get()
177 atomic_read(&(bh->b_count)), le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_get()
178 end = bh->b_data + bh->b_size; in ext2_xattr_get()
179 if (HDR(bh)->h_magic != cpu_to_le32(EXT2_XATTR_MAGIC) || in ext2_xattr_get()
180 HDR(bh)->h_blocks != cpu_to_le32(1)) { in ext2_xattr_get()
189 entry = FIRST_ENTRY(bh); in ext2_xattr_get()
201 if (ext2_xattr_cache_insert(bh)) in ext2_xattr_get()
214 if (ext2_xattr_cache_insert(bh)) in ext2_xattr_get()
221 memcpy(buffer, bh->b_data + le16_to_cpu(entry->e_value_offs), in ext2_xattr_get()
227 brelse(bh); in ext2_xattr_get()
247 struct buffer_head *bh = NULL; in ext2_xattr_list() local
261 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_list()
263 if (!bh) in ext2_xattr_list()
265 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_list()
266 atomic_read(&(bh->b_count)), le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_list()
267 end = bh->b_data + bh->b_size; in ext2_xattr_list()
268 if (HDR(bh)->h_magic != cpu_to_le32(EXT2_XATTR_MAGIC) || in ext2_xattr_list()
269 HDR(bh)->h_blocks != cpu_to_le32(1)) { in ext2_xattr_list()
278 entry = FIRST_ENTRY(bh); in ext2_xattr_list()
286 if (ext2_xattr_cache_insert(bh)) in ext2_xattr_list()
290 for (entry = FIRST_ENTRY(bh); !IS_LAST_ENTRY(entry); in ext2_xattr_list()
313 brelse(bh); in ext2_xattr_list()
362 struct buffer_head *bh = NULL; in ext2_xattr_set() local
394 bh = sb_bread(sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_set()
396 if (!bh) in ext2_xattr_set()
398 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_set()
399 atomic_read(&(bh->b_count)), in ext2_xattr_set()
400 le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_set()
401 header = HDR(bh); in ext2_xattr_set()
402 end = bh->b_data + bh->b_size; in ext2_xattr_set()
412 here = FIRST_ENTRY(bh); in ext2_xattr_set()
487 ce = mb_cache_entry_get(ext2_xattr_cache, bh->b_bdev, in ext2_xattr_set()
488 bh->b_blocknr); in ext2_xattr_set()
489 lock_buffer(bh); in ext2_xattr_set()
491 ea_bdebug(bh, "modifying in-place"); in ext2_xattr_set()
500 unlock_buffer(bh); in ext2_xattr_set()
501 ea_bdebug(bh, "cloning"); in ext2_xattr_set()
502 header = kmalloc(bh->b_size, GFP_KERNEL); in ext2_xattr_set()
506 memcpy(header, HDR(bh), bh->b_size); in ext2_xattr_set()
509 offset = (char *)here - bh->b_data; in ext2_xattr_set()
511 offset = (char *)last - bh->b_data; in ext2_xattr_set()
598 if (bh && header == HDR(bh)) in ext2_xattr_set()
599 unlock_buffer(bh); /* we were modifying in-place. */ in ext2_xattr_set()
600 error = ext2_xattr_set2(inode, bh, NULL); in ext2_xattr_set()
603 if (bh && header == HDR(bh)) in ext2_xattr_set()
604 unlock_buffer(bh); /* we were modifying in-place. */ in ext2_xattr_set()
605 error = ext2_xattr_set2(inode, bh, header); in ext2_xattr_set()
609 brelse(bh); in ext2_xattr_set()
610 if (!(bh && header == HDR(bh))) in ext2_xattr_set()
757 struct buffer_head *bh = NULL; in ext2_xattr_delete_inode() local
763 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_delete_inode()
764 if (!bh) { in ext2_xattr_delete_inode()
770 ea_bdebug(bh, "b_count=%d", atomic_read(&(bh->b_count))); in ext2_xattr_delete_inode()
771 if (HDR(bh)->h_magic != cpu_to_le32(EXT2_XATTR_MAGIC) || in ext2_xattr_delete_inode()
772 HDR(bh)->h_blocks != cpu_to_le32(1)) { in ext2_xattr_delete_inode()
778 ce = mb_cache_entry_get(ext2_xattr_cache, bh->b_bdev, bh->b_blocknr); in ext2_xattr_delete_inode()
779 lock_buffer(bh); in ext2_xattr_delete_inode()
780 if (HDR(bh)->h_refcount == cpu_to_le32(1)) { in ext2_xattr_delete_inode()
784 get_bh(bh); in ext2_xattr_delete_inode()
785 bforget(bh); in ext2_xattr_delete_inode()
786 unlock_buffer(bh); in ext2_xattr_delete_inode()
788 le32_add_cpu(&HDR(bh)->h_refcount, -1); in ext2_xattr_delete_inode()
791 ea_bdebug(bh, "refcount now=%d", in ext2_xattr_delete_inode()
792 le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_delete_inode()
793 unlock_buffer(bh); in ext2_xattr_delete_inode()
794 mark_buffer_dirty(bh); in ext2_xattr_delete_inode()
796 sync_dirty_buffer(bh); in ext2_xattr_delete_inode()
802 brelse(bh); in ext2_xattr_delete_inode()
827 ext2_xattr_cache_insert(struct buffer_head *bh) in ext2_xattr_cache_insert() argument
829 __u32 hash = le32_to_cpu(HDR(bh)->h_hash); in ext2_xattr_cache_insert()
836 error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, hash); in ext2_xattr_cache_insert()
840 ea_bdebug(bh, "already in cache (%d cache entries)", in ext2_xattr_cache_insert()
845 ea_bdebug(bh, "inserting [%x] (%d cache entries)", (int)hash, in ext2_xattr_cache_insert()
913 struct buffer_head *bh; in ext2_xattr_cache_find() local
921 bh = sb_bread(inode->i_sb, ce->e_block); in ext2_xattr_cache_find()
922 if (!bh) { in ext2_xattr_cache_find()
927 lock_buffer(bh); in ext2_xattr_cache_find()
928 if (le32_to_cpu(HDR(bh)->h_refcount) > in ext2_xattr_cache_find()
932 le32_to_cpu(HDR(bh)->h_refcount), in ext2_xattr_cache_find()
934 } else if (!ext2_xattr_cmp(header, HDR(bh))) { in ext2_xattr_cache_find()
935 ea_bdebug(bh, "b_count=%d", in ext2_xattr_cache_find()
936 atomic_read(&(bh->b_count))); in ext2_xattr_cache_find()
938 return bh; in ext2_xattr_cache_find()
940 unlock_buffer(bh); in ext2_xattr_cache_find()
941 brelse(bh); in ext2_xattr_cache_find()