Lines Matching refs:bh
54 struct buffer_head *bh; in ext4_append() local
64 bh = ext4_bread(handle, inode, *block, 1); in ext4_append()
65 if (IS_ERR(bh)) in ext4_append()
66 return bh; in ext4_append()
69 BUFFER_TRACE(bh, "get_write_access"); in ext4_append()
70 err = ext4_journal_get_write_access(handle, bh); in ext4_append()
72 brelse(bh); in ext4_append()
76 return bh; in ext4_append()
94 struct buffer_head *bh; in __ext4_read_dirblock() local
98 bh = ext4_bread(NULL, inode, block, 0); in __ext4_read_dirblock()
99 if (IS_ERR(bh)) { in __ext4_read_dirblock()
102 "(ino %lu, block %lu)", PTR_ERR(bh), inode->i_ino, in __ext4_read_dirblock()
105 return bh; in __ext4_read_dirblock()
107 if (!bh) { in __ext4_read_dirblock()
111 dirent = (struct ext4_dir_entry *) bh->b_data; in __ext4_read_dirblock()
127 buffer_verified(bh)) in __ext4_read_dirblock()
128 return bh; in __ext4_read_dirblock()
137 set_buffer_verified(bh); in __ext4_read_dirblock()
141 brelse(bh); in __ext4_read_dirblock()
147 set_buffer_verified(bh); in __ext4_read_dirblock()
151 brelse(bh); in __ext4_read_dirblock()
155 return bh; in __ext4_read_dirblock()
221 struct buffer_head *bh; member
376 struct buffer_head *bh) in ext4_handle_dirty_dirent_node() argument
378 ext4_dirent_csum_set(inode, (struct ext4_dir_entry *)bh->b_data); in ext4_handle_dirty_dirent_node()
379 return ext4_handle_dirty_metadata(handle, inode, bh); in ext4_handle_dirty_dirent_node()
487 struct buffer_head *bh) in ext4_handle_dirty_dx_node() argument
489 ext4_dx_csum_set(inode, (struct ext4_dir_entry *)bh->b_data); in ext4_handle_dirty_dx_node()
490 return ext4_handle_dirty_metadata(handle, inode, bh); in ext4_handle_dirty_dx_node()
688 struct buffer_head *bh; in dx_show_entries() local
697 bh = ext4_bread(NULL,dir, block, 0); in dx_show_entries()
698 if (!bh || IS_ERR(bh)) in dx_show_entries()
701 dx_show_entries(hinfo, dir, ((struct dx_node *) bh->b_data)->entries, levels - 1): in dx_show_entries()
703 bh->b_data, blocksize, 0); in dx_show_entries()
707 brelse(bh); in dx_show_entries()
737 frame->bh = ext4_read_dirblock(dir, 0, INDEX); in dx_probe()
738 if (IS_ERR(frame->bh)) in dx_probe()
739 return (struct dx_frame *) frame->bh; in dx_probe()
741 root = (struct dx_root *) frame->bh->b_data; in dx_probe()
840 frame->bh = ext4_read_dirblock(dir, dx_get_block(at), INDEX); in dx_probe()
841 if (IS_ERR(frame->bh)) { in dx_probe()
842 ret_err = (struct dx_frame *) frame->bh; in dx_probe()
843 frame->bh = NULL; in dx_probe()
846 entries = ((struct dx_node *) frame->bh->b_data)->entries; in dx_probe()
856 brelse(frame->bh); in dx_probe()
869 if (frames[0].bh == NULL) in dx_release()
872 if (((struct dx_root *) frames[0].bh->b_data)->info.indirect_levels) in dx_release()
873 brelse(frames[1].bh); in dx_release()
874 brelse(frames[0].bh); in dx_release()
900 struct buffer_head *bh; in ext4_htree_next_block() local
940 bh = ext4_read_dirblock(dir, dx_get_block(p->at), INDEX); in ext4_htree_next_block()
941 if (IS_ERR(bh)) in ext4_htree_next_block()
942 return PTR_ERR(bh); in ext4_htree_next_block()
944 brelse(p->bh); in ext4_htree_next_block()
945 p->bh = bh; in ext4_htree_next_block()
946 p->at = p->entries = ((struct dx_node *) bh->b_data)->entries; in ext4_htree_next_block()
962 struct buffer_head *bh; in htree_dirblock_to_tree() local
970 bh = ext4_read_dirblock(dir, block, DIRENT); in htree_dirblock_to_tree()
971 if (IS_ERR(bh)) in htree_dirblock_to_tree()
972 return PTR_ERR(bh); in htree_dirblock_to_tree()
974 de = (struct ext4_dir_entry_2 *) bh->b_data; in htree_dirblock_to_tree()
983 brelse(bh); in htree_dirblock_to_tree()
991 brelse(bh); in htree_dirblock_to_tree()
997 if (ext4_check_dir_entry(dir, NULL, de, bh, in htree_dirblock_to_tree()
998 bh->b_data, bh->b_size, in htree_dirblock_to_tree()
1000 + ((char *)de - bh->b_data))) { in htree_dirblock_to_tree()
1037 brelse(bh); in htree_dirblock_to_tree()
1100 de = (struct ext4_dir_entry_2 *) frames[0].bh->b_data; in ext4_htree_fill_tree()
1110 de = (struct ext4_dir_entry_2 *) frames[0].bh->b_data; in ext4_htree_fill_tree()
1156 static inline int search_dirblock(struct buffer_head *bh, in search_dirblock() argument
1162 return search_dir(bh, bh->b_data, dir->i_sb->s_blocksize, dir, in search_dirblock()
1268 int search_dir(struct buffer_head *bh, char *search_buf, int buf_size, in search_dir() argument
1300 if (ext4_check_dir_entry(dir, NULL, de, bh, in search_dir()
1301 bh->b_data, in search_dir()
1302 bh->b_size, offset)) { in search_dir()
1364 struct buffer_head *bh, *ret = NULL; in ext4_find_entry() local
1403 bh = ext4_dx_find_entry(dir, d_name, res_dir); in ext4_find_entry()
1409 if (!IS_ERR(bh) || PTR_ERR(bh) != ERR_BAD_DX_DIR) in ext4_find_entry()
1410 return bh; in ext4_find_entry()
1439 bh = ext4_getblk(NULL, dir, b++, 0); in ext4_find_entry()
1440 if (unlikely(IS_ERR(bh))) { in ext4_find_entry()
1442 return bh; in ext4_find_entry()
1445 bh_use[ra_max] = bh; in ext4_find_entry()
1446 if (bh) in ext4_find_entry()
1448 1, &bh); in ext4_find_entry()
1451 if ((bh = bh_use[ra_ptr++]) == NULL) in ext4_find_entry()
1453 wait_on_buffer(bh); in ext4_find_entry()
1454 if (!buffer_uptodate(bh)) { in ext4_find_entry()
1458 brelse(bh); in ext4_find_entry()
1461 if (!buffer_verified(bh) && in ext4_find_entry()
1463 (struct ext4_dir_entry *)bh->b_data) && in ext4_find_entry()
1465 (struct ext4_dir_entry *)bh->b_data)) { in ext4_find_entry()
1468 brelse(bh); in ext4_find_entry()
1471 set_buffer_verified(bh); in ext4_find_entry()
1472 i = search_dirblock(bh, dir, d_name, in ext4_find_entry()
1476 ret = bh; in ext4_find_entry()
1479 brelse(bh); in ext4_find_entry()
1512 struct buffer_head *bh; in ext4_dx_find_entry() local
1524 bh = ext4_read_dirblock(dir, block, DIRENT); in ext4_dx_find_entry()
1525 if (IS_ERR(bh)) in ext4_dx_find_entry()
1528 retval = search_dirblock(bh, dir, d_name, in ext4_dx_find_entry()
1533 brelse(bh); in ext4_dx_find_entry()
1535 bh = ERR_PTR(ERR_BAD_DX_DIR); in ext4_dx_find_entry()
1546 bh = ERR_PTR(retval); in ext4_dx_find_entry()
1551 bh = NULL; in ext4_dx_find_entry()
1556 return bh; in ext4_dx_find_entry()
1563 struct buffer_head *bh; in ext4_lookup() local
1568 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_lookup()
1569 if (IS_ERR(bh)) in ext4_lookup()
1570 return (struct dentry *) bh; in ext4_lookup()
1572 if (bh) { in ext4_lookup()
1574 brelse(bh); in ext4_lookup()
1613 struct buffer_head *bh; in ext4_get_parent() local
1615 bh = ext4_find_entry(d_inode(child), &dotdot, &de, NULL); in ext4_get_parent()
1616 if (IS_ERR(bh)) in ext4_get_parent()
1617 return (struct dentry *) bh; in ext4_get_parent()
1618 if (!bh) in ext4_get_parent()
1621 brelse(bh); in ext4_get_parent()
1687 struct buffer_head **bh,struct dx_frame *frame, in do_split() argument
1696 char *data1 = (*bh)->b_data, *data2; in do_split()
1708 brelse(*bh); in do_split()
1709 *bh = NULL; in do_split()
1713 BUFFER_TRACE(*bh, "get_write_access"); in do_split()
1714 err = ext4_journal_get_write_access(handle, *bh); in do_split()
1718 BUFFER_TRACE(frame->bh, "get_write_access"); in do_split()
1719 err = ext4_journal_get_write_access(handle, frame->bh); in do_split()
1774 swap(*bh, bh2); in do_split()
1781 err = ext4_handle_dirty_dx_node(handle, dir, frame->bh); in do_split()
1789 brelse(*bh); in do_split()
1791 *bh = NULL; in do_split()
1797 struct buffer_head *bh, in ext4_find_dest_de() argument
1828 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_find_dest_de()
1929 struct buffer_head *bh) in add_dirent_to_buf() argument
1943 bh, bh->b_data, blocksize - csum_size, in add_dirent_to_buf()
1948 BUFFER_TRACE(bh, "get_write_access"); in add_dirent_to_buf()
1949 err = ext4_journal_get_write_access(handle, bh); in add_dirent_to_buf()
1977 BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata"); in add_dirent_to_buf()
1978 err = ext4_handle_dirty_dirent_node(handle, dir, bh); in add_dirent_to_buf()
1989 struct inode *inode, struct buffer_head *bh) in make_indexed_dir() argument
2025 BUFFER_TRACE(bh, "get_write_access"); in make_indexed_dir()
2026 retval = ext4_journal_get_write_access(handle, bh); in make_indexed_dir()
2029 brelse(bh); in make_indexed_dir()
2032 root = (struct dx_root *) bh->b_data; in make_indexed_dir()
2040 brelse(bh); in make_indexed_dir()
2048 brelse(bh); in make_indexed_dir()
2090 brelse(bh); in make_indexed_dir()
2101 frame->bh = bh; in make_indexed_dir()
2102 bh = bh2; in make_indexed_dir()
2104 retval = ext4_handle_dirty_dx_node(handle, dir, frame->bh); in make_indexed_dir()
2107 retval = ext4_handle_dirty_dirent_node(handle, dir, bh); in make_indexed_dir()
2111 de = do_split(handle,dir, &bh, frame, &hinfo); in make_indexed_dir()
2118 retval = add_dirent_to_buf(handle, dentry, inode, de, bh); in make_indexed_dir()
2119 brelse(bh); in make_indexed_dir()
2146 struct buffer_head *bh = NULL; in ext4_add_entry() local
2184 bh = ext4_read_dirblock(dir, block, DIRENT); in ext4_add_entry()
2185 if (IS_ERR(bh)) in ext4_add_entry()
2186 return PTR_ERR(bh); in ext4_add_entry()
2188 retval = add_dirent_to_buf(handle, dentry, inode, NULL, bh); in ext4_add_entry()
2194 retval = make_indexed_dir(handle, dentry, inode, bh); in ext4_add_entry()
2195 bh = NULL; /* make_indexed_dir releases bh */ in ext4_add_entry()
2198 brelse(bh); in ext4_add_entry()
2200 bh = ext4_append(handle, dir, &block); in ext4_add_entry()
2201 if (IS_ERR(bh)) in ext4_add_entry()
2202 return PTR_ERR(bh); in ext4_add_entry()
2203 de = (struct ext4_dir_entry_2 *) bh->b_data; in ext4_add_entry()
2208 t = EXT4_DIRENT_TAIL(bh->b_data, blocksize); in ext4_add_entry()
2212 retval = add_dirent_to_buf(handle, dentry, inode, de, bh); in ext4_add_entry()
2214 brelse(bh); in ext4_add_entry()
2229 struct buffer_head *bh; in ext4_dx_add_entry() local
2240 bh = ext4_read_dirblock(dir, dx_get_block(frame->at), DIRENT); in ext4_dx_add_entry()
2241 if (IS_ERR(bh)) { in ext4_dx_add_entry()
2242 err = PTR_ERR(bh); in ext4_dx_add_entry()
2243 bh = NULL; in ext4_dx_add_entry()
2247 BUFFER_TRACE(bh, "get_write_access"); in ext4_dx_add_entry()
2248 err = ext4_journal_get_write_access(handle, bh); in ext4_dx_add_entry()
2252 err = add_dirent_to_buf(handle, dentry, inode, NULL, bh); in ext4_dx_add_entry()
2284 BUFFER_TRACE(frame->bh, "get_write_access"); in ext4_dx_add_entry()
2285 err = ext4_journal_get_write_access(handle, frame->bh); in ext4_dx_add_entry()
2294 BUFFER_TRACE(frame->bh, "get_write_access"); /* index root */ in ext4_dx_add_entry()
2296 frames[0].bh); in ext4_dx_add_entry()
2310 swap(frame->bh, bh2); in ext4_dx_add_entry()
2330 ((struct dx_root *) frames[0].bh->b_data)->info.indirect_levels = 1; in ext4_dx_add_entry()
2336 frame->bh = bh2; in ext4_dx_add_entry()
2338 frame->bh); in ext4_dx_add_entry()
2342 err = ext4_handle_dirty_dx_node(handle, dir, frames[0].bh); in ext4_dx_add_entry()
2348 de = do_split(handle, dir, &bh, frame, &hinfo); in ext4_dx_add_entry()
2353 err = add_dirent_to_buf(handle, dentry, inode, de, bh); in ext4_dx_add_entry()
2359 brelse(bh); in ext4_dx_add_entry()
2371 struct buffer_head *bh, in ext4_generic_delete_entry() argument
2384 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_generic_delete_entry()
2385 bh->b_data, bh->b_size, i)) in ext4_generic_delete_entry()
2410 struct buffer_head *bh) in ext4_delete_entry() argument
2416 err = ext4_delete_inline_entry(handle, dir, de_del, bh, in ext4_delete_entry()
2425 BUFFER_TRACE(bh, "get_write_access"); in ext4_delete_entry()
2426 err = ext4_journal_get_write_access(handle, bh); in ext4_delete_entry()
2431 bh, bh->b_data, in ext4_delete_entry()
2436 BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata"); in ext4_delete_entry()
2437 err = ext4_handle_dirty_dirent_node(handle, dir, bh); in ext4_delete_entry()
2757 struct buffer_head *bh; in ext4_empty_dir() local
2775 bh = ext4_read_dirblock(inode, 0, EITHER); in ext4_empty_dir()
2776 if (IS_ERR(bh)) in ext4_empty_dir()
2779 de = (struct ext4_dir_entry_2 *) bh->b_data; in ext4_empty_dir()
2788 brelse(bh); in ext4_empty_dir()
2795 if ((void *) de >= (void *) (bh->b_data+sb->s_blocksize)) { in ext4_empty_dir()
2798 brelse(bh); in ext4_empty_dir()
2800 bh = ext4_read_dirblock(inode, lblock, EITHER); in ext4_empty_dir()
2801 if (IS_ERR(bh)) in ext4_empty_dir()
2803 de = (struct ext4_dir_entry_2 *) bh->b_data; in ext4_empty_dir()
2805 if (ext4_check_dir_entry(inode, NULL, de, bh, in ext4_empty_dir()
2806 bh->b_data, bh->b_size, offset)) { in ext4_empty_dir()
2807 de = (struct ext4_dir_entry_2 *)(bh->b_data + in ext4_empty_dir()
2813 brelse(bh); in ext4_empty_dir()
2819 brelse(bh); in ext4_empty_dir()
2991 brelse(iloc.bh); in ext4_orphan_del()
2999 struct buffer_head *bh; in ext4_rmdir() local
3009 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_rmdir()
3010 if (IS_ERR(bh)) in ext4_rmdir()
3011 return PTR_ERR(bh); in ext4_rmdir()
3012 if (!bh) in ext4_rmdir()
3036 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_rmdir()
3057 brelse(bh); in ext4_rmdir()
3067 struct buffer_head *bh; in ext4_unlink() local
3078 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_unlink()
3079 if (IS_ERR(bh)) in ext4_unlink()
3080 return PTR_ERR(bh); in ext4_unlink()
3081 if (!bh) in ext4_unlink()
3107 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_unlink()
3120 brelse(bh); in ext4_unlink()
3337 struct buffer_head *bh; in ext4_get_first_dir_block() local
3340 bh = ext4_read_dirblock(inode, 0, EITHER); in ext4_get_first_dir_block()
3341 if (IS_ERR(bh)) { in ext4_get_first_dir_block()
3342 *retval = PTR_ERR(bh); in ext4_get_first_dir_block()
3346 (struct ext4_dir_entry_2 *)bh->b_data, in ext4_get_first_dir_block()
3348 return bh; in ext4_get_first_dir_block()
3363 struct buffer_head *bh; member
3420 BUFFER_TRACE(ent->bh, "get write access"); in ext4_setent()
3421 retval = ext4_journal_get_write_access(handle, ent->bh); in ext4_setent()
3432 BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata"); in ext4_setent()
3435 ent->dir, ent->bh); in ext4_setent()
3441 brelse(ent->bh); in ext4_setent()
3442 ent->bh = NULL; in ext4_setent()
3451 struct buffer_head *bh; in ext4_find_delete_entry() local
3454 bh = ext4_find_entry(dir, d_name, &de, NULL); in ext4_find_delete_entry()
3455 if (IS_ERR(bh)) in ext4_find_delete_entry()
3456 return PTR_ERR(bh); in ext4_find_delete_entry()
3457 if (bh) { in ext4_find_delete_entry()
3458 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_find_delete_entry()
3459 brelse(bh); in ext4_find_delete_entry()
3482 retval = ext4_delete_entry(handle, ent->dir, ent->de, ent->bh); in ext4_rename_delete()
3577 old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, &old.de, NULL); in ext4_rename()
3578 if (IS_ERR(old.bh)) in ext4_rename()
3579 return PTR_ERR(old.bh); in ext4_rename()
3587 if (!old.bh || le32_to_cpu(old.de->inode) != old.inode->i_ino) in ext4_rename()
3598 new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, in ext4_rename()
3600 if (IS_ERR(new.bh)) { in ext4_rename()
3601 retval = PTR_ERR(new.bh); in ext4_rename()
3602 new.bh = NULL; in ext4_rename()
3605 if (new.bh) { in ext4_rename()
3607 brelse(new.bh); in ext4_rename()
3608 new.bh = NULL; in ext4_rename()
3671 if (!new.bh) { in ext4_rename()
3732 brelse(old.bh); in ext4_rename()
3733 brelse(new.bh); in ext4_rename()
3765 old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, in ext4_cross_rename()
3767 if (IS_ERR(old.bh)) in ext4_cross_rename()
3768 return PTR_ERR(old.bh); in ext4_cross_rename()
3776 if (!old.bh || le32_to_cpu(old.de->inode) != old.inode->i_ino) in ext4_cross_rename()
3779 new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, in ext4_cross_rename()
3781 if (IS_ERR(new.bh)) { in ext4_cross_rename()
3782 retval = PTR_ERR(new.bh); in ext4_cross_rename()
3783 new.bh = NULL; in ext4_cross_rename()
3788 if (!new.bh || le32_to_cpu(new.de->inode) != new.inode->i_ino) in ext4_cross_rename()
3864 brelse(old.bh); in ext4_cross_rename()
3865 brelse(new.bh); in ext4_cross_rename()