Lines Matching refs:dir
158 static struct f2fs_dir_entry *find_in_level(struct inode *dir, in find_in_level() argument
175 f2fs_bug_on(F2FS_I_SB(dir), level > MAX_DIR_HASH_DEPTH); in find_in_level()
177 nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); in find_in_level()
180 bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, in find_in_level()
186 dentry_page = find_data_page(dir, bidx); in find_in_level()
202 if (!de && room && F2FS_I(dir)->chash != namehash) { in find_in_level()
203 F2FS_I(dir)->chash = namehash; in find_in_level()
204 F2FS_I(dir)->clevel = level; in find_in_level()
216 struct f2fs_dir_entry *f2fs_find_entry(struct inode *dir, in f2fs_find_entry() argument
219 unsigned long npages = dir_blocks(dir); in f2fs_find_entry()
228 err = f2fs_fname_setup_filename(dir, child, 1, &fname); in f2fs_find_entry()
232 if (f2fs_has_inline_dentry(dir)) { in f2fs_find_entry()
233 de = find_in_inline_dir(dir, &fname, res_page); in f2fs_find_entry()
240 max_depth = F2FS_I(dir)->i_current_depth; in f2fs_find_entry()
243 de = find_in_level(dir, level, &fname, res_page); in f2fs_find_entry()
252 struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct page **p) in f2fs_parent_dir() argument
258 if (f2fs_has_inline_dentry(dir)) in f2fs_parent_dir()
259 return f2fs_parent_inline_dir(dir, p); in f2fs_parent_dir()
261 page = get_lock_data_page(dir, 0, false); in f2fs_parent_dir()
272 ino_t f2fs_inode_by_name(struct inode *dir, struct qstr *qstr) in f2fs_inode_by_name() argument
278 de = f2fs_find_entry(dir, qstr, &page); in f2fs_inode_by_name()
281 f2fs_dentry_kunmap(dir, page); in f2fs_inode_by_name()
288 void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de, in f2fs_set_link() argument
291 enum page_type type = f2fs_has_inline_dentry(dir) ? NODE : DATA; in f2fs_set_link()
296 f2fs_dentry_kunmap(dir, page); in f2fs_set_link()
298 dir->i_mtime = dir->i_ctime = CURRENT_TIME; in f2fs_set_link()
299 mark_inode_dirty(dir); in f2fs_set_link()
384 struct page *init_inode_metadata(struct inode *inode, struct inode *dir, in init_inode_metadata() argument
396 err = make_empty_dir(inode, dir, page); in init_inode_metadata()
401 err = f2fs_init_acl(inode, dir, page, dpage); in init_inode_metadata()
405 err = f2fs_init_security(inode, dir, name, page); in init_inode_metadata()
409 if (f2fs_encrypted_inode(dir) && f2fs_may_encrypt(inode)) { in init_inode_metadata()
410 err = f2fs_inherit_context(dir, inode, page); in init_inode_metadata()
415 page = get_node_page(F2FS_I_SB(dir), inode->i_ino); in init_inode_metadata()
436 remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino); in init_inode_metadata()
452 void update_parent_metadata(struct inode *dir, struct inode *inode, in update_parent_metadata() argument
457 inc_nlink(dir); in update_parent_metadata()
458 set_inode_flag(F2FS_I(dir), FI_UPDATE_DIR); in update_parent_metadata()
462 dir->i_mtime = dir->i_ctime = CURRENT_TIME; in update_parent_metadata()
463 mark_inode_dirty(dir); in update_parent_metadata()
465 if (F2FS_I(dir)->i_current_depth != current_depth) { in update_parent_metadata()
466 F2FS_I(dir)->i_current_depth = current_depth; in update_parent_metadata()
467 set_inode_flag(F2FS_I(dir), FI_UPDATE_DIR); in update_parent_metadata()
516 int __f2fs_add_link(struct inode *dir, const struct qstr *name, in __f2fs_add_link() argument
533 err = f2fs_fname_setup_filename(dir, name, 0, &fname); in __f2fs_add_link()
540 if (f2fs_has_inline_dentry(dir)) { in __f2fs_add_link()
541 err = f2fs_add_inline_entry(dir, &new_name, inode, ino, mode); in __f2fs_add_link()
552 current_depth = F2FS_I(dir)->i_current_depth; in __f2fs_add_link()
553 if (F2FS_I(dir)->chash == dentry_hash) { in __f2fs_add_link()
554 level = F2FS_I(dir)->clevel; in __f2fs_add_link()
555 F2FS_I(dir)->chash = 0; in __f2fs_add_link()
568 nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); in __f2fs_add_link()
571 bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, in __f2fs_add_link()
575 dentry_page = get_new_data_page(dir, NULL, block, true); in __f2fs_add_link()
599 page = init_inode_metadata(inode, dir, &new_name, NULL); in __f2fs_add_link()
604 if (f2fs_encrypted_inode(dir)) in __f2fs_add_link()
615 F2FS_I(inode)->i_pino = dir->i_ino; in __f2fs_add_link()
620 update_parent_metadata(dir, inode, current_depth); in __f2fs_add_link()
625 if (is_inode_flag_set(F2FS_I(dir), FI_UPDATE_DIR)) { in __f2fs_add_link()
626 update_inode_page(dir); in __f2fs_add_link()
627 clear_inode_flag(F2FS_I(dir), FI_UPDATE_DIR); in __f2fs_add_link()
636 int f2fs_do_tmpfile(struct inode *inode, struct inode *dir) in f2fs_do_tmpfile() argument
642 page = init_inode_metadata(inode, dir, NULL, NULL); in f2fs_do_tmpfile()
657 void f2fs_drop_nlink(struct inode *dir, struct inode *inode, struct page *page) in f2fs_drop_nlink() argument
659 struct f2fs_sb_info *sbi = F2FS_I_SB(dir); in f2fs_drop_nlink()
664 drop_nlink(dir); in f2fs_drop_nlink()
666 update_inode(dir, page); in f2fs_drop_nlink()
668 update_inode_page(dir); in f2fs_drop_nlink()
691 struct inode *dir, struct inode *inode) in f2fs_delete_entry() argument
698 if (f2fs_has_inline_dentry(dir)) in f2fs_delete_entry()
699 return f2fs_delete_inline_entry(dentry, page, dir, inode); in f2fs_delete_entry()
716 dir->i_ctime = dir->i_mtime = CURRENT_TIME; in f2fs_delete_entry()
719 f2fs_drop_nlink(dir, inode, NULL); in f2fs_delete_entry()
722 !truncate_hole(dir, page->index, page->index + 1)) { in f2fs_delete_entry()
726 inode_dec_dirty_pages(dir); in f2fs_delete_entry()
731 bool f2fs_empty_dir(struct inode *dir) in f2fs_empty_dir() argument
737 unsigned long nblock = dir_blocks(dir); in f2fs_empty_dir()
739 if (f2fs_has_inline_dentry(dir)) in f2fs_empty_dir()
740 return f2fs_empty_inline_dir(dir); in f2fs_empty_dir()
743 dentry_page = get_lock_data_page(dir, bidx, false); in f2fs_empty_dir()