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
81 bh->b_bdev, (unsigned long) bh->b_blocknr); \
148 struct buffer_head *bh = NULL; in ext2_xattr_get() local
169 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_get()
171 if (!bh) in ext2_xattr_get()
173 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_get()
174 atomic_read(&(bh->b_count)), le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_get()
175 end = bh->b_data + bh->b_size; in ext2_xattr_get()
176 if (HDR(bh)->h_magic != cpu_to_le32(EXT2_XATTR_MAGIC) || in ext2_xattr_get()
177 HDR(bh)->h_blocks != cpu_to_le32(1)) { in ext2_xattr_get()
186 entry = FIRST_ENTRY(bh); in ext2_xattr_get()
198 if (ext2_xattr_cache_insert(ext2_mb_cache, bh)) in ext2_xattr_get()
211 if (ext2_xattr_cache_insert(ext2_mb_cache, bh)) in ext2_xattr_get()
218 memcpy(buffer, bh->b_data + le16_to_cpu(entry->e_value_offs), in ext2_xattr_get()
224 brelse(bh); in ext2_xattr_get()
244 struct buffer_head *bh = NULL; in ext2_xattr_list() local
259 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_list()
261 if (!bh) in ext2_xattr_list()
263 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_list()
264 atomic_read(&(bh->b_count)), le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_list()
265 end = bh->b_data + bh->b_size; in ext2_xattr_list()
266 if (HDR(bh)->h_magic != cpu_to_le32(EXT2_XATTR_MAGIC) || in ext2_xattr_list()
267 HDR(bh)->h_blocks != cpu_to_le32(1)) { in ext2_xattr_list()
276 entry = FIRST_ENTRY(bh); in ext2_xattr_list()
284 if (ext2_xattr_cache_insert(ext2_mb_cache, bh)) in ext2_xattr_list()
288 for (entry = FIRST_ENTRY(bh); !IS_LAST_ENTRY(entry); in ext2_xattr_list()
315 brelse(bh); in ext2_xattr_list()
364 struct buffer_head *bh = NULL; in ext2_xattr_set() local
396 bh = sb_bread(sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_set()
398 if (!bh) in ext2_xattr_set()
400 ea_bdebug(bh, "b_count=%d, refcount=%d", in ext2_xattr_set()
401 atomic_read(&(bh->b_count)), in ext2_xattr_set()
402 le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_set()
403 header = HDR(bh); in ext2_xattr_set()
404 end = bh->b_data + bh->b_size; in ext2_xattr_set()
414 here = FIRST_ENTRY(bh); in ext2_xattr_set()
487 lock_buffer(bh); in ext2_xattr_set()
491 ea_bdebug(bh, "modifying in-place"); in ext2_xattr_set()
497 hash, bh->b_blocknr); in ext2_xattr_set()
503 unlock_buffer(bh); in ext2_xattr_set()
504 ea_bdebug(bh, "cloning"); in ext2_xattr_set()
505 header = kmalloc(bh->b_size, GFP_KERNEL); in ext2_xattr_set()
509 memcpy(header, HDR(bh), bh->b_size); in ext2_xattr_set()
512 offset = (char *)here - bh->b_data; in ext2_xattr_set()
514 offset = (char *)last - bh->b_data; in ext2_xattr_set()
601 if (bh && header == HDR(bh)) in ext2_xattr_set()
602 unlock_buffer(bh); /* we were modifying in-place. */ in ext2_xattr_set()
603 error = ext2_xattr_set2(inode, bh, NULL); in ext2_xattr_set()
606 if (bh && header == HDR(bh)) in ext2_xattr_set()
607 unlock_buffer(bh); /* we were modifying in-place. */ in ext2_xattr_set()
608 error = ext2_xattr_set2(inode, bh, header); in ext2_xattr_set()
612 brelse(bh); in ext2_xattr_set()
613 if (!(bh && header == HDR(bh))) in ext2_xattr_set()
761 struct buffer_head *bh = NULL; in ext2_xattr_delete_inode() local
775 bh = sb_bread(inode->i_sb, EXT2_I(inode)->i_file_acl); in ext2_xattr_delete_inode()
776 if (!bh) { in ext2_xattr_delete_inode()
782 ea_bdebug(bh, "b_count=%d", atomic_read(&(bh->b_count))); in ext2_xattr_delete_inode()
783 if (HDR(bh)->h_magic != cpu_to_le32(EXT2_XATTR_MAGIC) || in ext2_xattr_delete_inode()
784 HDR(bh)->h_blocks != cpu_to_le32(1)) { in ext2_xattr_delete_inode()
790 lock_buffer(bh); in ext2_xattr_delete_inode()
791 if (HDR(bh)->h_refcount == cpu_to_le32(1)) { in ext2_xattr_delete_inode()
792 __u32 hash = le32_to_cpu(HDR(bh)->h_hash); in ext2_xattr_delete_inode()
799 hash, bh->b_blocknr); in ext2_xattr_delete_inode()
801 get_bh(bh); in ext2_xattr_delete_inode()
802 bforget(bh); in ext2_xattr_delete_inode()
803 unlock_buffer(bh); in ext2_xattr_delete_inode()
805 le32_add_cpu(&HDR(bh)->h_refcount, -1); in ext2_xattr_delete_inode()
806 ea_bdebug(bh, "refcount now=%d", in ext2_xattr_delete_inode()
807 le32_to_cpu(HDR(bh)->h_refcount)); in ext2_xattr_delete_inode()
808 unlock_buffer(bh); in ext2_xattr_delete_inode()
809 mark_buffer_dirty(bh); in ext2_xattr_delete_inode()
811 sync_dirty_buffer(bh); in ext2_xattr_delete_inode()
817 brelse(bh); in ext2_xattr_delete_inode()
830 ext2_xattr_cache_insert(struct mb_cache *cache, struct buffer_head *bh) in ext2_xattr_cache_insert() argument
832 __u32 hash = le32_to_cpu(HDR(bh)->h_hash); in ext2_xattr_cache_insert()
835 error = mb_cache_entry_create(cache, GFP_NOFS, hash, bh->b_blocknr, 1); in ext2_xattr_cache_insert()
838 ea_bdebug(bh, "already in cache (%d cache entries)", in ext2_xattr_cache_insert()
843 ea_bdebug(bh, "inserting [%x]", (int)hash); in ext2_xattr_cache_insert()
908 struct buffer_head *bh; in ext2_xattr_cache_find() local
910 bh = sb_bread(inode->i_sb, ce->e_block); in ext2_xattr_cache_find()
911 if (!bh) { in ext2_xattr_cache_find()
916 lock_buffer(bh); in ext2_xattr_cache_find()
928 unlock_buffer(bh); in ext2_xattr_cache_find()
929 brelse(bh); in ext2_xattr_cache_find()
931 } else if (le32_to_cpu(HDR(bh)->h_refcount) > in ext2_xattr_cache_find()
935 le32_to_cpu(HDR(bh)->h_refcount), in ext2_xattr_cache_find()
937 } else if (!ext2_xattr_cmp(header, HDR(bh))) { in ext2_xattr_cache_find()
938 ea_bdebug(bh, "b_count=%d", in ext2_xattr_cache_find()
939 atomic_read(&(bh->b_count))); in ext2_xattr_cache_find()
942 return bh; in ext2_xattr_cache_find()
944 unlock_buffer(bh); in ext2_xattr_cache_find()
945 brelse(bh); in ext2_xattr_cache_find()