Lines Matching refs:dir

157 static struct f2fs_dir_entry *find_in_level(struct inode *dir,  in find_in_level()  argument
169 f2fs_bug_on(F2FS_I_SB(dir), level > MAX_DIR_HASH_DEPTH); in find_in_level()
171 nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); in find_in_level()
174 bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, in find_in_level()
180 dentry_page = find_data_page(dir, bidx, true); in find_in_level()
195 if (!de && room && F2FS_I(dir)->chash != namehash) { in find_in_level()
196 F2FS_I(dir)->chash = namehash; in find_in_level()
197 F2FS_I(dir)->clevel = level; in find_in_level()
209 struct f2fs_dir_entry *f2fs_find_entry(struct inode *dir, in f2fs_find_entry() argument
212 unsigned long npages = dir_blocks(dir); in f2fs_find_entry()
220 if (f2fs_has_inline_dentry(dir)) in f2fs_find_entry()
221 return find_in_inline_dir(dir, child, res_page); in f2fs_find_entry()
227 max_depth = F2FS_I(dir)->i_current_depth; in f2fs_find_entry()
230 de = find_in_level(dir, level, child, name_hash, res_page); in f2fs_find_entry()
234 if (!de && F2FS_I(dir)->chash != name_hash) { in f2fs_find_entry()
235 F2FS_I(dir)->chash = name_hash; in f2fs_find_entry()
236 F2FS_I(dir)->clevel = level - 1; in f2fs_find_entry()
241 struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct page **p) in f2fs_parent_dir() argument
247 if (f2fs_has_inline_dentry(dir)) in f2fs_parent_dir()
248 return f2fs_parent_inline_dir(dir, p); in f2fs_parent_dir()
250 page = get_lock_data_page(dir, 0); in f2fs_parent_dir()
261 ino_t f2fs_inode_by_name(struct inode *dir, struct qstr *qstr) in f2fs_inode_by_name() argument
267 de = f2fs_find_entry(dir, qstr, &page); in f2fs_inode_by_name()
270 f2fs_dentry_kunmap(dir, page); in f2fs_inode_by_name()
277 void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de, in f2fs_set_link() argument
280 enum page_type type = f2fs_has_inline_dentry(dir) ? NODE : DATA; in f2fs_set_link()
285 f2fs_dentry_kunmap(dir, page); in f2fs_set_link()
287 dir->i_mtime = dir->i_ctime = CURRENT_TIME; in f2fs_set_link()
288 mark_inode_dirty(dir); in f2fs_set_link()
369 struct page *init_inode_metadata(struct inode *inode, struct inode *dir, in init_inode_metadata() argument
381 err = make_empty_dir(inode, dir, page); in init_inode_metadata()
386 err = f2fs_init_acl(inode, dir, page, dpage); in init_inode_metadata()
390 err = f2fs_init_security(inode, dir, name, page); in init_inode_metadata()
394 page = get_node_page(F2FS_I_SB(dir), inode->i_ino); in init_inode_metadata()
415 remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino); in init_inode_metadata()
431 void update_parent_metadata(struct inode *dir, struct inode *inode, in update_parent_metadata() argument
436 inc_nlink(dir); in update_parent_metadata()
437 set_inode_flag(F2FS_I(dir), FI_UPDATE_DIR); in update_parent_metadata()
441 dir->i_mtime = dir->i_ctime = CURRENT_TIME; in update_parent_metadata()
442 mark_inode_dirty(dir); in update_parent_metadata()
444 if (F2FS_I(dir)->i_current_depth != current_depth) { in update_parent_metadata()
445 F2FS_I(dir)->i_current_depth = current_depth; in update_parent_metadata()
446 set_inode_flag(F2FS_I(dir), FI_UPDATE_DIR); in update_parent_metadata()
495 int __f2fs_add_link(struct inode *dir, const struct qstr *name, in __f2fs_add_link() argument
512 if (f2fs_has_inline_dentry(dir)) { in __f2fs_add_link()
513 err = f2fs_add_inline_entry(dir, name, inode, ino, mode); in __f2fs_add_link()
522 current_depth = F2FS_I(dir)->i_current_depth; in __f2fs_add_link()
523 if (F2FS_I(dir)->chash == dentry_hash) { in __f2fs_add_link()
524 level = F2FS_I(dir)->clevel; in __f2fs_add_link()
525 F2FS_I(dir)->chash = 0; in __f2fs_add_link()
536 nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); in __f2fs_add_link()
539 bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, in __f2fs_add_link()
543 dentry_page = get_new_data_page(dir, NULL, block, true); in __f2fs_add_link()
565 page = init_inode_metadata(inode, dir, name, NULL); in __f2fs_add_link()
579 F2FS_I(inode)->i_pino = dir->i_ino; in __f2fs_add_link()
584 update_parent_metadata(dir, inode, current_depth); in __f2fs_add_link()
589 if (is_inode_flag_set(F2FS_I(dir), FI_UPDATE_DIR)) { in __f2fs_add_link()
590 update_inode_page(dir); in __f2fs_add_link()
591 clear_inode_flag(F2FS_I(dir), FI_UPDATE_DIR); in __f2fs_add_link()
598 int f2fs_do_tmpfile(struct inode *inode, struct inode *dir) in f2fs_do_tmpfile() argument
604 page = init_inode_metadata(inode, dir, NULL, NULL); in f2fs_do_tmpfile()
619 void f2fs_drop_nlink(struct inode *dir, struct inode *inode, struct page *page) in f2fs_drop_nlink() argument
621 struct f2fs_sb_info *sbi = F2FS_I_SB(dir); in f2fs_drop_nlink()
626 drop_nlink(dir); in f2fs_drop_nlink()
628 update_inode(dir, page); in f2fs_drop_nlink()
630 update_inode_page(dir); in f2fs_drop_nlink()
653 struct inode *dir, struct inode *inode) in f2fs_delete_entry() argument
660 if (f2fs_has_inline_dentry(dir)) in f2fs_delete_entry()
661 return f2fs_delete_inline_entry(dentry, page, dir, inode); in f2fs_delete_entry()
678 dir->i_ctime = dir->i_mtime = CURRENT_TIME; in f2fs_delete_entry()
681 f2fs_drop_nlink(dir, inode, NULL); in f2fs_delete_entry()
684 truncate_hole(dir, page->index, page->index + 1); in f2fs_delete_entry()
688 inode_dec_dirty_pages(dir); in f2fs_delete_entry()
693 bool f2fs_empty_dir(struct inode *dir) in f2fs_empty_dir() argument
699 unsigned long nblock = dir_blocks(dir); in f2fs_empty_dir()
701 if (f2fs_has_inline_dentry(dir)) in f2fs_empty_dir()
702 return f2fs_empty_inline_dir(dir); in f2fs_empty_dir()
705 dentry_page = get_lock_data_page(dir, bidx); in f2fs_empty_dir()