Lines Matching refs:dir

249 static unsigned dx_root_limit(struct inode *dir, unsigned infosize);
250 static unsigned dx_node_limit(struct inode *dir);
252 struct inode *dir,
256 static int dx_make_map(struct inode *dir, struct ext4_dir_entry_2 *de,
265 static int ext4_htree_next_block(struct inode *dir, __u32 hash,
269 static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
548 static inline unsigned dx_root_limit(struct inode *dir, unsigned infosize) in dx_root_limit() argument
550 unsigned entry_space = dir->i_sb->s_blocksize - EXT4_DIR_REC_LEN(1) - in dx_root_limit()
553 if (ext4_has_metadata_csum(dir->i_sb)) in dx_root_limit()
558 static inline unsigned dx_node_limit(struct inode *dir) in dx_node_limit() argument
560 unsigned entry_space = dir->i_sb->s_blocksize - EXT4_DIR_REC_LEN(0); in dx_node_limit()
562 if (ext4_has_metadata_csum(dir->i_sb)) in dx_node_limit()
589 static struct stats dx_show_leaf(struct inode *dir, in dx_show_leaf() argument
615 ctx = ext4_get_fname_crypto_ctx(dir, in dx_show_leaf()
682 struct stats dx_show_entries(struct dx_hash_info *hinfo, struct inode *dir, in dx_show_entries() argument
685 unsigned blocksize = dir->i_sb->s_blocksize; in dx_show_entries()
697 bh = ext4_bread(NULL,dir, block, 0); in dx_show_entries()
701 dx_show_entries(hinfo, dir, ((struct dx_node *) bh->b_data)->entries, levels - 1): in dx_show_entries()
702 dx_show_leaf(dir, hinfo, (struct ext4_dir_entry_2 *) in dx_show_entries()
727 dx_probe(const struct qstr *d_name, struct inode *dir, in dx_probe() argument
737 frame->bh = ext4_read_dirblock(dir, 0, INDEX); in dx_probe()
745 ext4_warning(dir->i_sb, "Unrecognised inode hash code %d", in dx_probe()
751 hinfo->hash_version += EXT4_SB(dir->i_sb)->s_hash_unsigned; in dx_probe()
752 hinfo->seed = EXT4_SB(dir->i_sb)->s_hash_seed; in dx_probe()
759 ctx = ext4_get_fname_crypto_ctx(dir, EXT4_NAME_LEN); in dx_probe()
778 ext4_warning(dir->i_sb, "Unimplemented inode hash flags: %#06x", in dx_probe()
784 ext4_warning(dir->i_sb, "Unimplemented inode hash depth: %#06x", in dx_probe()
792 if (dx_get_limit(entries) != dx_root_limit(dir, in dx_probe()
794 ext4_warning(dir->i_sb, "dx entry: limit != root limit"); in dx_probe()
802 ext4_warning(dir->i_sb, in dx_probe()
840 frame->bh = ext4_read_dirblock(dir, dx_get_block(at), INDEX); in dx_probe()
848 if (dx_get_limit(entries) != dx_node_limit (dir)) { in dx_probe()
849 ext4_warning(dir->i_sb, in dx_probe()
861 ext4_warning(dir->i_sb, in dx_probe()
863 "recommended.", dir->i_ino); in dx_probe()
894 static int ext4_htree_next_block(struct inode *dir, __u32 hash, in ext4_htree_next_block() argument
940 bh = ext4_read_dirblock(dir, dx_get_block(p->at), INDEX); in ext4_htree_next_block()
958 struct inode *dir, ext4_lblk_t block, in htree_dirblock_to_tree() argument
970 bh = ext4_read_dirblock(dir, block, DIRENT); in htree_dirblock_to_tree()
976 dir->i_sb->s_blocksize - in htree_dirblock_to_tree()
980 ctx = ext4_get_fname_crypto_ctx(dir, EXT4_NAME_LEN); in htree_dirblock_to_tree()
996 for (; de < top; de = ext4_next_entry(de, dir->i_sb->s_blocksize)) { in htree_dirblock_to_tree()
997 if (ext4_check_dir_entry(dir, NULL, de, bh, in htree_dirblock_to_tree()
999 (block<<EXT4_BLOCK_SIZE_BITS(dir->i_sb)) in htree_dirblock_to_tree()
1060 struct inode *dir; in ext4_htree_fill_tree() local
1069 dir = file_inode(dir_file); in ext4_htree_fill_tree()
1070 if (!(ext4_test_inode_flag(dir, EXT4_INODE_INDEX))) { in ext4_htree_fill_tree()
1071 hinfo.hash_version = EXT4_SB(dir->i_sb)->s_def_hash_version; in ext4_htree_fill_tree()
1074 EXT4_SB(dir->i_sb)->s_hash_unsigned; in ext4_htree_fill_tree()
1075 hinfo.seed = EXT4_SB(dir->i_sb)->s_hash_seed; in ext4_htree_fill_tree()
1076 if (ext4_has_inline_data(dir)) { in ext4_htree_fill_tree()
1078 count = htree_inlinedir_to_tree(dir_file, dir, 0, in ext4_htree_fill_tree()
1087 count = htree_dirblock_to_tree(dir_file, dir, 0, &hinfo, in ext4_htree_fill_tree()
1094 frame = dx_probe(NULL, dir, &hinfo, frames); in ext4_htree_fill_tree()
1111 de = ext4_next_entry(de, dir->i_sb->s_blocksize); in ext4_htree_fill_tree()
1123 ret = htree_dirblock_to_tree(dir_file, dir, block, &hinfo, in ext4_htree_fill_tree()
1131 ret = ext4_htree_next_block(dir, HASH_NB_ALWAYS, in ext4_htree_fill_tree()
1157 struct inode *dir, in search_dirblock() argument
1162 return search_dir(bh, bh->b_data, dir->i_sb->s_blocksize, dir, in search_dirblock()
1174 static int dx_make_map(struct inode *dir, struct ext4_dir_entry_2 *de, in dx_make_map() argument
1269 struct inode *dir, const struct qstr *d_name, in search_dir() argument
1281 ctx = ext4_get_fname_crypto_ctx(dir, EXT4_NAME_LEN); in search_dir()
1300 if (ext4_check_dir_entry(dir, NULL, de, bh, in search_dir()
1314 dir->i_sb->s_blocksize); in search_dir()
1330 static int is_dx_internal_node(struct inode *dir, ext4_lblk_t block, in is_dx_internal_node() argument
1333 struct super_block *sb = dir->i_sb; in is_dx_internal_node()
1335 if (!is_dx(dir)) in is_dx_internal_node()
1357 static struct buffer_head * ext4_find_entry (struct inode *dir, in ext4_find_entry() argument
1376 sb = dir->i_sb; in ext4_find_entry()
1381 if (ext4_has_inline_data(dir)) { in ext4_find_entry()
1383 ret = ext4_find_inline_entry(dir, d_name, res_dir, in ext4_find_entry()
1402 if (is_dx(dir)) { in ext4_find_entry()
1403 bh = ext4_dx_find_entry(dir, d_name, res_dir); in ext4_find_entry()
1414 nblocks = dir->i_size >> EXT4_BLOCK_SIZE_BITS(sb); in ext4_find_entry()
1415 start = EXT4_I(dir)->i_dir_start_lookup; in ext4_find_entry()
1439 bh = ext4_getblk(NULL, dir, b++, 0); in ext4_find_entry()
1456 EXT4_ERROR_INODE(dir, "reading directory lblock %lu", in ext4_find_entry()
1462 !is_dx_internal_node(dir, block, in ext4_find_entry()
1464 !ext4_dirent_csum_verify(dir, in ext4_find_entry()
1466 EXT4_ERROR_INODE(dir, "checksumming directory " in ext4_find_entry()
1472 i = search_dirblock(bh, dir, d_name, in ext4_find_entry()
1475 EXT4_I(dir)->i_dir_start_lookup = block; in ext4_find_entry()
1493 nblocks = dir->i_size >> EXT4_BLOCK_SIZE_BITS(sb); in ext4_find_entry()
1506 static struct buffer_head * ext4_dx_find_entry(struct inode *dir, const struct qstr *d_name, in ext4_dx_find_entry() argument
1509 struct super_block * sb = dir->i_sb; in ext4_dx_find_entry()
1519 frame = dx_probe(d_name, dir, &hinfo, frames); in ext4_dx_find_entry()
1524 bh = ext4_read_dirblock(dir, block, DIRENT); in ext4_dx_find_entry()
1528 retval = search_dirblock(bh, dir, d_name, in ext4_dx_find_entry()
1540 retval = ext4_htree_next_block(dir, hinfo.hash, frame, in ext4_dx_find_entry()
1545 retval, dir->i_ino); in ext4_dx_find_entry()
1559 static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags) in ext4_lookup() argument
1568 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_lookup()
1575 if (!ext4_valid_inum(dir->i_sb, ino)) { in ext4_lookup()
1576 EXT4_ERROR_INODE(dir, "bad inode number: %u", ino); in ext4_lookup()
1579 if (unlikely(ino == dir->i_ino)) { in ext4_lookup()
1580 EXT4_ERROR_INODE(dir, "'%pd' linked to parent dir", in ext4_lookup()
1584 inode = ext4_iget_normal(dir->i_sb, ino); in ext4_lookup()
1586 EXT4_ERROR_INODE(dir, in ext4_lookup()
1591 if (!IS_ERR(inode) && ext4_encrypted_inode(dir) && in ext4_lookup()
1594 !ext4_is_child_context_consistent_with_parent(dir, in ext4_lookup()
1599 (unsigned long) dir->i_ino, in ext4_lookup()
1686 static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, in do_split() argument
1690 unsigned blocksize = dir->i_sb->s_blocksize; in do_split()
1703 if (ext4_has_metadata_csum(dir->i_sb)) in do_split()
1706 bh2 = ext4_append(handle, dir, &newblock); in do_split()
1727 count = dx_make_map(dir, (struct ext4_dir_entry_2 *) data1, in do_split()
1767 dxtrace(dx_show_leaf(dir, hinfo, (struct ext4_dir_entry_2 *) data1, in do_split()
1769 dxtrace(dx_show_leaf(dir, hinfo, (struct ext4_dir_entry_2 *) data2, in do_split()
1778 err = ext4_handle_dirty_dirent_node(handle, dir, bh2); in do_split()
1781 err = ext4_handle_dirty_dx_node(handle, dir, frame->bh); in do_split()
1792 ext4_std_error(dir->i_sb, err); in do_split()
1796 int ext4_find_dest_de(struct inode *dir, struct inode *inode, in ext4_find_dest_de() argument
1811 ctx = ext4_get_fname_crypto_ctx(dir, EXT4_NAME_LEN); in ext4_find_dest_de()
1828 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_find_dest_de()
1861 int ext4_insert_dentry(struct inode *dir, in ext4_insert_dentry() argument
1875 ctx = ext4_get_fname_crypto_ctx(dir, EXT4_NAME_LEN); in ext4_insert_dentry()
1931 struct inode *dir = d_inode(dentry->d_parent); in add_dirent_to_buf() local
1934 unsigned int blocksize = dir->i_sb->s_blocksize; in add_dirent_to_buf()
1942 err = ext4_find_dest_de(dir, inode, in add_dirent_to_buf()
1951 ext4_std_error(dir->i_sb, err); in add_dirent_to_buf()
1957 err = ext4_insert_dentry(dir, inode, de, blocksize, &dentry->d_name, in add_dirent_to_buf()
1973 dir->i_mtime = dir->i_ctime = ext4_current_time(dir); in add_dirent_to_buf()
1974 ext4_update_dx_flag(dir); in add_dirent_to_buf()
1975 dir->i_version++; in add_dirent_to_buf()
1976 ext4_mark_inode_dirty(handle, dir); in add_dirent_to_buf()
1978 err = ext4_handle_dirty_dirent_node(handle, dir, bh); in add_dirent_to_buf()
1980 ext4_std_error(dir->i_sb, err); in add_dirent_to_buf()
1991 struct inode *dir = d_inode(dentry->d_parent); in make_indexed_dir() local
2015 ctx = ext4_get_fname_crypto_ctx(dir, EXT4_NAME_LEN); in make_indexed_dir()
2023 blocksize = dir->i_sb->s_blocksize; in make_indexed_dir()
2024 dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino)); in make_indexed_dir()
2028 ext4_std_error(dir->i_sb, retval); in make_indexed_dir()
2039 EXT4_ERROR_INODE(dir, "invalid rec_len for '..'"); in make_indexed_dir()
2046 bh2 = ext4_append(handle, dir, &block); in make_indexed_dir()
2051 ext4_set_inode_flag(dir, EXT4_INODE_INDEX); in make_indexed_dir()
2074 root->info.hash_version = EXT4_SB(dir->i_sb)->s_def_hash_version; in make_indexed_dir()
2078 dx_set_limit(entries, dx_root_limit(dir, sizeof(root->info))); in make_indexed_dir()
2083 hinfo.hash_version += EXT4_SB(dir->i_sb)->s_hash_unsigned; in make_indexed_dir()
2084 hinfo.seed = EXT4_SB(dir->i_sb)->s_hash_seed; in make_indexed_dir()
2089 ext4_mark_inode_dirty(handle, dir); 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()
2127 ext4_mark_inode_dirty(handle, dir); in make_indexed_dir()
2145 struct inode *dir = d_inode(dentry->d_parent); in ext4_add_entry() local
2159 sb = dir->i_sb; in ext4_add_entry()
2164 if (ext4_has_inline_data(dir)) { in ext4_add_entry()
2174 if (is_dx(dir)) { in ext4_add_entry()
2178 ext4_clear_inode_flag(dir, EXT4_INODE_INDEX); in ext4_add_entry()
2180 ext4_mark_inode_dirty(handle, dir); in ext4_add_entry()
2182 blocks = dir->i_size >> sb->s_blocksize_bits; in ext4_add_entry()
2184 bh = ext4_read_dirblock(dir, block, DIRENT); in ext4_add_entry()
2200 bh = ext4_append(handle, dir, &block); in ext4_add_entry()
2230 struct inode *dir = d_inode(dentry->d_parent); in ext4_dx_add_entry() local
2231 struct super_block *sb = dir->i_sb; in ext4_dx_add_entry()
2235 frame = dx_probe(&dentry->d_name, dir, &hinfo, frames); in ext4_dx_add_entry()
2240 bh = ext4_read_dirblock(dir, dx_get_block(frame->at), DIRENT); in ext4_dx_add_entry()
2274 bh2 = ext4_append(handle, dir, &newblock); in ext4_dx_add_entry()
2304 dx_set_limit(entries2, dx_node_limit(dir)); in ext4_dx_add_entry()
2316 err = ext4_handle_dirty_dx_node(handle, dir, bh2); in ext4_dx_add_entry()
2325 dx_set_limit(entries2, dx_node_limit(dir)); 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()
2357 ext4_std_error(dir->i_sb, err); in ext4_dx_add_entry()
2369 struct inode *dir, in ext4_generic_delete_entry() argument
2377 unsigned int blocksize = dir->i_sb->s_blocksize; in ext4_generic_delete_entry()
2384 if (ext4_check_dir_entry(dir, NULL, de, bh, in ext4_generic_delete_entry()
2397 dir->i_version++; in ext4_generic_delete_entry()
2408 struct inode *dir, in ext4_delete_entry() argument
2414 if (ext4_has_inline_data(dir)) { in ext4_delete_entry()
2416 err = ext4_delete_inline_entry(handle, dir, de_del, bh, in ext4_delete_entry()
2422 if (ext4_has_metadata_csum(dir->i_sb)) in ext4_delete_entry()
2430 err = ext4_generic_delete_entry(handle, dir, de_del, in ext4_delete_entry()
2432 dir->i_sb->s_blocksize, csum_size); in ext4_delete_entry()
2437 err = ext4_handle_dirty_dirent_node(handle, dir, bh); in ext4_delete_entry()
2444 ext4_std_error(dir->i_sb, err); in ext4_delete_entry()
2500 static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode, in ext4_create() argument
2507 dquot_initialize(dir); in ext4_create()
2509 credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + in ext4_create()
2512 inode = ext4_new_inode_start_handle(dir, mode, &dentry->d_name, 0, in ext4_create()
2522 if (!err && (ext4_encrypted_inode(dir) || in ext4_create()
2523 DUMMY_ENCRYPTION_ENABLED(EXT4_SB(dir->i_sb)))) { in ext4_create()
2524 err = ext4_inherit_context(dir, inode); in ext4_create()
2534 if (!err && IS_DIRSYNC(dir)) in ext4_create()
2539 if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) in ext4_create()
2544 static int ext4_mknod(struct inode *dir, struct dentry *dentry, in ext4_mknod() argument
2554 dquot_initialize(dir); in ext4_mknod()
2556 credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + in ext4_mknod()
2559 inode = ext4_new_inode_start_handle(dir, mode, &dentry->d_name, 0, in ext4_mknod()
2567 if (!err && IS_DIRSYNC(dir)) in ext4_mknod()
2572 if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) in ext4_mknod()
2577 static int ext4_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in ext4_tmpfile() argument
2583 dquot_initialize(dir); in ext4_tmpfile()
2586 inode = ext4_new_inode_start_handle(dir, mode, in ext4_tmpfile()
2589 EXT4_MAXQUOTAS_INIT_BLOCKS(dir->i_sb) + in ext4_tmpfile()
2606 if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) in ext4_tmpfile()
2643 static int ext4_init_new_dir(handle_t *handle, struct inode *dir, in ext4_init_new_dir() argument
2650 unsigned int blocksize = dir->i_sb->s_blocksize; in ext4_init_new_dir()
2654 if (ext4_has_metadata_csum(dir->i_sb)) in ext4_init_new_dir()
2658 err = ext4_try_create_inline_dir(handle, dir, inode); in ext4_init_new_dir()
2670 ext4_init_dot_dotdot(inode, de, blocksize, csum_size, dir->i_ino, 0); in ext4_init_new_dir()
2687 static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in ext4_mkdir() argument
2693 if (EXT4_DIR_LINK_MAX(dir)) in ext4_mkdir()
2696 dquot_initialize(dir); in ext4_mkdir()
2698 credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + in ext4_mkdir()
2701 inode = ext4_new_inode_start_handle(dir, S_IFDIR | mode, in ext4_mkdir()
2711 err = ext4_init_new_dir(handle, dir, inode); in ext4_mkdir()
2715 if (ext4_encrypted_inode(dir) || in ext4_mkdir()
2716 DUMMY_ENCRYPTION_ENABLED(EXT4_SB(dir->i_sb))) { in ext4_mkdir()
2717 err = ext4_inherit_context(dir, inode); in ext4_mkdir()
2733 ext4_inc_count(handle, dir); in ext4_mkdir()
2734 ext4_update_dx_flag(dir); in ext4_mkdir()
2735 err = ext4_mark_inode_dirty(handle, dir); in ext4_mkdir()
2740 if (IS_DIRSYNC(dir)) in ext4_mkdir()
2746 if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) in ext4_mkdir()
2995 static int ext4_rmdir(struct inode *dir, struct dentry *dentry) in ext4_rmdir() argument
3005 dquot_initialize(dir); in ext4_rmdir()
3009 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_rmdir()
3025 handle = ext4_journal_start(dir, EXT4_HT_DIR, in ext4_rmdir()
3026 EXT4_DATA_TRANS_BLOCKS(dir->i_sb)); in ext4_rmdir()
3033 if (IS_DIRSYNC(dir)) in ext4_rmdir()
3036 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_rmdir()
3050 inode->i_ctime = dir->i_ctime = dir->i_mtime = ext4_current_time(inode); in ext4_rmdir()
3052 ext4_dec_count(handle, dir); in ext4_rmdir()
3053 ext4_update_dx_flag(dir); in ext4_rmdir()
3054 ext4_mark_inode_dirty(handle, dir); in ext4_rmdir()
3063 static int ext4_unlink(struct inode *dir, struct dentry *dentry) in ext4_unlink() argument
3071 trace_ext4_unlink_enter(dir, dentry); in ext4_unlink()
3074 dquot_initialize(dir); in ext4_unlink()
3078 bh = ext4_find_entry(dir, &dentry->d_name, &de, NULL); in ext4_unlink()
3090 handle = ext4_journal_start(dir, EXT4_HT_DIR, in ext4_unlink()
3091 EXT4_DATA_TRANS_BLOCKS(dir->i_sb)); in ext4_unlink()
3098 if (IS_DIRSYNC(dir)) in ext4_unlink()
3107 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_unlink()
3110 dir->i_ctime = dir->i_mtime = ext4_current_time(dir); in ext4_unlink()
3111 ext4_update_dx_flag(dir); in ext4_unlink()
3112 ext4_mark_inode_dirty(handle, dir); in ext4_unlink()
3127 static int ext4_symlink(struct inode *dir, in ext4_symlink() argument
3141 encryption_required = (ext4_encrypted_inode(dir) || in ext4_symlink()
3142 DUMMY_ENCRYPTION_ENABLED(EXT4_SB(dir->i_sb))); in ext4_symlink()
3145 if (disk_link.len > dir->i_sb->s_blocksize) in ext4_symlink()
3148 dquot_initialize(dir); in ext4_symlink()
3157 credits = 4 + EXT4_MAXQUOTAS_INIT_BLOCKS(dir->i_sb) + in ext4_symlink()
3166 credits = EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + in ext4_symlink()
3170 inode = ext4_new_inode_start_handle(dir, S_IFLNK|S_IRWXUGO, in ext4_symlink()
3190 err = ext4_inherit_context(dir, inode); in ext4_symlink()
3237 handle = ext4_journal_start(dir, EXT4_HT_DIR, in ext4_symlink()
3238 EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + in ext4_symlink()
3261 if (!err && IS_DIRSYNC(dir)) in ext4_symlink()
3279 struct inode *dir, struct dentry *dentry) in ext4_link() argument
3287 if (ext4_encrypted_inode(dir) && in ext4_link()
3288 !ext4_is_child_context_consistent_with_parent(dir, inode)) in ext4_link()
3290 dquot_initialize(dir); in ext4_link()
3293 handle = ext4_journal_start(dir, EXT4_HT_DIR, in ext4_link()
3294 (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + in ext4_link()
3299 if (IS_DIRSYNC(dir)) in ext4_link()
3320 if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) in ext4_link()
3356 struct inode *dir; member
3382 if (le32_to_cpu(ent->parent_de->inode) != ent->dir->i_ino) in ext4_rename_dir_prepare()
3409 ext4_std_error(ent->dir->i_sb, retval); in ext4_rename_dir_finish()
3425 if (EXT4_HAS_INCOMPAT_FEATURE(ent->dir->i_sb, in ext4_setent()
3428 ent->dir->i_version++; in ext4_setent()
3429 ent->dir->i_ctime = ent->dir->i_mtime = in ext4_setent()
3430 ext4_current_time(ent->dir); in ext4_setent()
3431 ext4_mark_inode_dirty(handle, ent->dir); in ext4_setent()
3435 ent->dir, ent->bh); in ext4_setent()
3437 ext4_std_error(ent->dir->i_sb, retval); in ext4_setent()
3447 static int ext4_find_delete_entry(handle_t *handle, struct inode *dir, in ext4_find_delete_entry() argument
3454 bh = ext4_find_entry(dir, d_name, &de, NULL); in ext4_find_delete_entry()
3458 retval = ext4_delete_entry(handle, dir, de, bh); in ext4_find_delete_entry()
3479 retval = ext4_find_delete_entry(handle, ent->dir, in ext4_rename_delete()
3482 retval = ext4_delete_entry(handle, ent->dir, ent->de, ent->bh); in ext4_rename_delete()
3484 retval = ext4_find_delete_entry(handle, ent->dir, in ext4_rename_delete()
3490 ext4_warning(ent->dir->i_sb, in ext4_rename_delete()
3492 ent->dir->i_ino, ent->dir->i_nlink, retval); in ext4_rename_delete()
3500 ext4_dec_count(handle, ent->dir); in ext4_update_dir_count()
3502 ext4_inc_count(handle, ent->dir); in ext4_update_dir_count()
3503 ext4_mark_inode_dirty(handle, ent->dir); in ext4_update_dir_count()
3518 credits += (EXT4_MAXQUOTAS_TRANS_BLOCKS(ent->dir->i_sb) + in ext4_whiteout_for_rename()
3521 wh = ext4_new_inode_start_handle(ent->dir, S_IFCHR | WHITEOUT_MODE, in ext4_whiteout_for_rename()
3530 ext4_should_retry_alloc(ent->dir->i_sb, &retries)) in ext4_whiteout_for_rename()
3554 .dir = old_dir, in ext4_rename()
3559 .dir = new_dir, in ext4_rename()
3569 dquot_initialize(old.dir); in ext4_rename()
3570 dquot_initialize(new.dir); in ext4_rename()
3577 old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, &old.de, NULL); in ext4_rename()
3590 if ((old.dir != new.dir) && in ext4_rename()
3591 ext4_encrypted_inode(new.dir) && in ext4_rename()
3592 !ext4_is_child_context_consistent_with_parent(new.dir, in ext4_rename()
3598 new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, in ext4_rename()
3611 if (new.inode && !test_opt(new.dir->i_sb, NO_AUTO_DA_ALLOC)) in ext4_rename()
3614 credits = (2 * EXT4_DATA_TRANS_BLOCKS(old.dir->i_sb) + in ext4_rename()
3617 handle = ext4_journal_start(old.dir, EXT4_HT_DIR, credits); in ext4_rename()
3632 if (IS_DIRSYNC(old.dir) || IS_DIRSYNC(new.dir)) in ext4_rename()
3642 if (new.dir != old.dir && EXT4_DIR_LINK_MAX(new.dir)) in ext4_rename()
3656 force_reread = (new.dir->i_ino == old.dir->i_ino && in ext4_rename()
3657 ext4_test_inode_flag(new.dir, EXT4_INODE_INLINE_DATA)); in ext4_rename()
3682 force_reread = !ext4_test_inode_flag(new.dir, in ext4_rename()
3703 old.dir->i_ctime = old.dir->i_mtime = ext4_current_time(old.dir); in ext4_rename()
3704 ext4_update_dx_flag(old.dir); in ext4_rename()
3706 retval = ext4_rename_dir_finish(handle, &old, new.dir->i_ino); in ext4_rename()
3710 ext4_dec_count(handle, old.dir); in ext4_rename()
3717 ext4_inc_count(handle, new.dir); in ext4_rename()
3718 ext4_update_dx_flag(new.dir); in ext4_rename()
3719 ext4_mark_inode_dirty(handle, new.dir); in ext4_rename()
3722 ext4_mark_inode_dirty(handle, old.dir); in ext4_rename()
3750 .dir = old_dir, in ext4_cross_rename()
3755 .dir = new_dir, in ext4_cross_rename()
3762 dquot_initialize(old.dir); in ext4_cross_rename()
3763 dquot_initialize(new.dir); in ext4_cross_rename()
3765 old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, in ext4_cross_rename()
3779 new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, in ext4_cross_rename()
3791 handle = ext4_journal_start(old.dir, EXT4_HT_DIR, in ext4_cross_rename()
3792 (2 * EXT4_DATA_TRANS_BLOCKS(old.dir->i_sb) + in ext4_cross_rename()
3800 if (IS_DIRSYNC(old.dir) || IS_DIRSYNC(new.dir)) in ext4_cross_rename()
3820 if (old.dir != new.dir && old.is_dir != new.is_dir) { in ext4_cross_rename()
3824 if ((old.dir_nlink_delta > 0 && EXT4_DIR_LINK_MAX(old.dir)) || in ext4_cross_rename()
3825 (new.dir_nlink_delta > 0 && EXT4_DIR_LINK_MAX(new.dir))) in ext4_cross_rename()
3848 retval = ext4_rename_dir_finish(handle, &old, new.dir->i_ino); in ext4_cross_rename()
3853 retval = ext4_rename_dir_finish(handle, &new, old.dir->i_ino); in ext4_cross_rename()