Lines Matching refs:bh
54 struct buffer_head *bh; in ext4_append() local
64 bh = ext4_bread(handle, inode, *block, EXT4_GET_BLOCKS_CREATE); 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()
95 struct buffer_head *bh; in __ext4_read_dirblock() local
99 bh = ext4_bread(NULL, inode, block, 0); in __ext4_read_dirblock()
100 if (IS_ERR(bh)) { in __ext4_read_dirblock()
105 current->comm, PTR_ERR(bh)); in __ext4_read_dirblock()
107 return bh; in __ext4_read_dirblock()
109 if (!bh) { in __ext4_read_dirblock()
114 dirent = (struct ext4_dir_entry *) bh->b_data; in __ext4_read_dirblock()
130 buffer_verified(bh)) in __ext4_read_dirblock()
131 return bh; in __ext4_read_dirblock()
140 set_buffer_verified(bh); in __ext4_read_dirblock()
144 brelse(bh); in __ext4_read_dirblock()
150 set_buffer_verified(bh); in __ext4_read_dirblock()
154 brelse(bh); in __ext4_read_dirblock()
158 return bh; in __ext4_read_dirblock()
224 struct buffer_head *bh; member
383 struct buffer_head *bh) in ext4_handle_dirty_dirent_node() argument
385 ext4_dirent_csum_set(inode, (struct ext4_dir_entry *)bh->b_data); in ext4_handle_dirty_dirent_node()
386 return ext4_handle_dirty_metadata(handle, inode, bh); in ext4_handle_dirty_dirent_node()
494 struct buffer_head *bh) in ext4_handle_dirty_dx_node() argument
496 ext4_dx_csum_set(inode, (struct ext4_dir_entry *)bh->b_data); in ext4_handle_dirty_dx_node()
497 return ext4_handle_dirty_metadata(handle, inode, bh); in ext4_handle_dirty_dx_node()
691 struct buffer_head *bh; in dx_show_entries() local
700 bh = ext4_bread(NULL,dir, block, 0); in dx_show_entries()
701 if (!bh || IS_ERR(bh)) in dx_show_entries()
704 dx_show_entries(hinfo, dir, ((struct dx_node *) bh->b_data)->entries, levels - 1): in dx_show_entries()
706 bh->b_data, blocksize, 0); in dx_show_entries()
710 brelse(bh); in dx_show_entries()
740 frame->bh = ext4_read_dirblock(dir, 0, INDEX); in dx_probe()
741 if (IS_ERR(frame->bh)) in dx_probe()
742 return (struct dx_frame *) frame->bh; in dx_probe()
744 root = (struct dx_root *) frame->bh->b_data; in dx_probe()
830 frame->bh = ext4_read_dirblock(dir, dx_get_block(at), INDEX); in dx_probe()
831 if (IS_ERR(frame->bh)) { in dx_probe()
832 ret_err = (struct dx_frame *) frame->bh; in dx_probe()
833 frame->bh = NULL; in dx_probe()
836 entries = ((struct dx_node *) frame->bh->b_data)->entries; in dx_probe()
847 brelse(frame->bh); in dx_probe()
859 if (frames[0].bh == NULL) in dx_release()
862 if (((struct dx_root *)frames[0].bh->b_data)->info.indirect_levels) in dx_release()
863 brelse(frames[1].bh); in dx_release()
864 brelse(frames[0].bh); in dx_release()
890 struct buffer_head *bh; in ext4_htree_next_block() local
930 bh = ext4_read_dirblock(dir, dx_get_block(p->at), INDEX); in ext4_htree_next_block()
931 if (IS_ERR(bh)) in ext4_htree_next_block()
932 return PTR_ERR(bh); in ext4_htree_next_block()
934 brelse(p->bh); in ext4_htree_next_block()
935 p->bh = bh; in ext4_htree_next_block()
936 p->at = p->entries = ((struct dx_node *) bh->b_data)->entries; in ext4_htree_next_block()
952 struct buffer_head *bh; in htree_dirblock_to_tree() local
959 bh = ext4_read_dirblock(dir, block, DIRENT); in htree_dirblock_to_tree()
960 if (IS_ERR(bh)) in htree_dirblock_to_tree()
961 return PTR_ERR(bh); in htree_dirblock_to_tree()
963 de = (struct ext4_dir_entry_2 *) bh->b_data; in htree_dirblock_to_tree()
972 brelse(bh); in htree_dirblock_to_tree()
978 brelse(bh); in htree_dirblock_to_tree()
984 if (ext4_check_dir_entry(dir, NULL, de, bh, in htree_dirblock_to_tree()
985 bh->b_data, bh->b_size, in htree_dirblock_to_tree()
987 + ((char *)de - bh->b_data))) { in htree_dirblock_to_tree()
1026 brelse(bh); in htree_dirblock_to_tree()
1088 de = (struct ext4_dir_entry_2 *) frames[0].bh->b_data; in ext4_htree_fill_tree()
1098 de = (struct ext4_dir_entry_2 *) frames[0].bh->b_data; in ext4_htree_fill_tree()
1144 static inline int search_dirblock(struct buffer_head *bh, in search_dirblock() argument
1151 return ext4_search_dir(bh, bh->b_data, dir->i_sb->s_blocksize, dir, in search_dirblock()
1265 int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size, in ext4_search_dir() argument
1289 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_search_dir()
1290 bh->b_data, in ext4_search_dir()
1291 bh->b_size, offset)) { in ext4_search_dir()
1351 struct buffer_head *bh, *ret = NULL; in ext4_find_entry() local
1431 bh = ext4_getblk(NULL, dir, b++, 0); in ext4_find_entry()
1432 if (IS_ERR(bh)) { in ext4_find_entry()
1434 ret = bh; in ext4_find_entry()
1439 bh_use[ra_max] = bh; in ext4_find_entry()
1440 if (bh) in ext4_find_entry()
1442 1, &bh); in ext4_find_entry()
1445 if ((bh = bh_use[ra_ptr++]) == NULL) in ext4_find_entry()
1447 wait_on_buffer(bh); in ext4_find_entry()
1448 if (!buffer_uptodate(bh)) { in ext4_find_entry()
1452 brelse(bh); in ext4_find_entry()
1455 if (!buffer_verified(bh) && in ext4_find_entry()
1457 (struct ext4_dir_entry *)bh->b_data) && in ext4_find_entry()
1459 (struct ext4_dir_entry *)bh->b_data)) { in ext4_find_entry()
1462 brelse(bh); in ext4_find_entry()
1465 set_buffer_verified(bh); in ext4_find_entry()
1466 i = search_dirblock(bh, dir, &fname, d_name, in ext4_find_entry()
1470 ret = bh; in ext4_find_entry()
1473 brelse(bh); in ext4_find_entry()
1508 struct buffer_head *bh; in ext4_dx_find_entry() local
1520 bh = ext4_read_dirblock(dir, block, DIRENT); in ext4_dx_find_entry()
1521 if (IS_ERR(bh)) in ext4_dx_find_entry()
1524 retval = search_dirblock(bh, dir, fname, d_name, in ext4_dx_find_entry()
1529 brelse(bh); in ext4_dx_find_entry()
1531 bh = ERR_PTR(ERR_BAD_DX_DIR); in ext4_dx_find_entry()
1542 bh = ERR_PTR(retval); in ext4_dx_find_entry()
1547 bh = NULL; in ext4_dx_find_entry()
1552 return bh; in ext4_dx_find_entry()
1559 struct buffer_head *bh; in ext4_lookup() local
1564 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_lookup()
1565 if (IS_ERR(bh)) in ext4_lookup()
1566 return (struct dentry *) bh; in ext4_lookup()
1568 if (bh) { in ext4_lookup()
1570 brelse(bh); in ext4_lookup()
1609 struct buffer_head *bh; in ext4_get_parent() local
1611 bh = ext4_find_entry(d_inode(child), &dotdot, &de, NULL); in ext4_get_parent()
1612 if (IS_ERR(bh)) in ext4_get_parent()
1613 return (struct dentry *) bh; in ext4_get_parent()
1614 if (!bh) in ext4_get_parent()
1617 brelse(bh); in ext4_get_parent()
1683 struct buffer_head **bh,struct dx_frame *frame, in do_split() argument
1692 char *data1 = (*bh)->b_data, *data2; in do_split()
1704 brelse(*bh); in do_split()
1705 *bh = NULL; in do_split()
1709 BUFFER_TRACE(*bh, "get_write_access"); in do_split()
1710 err = ext4_journal_get_write_access(handle, *bh); in do_split()
1714 BUFFER_TRACE(frame->bh, "get_write_access"); in do_split()
1715 err = ext4_journal_get_write_access(handle, frame->bh); in do_split()
1770 swap(*bh, bh2); in do_split()
1777 err = ext4_handle_dirty_dx_node(handle, dir, frame->bh); in do_split()
1785 brelse(*bh); in do_split()
1787 *bh = NULL; in do_split()
1793 struct buffer_head *bh, in ext4_find_dest_de() argument
1808 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_find_dest_de()
1876 struct buffer_head *bh) in add_dirent_to_buf() argument
1886 err = ext4_find_dest_de(dir, inode, bh, bh->b_data, in add_dirent_to_buf()
1891 BUFFER_TRACE(bh, "get_write_access"); in add_dirent_to_buf()
1892 err = ext4_journal_get_write_access(handle, bh); in add_dirent_to_buf()
1919 BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata"); in add_dirent_to_buf()
1920 err = ext4_handle_dirty_dirent_node(handle, dir, bh); in add_dirent_to_buf()
1932 struct inode *inode, struct buffer_head *bh) in make_indexed_dir() argument
1954 BUFFER_TRACE(bh, "get_write_access"); in make_indexed_dir()
1955 retval = ext4_journal_get_write_access(handle, bh); in make_indexed_dir()
1958 brelse(bh); in make_indexed_dir()
1961 root = (struct dx_root *) bh->b_data; in make_indexed_dir()
1969 brelse(bh); in make_indexed_dir()
1977 brelse(bh); in make_indexed_dir()
2020 frame->bh = bh; in make_indexed_dir()
2021 bh = bh2; in make_indexed_dir()
2023 retval = ext4_handle_dirty_dx_node(handle, dir, frame->bh); in make_indexed_dir()
2026 retval = ext4_handle_dirty_dirent_node(handle, dir, bh); in make_indexed_dir()
2030 de = do_split(handle,dir, &bh, frame, &fname->hinfo); in make_indexed_dir()
2037 retval = add_dirent_to_buf(handle, fname, dir, inode, de, bh); in make_indexed_dir()
2038 brelse(bh); in make_indexed_dir()
2065 struct buffer_head *bh = NULL; in ext4_add_entry() local
2109 bh = ext4_read_dirblock(dir, block, DIRENT); in ext4_add_entry()
2110 if (IS_ERR(bh)) { in ext4_add_entry()
2111 retval = PTR_ERR(bh); in ext4_add_entry()
2112 bh = NULL; in ext4_add_entry()
2116 NULL, bh); in ext4_add_entry()
2123 inode, bh); in ext4_add_entry()
2124 bh = NULL; /* make_indexed_dir releases bh */ in ext4_add_entry()
2127 brelse(bh); in ext4_add_entry()
2129 bh = ext4_append(handle, dir, &block); in ext4_add_entry()
2130 if (IS_ERR(bh)) { in ext4_add_entry()
2131 retval = PTR_ERR(bh); in ext4_add_entry()
2132 bh = NULL; in ext4_add_entry()
2135 de = (struct ext4_dir_entry_2 *) bh->b_data; in ext4_add_entry()
2140 t = EXT4_DIRENT_TAIL(bh->b_data, blocksize); in ext4_add_entry()
2144 retval = add_dirent_to_buf(handle, &fname, dir, inode, de, bh); in ext4_add_entry()
2147 brelse(bh); in ext4_add_entry()
2161 struct buffer_head *bh; in ext4_dx_add_entry() local
2172 bh = ext4_read_dirblock(dir, dx_get_block(frame->at), DIRENT); in ext4_dx_add_entry()
2173 if (IS_ERR(bh)) { in ext4_dx_add_entry()
2174 err = PTR_ERR(bh); in ext4_dx_add_entry()
2175 bh = NULL; in ext4_dx_add_entry()
2179 BUFFER_TRACE(bh, "get_write_access"); in ext4_dx_add_entry()
2180 err = ext4_journal_get_write_access(handle, bh); in ext4_dx_add_entry()
2184 err = add_dirent_to_buf(handle, fname, dir, inode, NULL, bh); in ext4_dx_add_entry()
2216 BUFFER_TRACE(frame->bh, "get_write_access"); in ext4_dx_add_entry()
2217 err = ext4_journal_get_write_access(handle, frame->bh); in ext4_dx_add_entry()
2226 BUFFER_TRACE(frame->bh, "get_write_access"); /* index root */ in ext4_dx_add_entry()
2228 frames[0].bh); in ext4_dx_add_entry()
2242 swap(frame->bh, bh2); in ext4_dx_add_entry()
2262 ((struct dx_root *) frames[0].bh->b_data)->info.indirect_levels = 1; in ext4_dx_add_entry()
2268 frame->bh = bh2; in ext4_dx_add_entry()
2270 frame->bh); in ext4_dx_add_entry()
2274 err = ext4_handle_dirty_dx_node(handle, dir, frames[0].bh); in ext4_dx_add_entry()
2280 de = do_split(handle, dir, &bh, frame, &fname->hinfo); in ext4_dx_add_entry()
2285 err = add_dirent_to_buf(handle, fname, dir, inode, de, bh); in ext4_dx_add_entry()
2291 brelse(bh); in ext4_dx_add_entry()
2303 struct buffer_head *bh, in ext4_generic_delete_entry() argument
2316 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_generic_delete_entry()
2317 bh->b_data, bh->b_size, i)) in ext4_generic_delete_entry()
2342 struct buffer_head *bh) in ext4_delete_entry() argument
2348 err = ext4_delete_inline_entry(handle, dir, de_del, bh, in ext4_delete_entry()
2357 BUFFER_TRACE(bh, "get_write_access"); in ext4_delete_entry()
2358 err = ext4_journal_get_write_access(handle, bh); in ext4_delete_entry()
2363 bh, bh->b_data, in ext4_delete_entry()
2368 BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata"); in ext4_delete_entry()
2369 err = ext4_handle_dirty_dirent_node(handle, dir, bh); in ext4_delete_entry()
2672 struct buffer_head *bh; in ext4_empty_dir() local
2690 bh = ext4_read_dirblock(inode, 0, EITHER); in ext4_empty_dir()
2691 if (IS_ERR(bh)) in ext4_empty_dir()
2694 de = (struct ext4_dir_entry_2 *) bh->b_data; in ext4_empty_dir()
2700 brelse(bh); in ext4_empty_dir()
2707 if ((void *) de >= (void *) (bh->b_data+sb->s_blocksize)) { in ext4_empty_dir()
2710 brelse(bh); in ext4_empty_dir()
2712 bh = ext4_read_dirblock(inode, lblock, EITHER); in ext4_empty_dir()
2713 if (IS_ERR(bh)) in ext4_empty_dir()
2715 de = (struct ext4_dir_entry_2 *) bh->b_data; in ext4_empty_dir()
2717 if (ext4_check_dir_entry(inode, NULL, de, bh, in ext4_empty_dir()
2718 bh->b_data, bh->b_size, offset)) { in ext4_empty_dir()
2719 de = (struct ext4_dir_entry_2 *)(bh->b_data + in ext4_empty_dir()
2725 brelse(bh); in ext4_empty_dir()
2731 brelse(bh); in ext4_empty_dir()
2903 brelse(iloc.bh); in ext4_orphan_del()
2911 struct buffer_head *bh; in ext4_rmdir() local
2925 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_rmdir()
2926 if (IS_ERR(bh)) in ext4_rmdir()
2927 return PTR_ERR(bh); in ext4_rmdir()
2928 if (!bh) in ext4_rmdir()
2952 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_rmdir()
2974 brelse(bh); in ext4_rmdir()
2984 struct buffer_head *bh; in ext4_unlink() local
2999 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_unlink()
3000 if (IS_ERR(bh)) in ext4_unlink()
3001 return PTR_ERR(bh); in ext4_unlink()
3002 if (!bh) in ext4_unlink()
3027 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_unlink()
3040 brelse(bh); in ext4_unlink()
3263 struct buffer_head *bh; in ext4_get_first_dir_block() local
3266 bh = ext4_read_dirblock(inode, 0, EITHER); in ext4_get_first_dir_block()
3267 if (IS_ERR(bh)) { in ext4_get_first_dir_block()
3268 *retval = PTR_ERR(bh); in ext4_get_first_dir_block()
3272 (struct ext4_dir_entry_2 *)bh->b_data, in ext4_get_first_dir_block()
3274 return bh; in ext4_get_first_dir_block()
3289 struct buffer_head *bh; member
3346 BUFFER_TRACE(ent->bh, "get write access"); in ext4_setent()
3347 retval = ext4_journal_get_write_access(handle, ent->bh); in ext4_setent()
3357 BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata"); in ext4_setent()
3360 ent->dir, ent->bh); in ext4_setent()
3366 brelse(ent->bh); in ext4_setent()
3367 ent->bh = NULL; in ext4_setent()
3376 struct buffer_head *bh; in ext4_find_delete_entry() local
3379 bh = ext4_find_entry(dir, d_name, &de, NULL); in ext4_find_delete_entry()
3380 if (IS_ERR(bh)) in ext4_find_delete_entry()
3381 return PTR_ERR(bh); in ext4_find_delete_entry()
3382 if (bh) { in ext4_find_delete_entry()
3383 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_find_delete_entry()
3384 brelse(bh); in ext4_find_delete_entry()
3407 retval = ext4_delete_entry(handle, ent->dir, ent->de, ent->bh); in ext4_rename_delete()
3509 old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, &old.de, NULL); in ext4_rename()
3510 if (IS_ERR(old.bh)) in ext4_rename()
3511 return PTR_ERR(old.bh); in ext4_rename()
3519 if (!old.bh || le32_to_cpu(old.de->inode) != old.inode->i_ino) in ext4_rename()
3530 new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, in ext4_rename()
3532 if (IS_ERR(new.bh)) { in ext4_rename()
3533 retval = PTR_ERR(new.bh); in ext4_rename()
3534 new.bh = NULL; in ext4_rename()
3537 if (new.bh) { in ext4_rename()
3539 brelse(new.bh); in ext4_rename()
3540 new.bh = NULL; in ext4_rename()
3603 if (!new.bh) { in ext4_rename()
3664 brelse(old.bh); in ext4_rename()
3665 brelse(new.bh); in ext4_rename()
3710 old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, in ext4_cross_rename()
3712 if (IS_ERR(old.bh)) in ext4_cross_rename()
3713 return PTR_ERR(old.bh); in ext4_cross_rename()
3721 if (!old.bh || le32_to_cpu(old.de->inode) != old.inode->i_ino) in ext4_cross_rename()
3724 new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, in ext4_cross_rename()
3726 if (IS_ERR(new.bh)) { in ext4_cross_rename()
3727 retval = PTR_ERR(new.bh); in ext4_cross_rename()
3728 new.bh = NULL; in ext4_cross_rename()
3733 if (!new.bh || le32_to_cpu(new.de->inode) != new.inode->i_ino) in ext4_cross_rename()
3809 brelse(old.bh); in ext4_cross_rename()
3810 brelse(new.bh); in ext4_cross_rename()