Lines Matching refs:dir

150 static struct f2fs_dir_entry *find_in_level(struct inode *dir,  in find_in_level()  argument
165 nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); in find_in_level()
168 bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, in find_in_level()
174 dentry_page = f2fs_find_data_page(dir, bidx); 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()
203 struct f2fs_dir_entry *__f2fs_find_entry(struct inode *dir, in __f2fs_find_entry() argument
206 unsigned long npages = dir_blocks(dir); in __f2fs_find_entry()
211 if (f2fs_has_inline_dentry(dir)) { in __f2fs_find_entry()
213 de = f2fs_find_in_inline_dir(dir, fname, res_page); in __f2fs_find_entry()
222 max_depth = F2FS_I(dir)->i_current_depth; in __f2fs_find_entry()
224 f2fs_msg(F2FS_I_SB(dir)->sb, KERN_WARNING, in __f2fs_find_entry()
226 dir->i_ino, max_depth); in __f2fs_find_entry()
228 f2fs_i_depth_write(dir, max_depth); in __f2fs_find_entry()
233 de = find_in_level(dir, level, fname, res_page); in __f2fs_find_entry()
240 F2FS_I(dir)->task = current; in __f2fs_find_entry()
250 struct f2fs_dir_entry *f2fs_find_entry(struct inode *dir, in f2fs_find_entry() argument
257 err = fscrypt_setup_filename(dir, child, 1, &fname); in f2fs_find_entry()
266 de = __f2fs_find_entry(dir, &fname, res_page); in f2fs_find_entry()
272 struct f2fs_dir_entry *f2fs_parent_dir(struct inode *dir, struct page **p) in f2fs_parent_dir() argument
276 return f2fs_find_entry(dir, &dotdot, p); in f2fs_parent_dir()
279 ino_t f2fs_inode_by_name(struct inode *dir, const struct qstr *qstr, in f2fs_inode_by_name() argument
285 de = f2fs_find_entry(dir, qstr, page); in f2fs_inode_by_name()
294 void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de, in f2fs_set_link() argument
297 enum page_type type = f2fs_has_inline_dentry(dir) ? NODE : DATA; in f2fs_set_link()
304 dir->i_mtime = dir->i_ctime = current_time(dir); in f2fs_set_link()
305 f2fs_mark_inode_dirty_sync(dir, false); in f2fs_set_link()
359 struct page *f2fs_init_inode_metadata(struct inode *inode, struct inode *dir, in f2fs_init_inode_metadata() argument
364 int dummy_encrypt = DUMMY_ENCRYPTION_ENABLED(F2FS_I_SB(dir)); in f2fs_init_inode_metadata()
375 err = make_empty_dir(inode, dir, page); in f2fs_init_inode_metadata()
383 err = f2fs_init_acl(inode, dir, page, dpage); in f2fs_init_inode_metadata()
387 err = f2fs_init_security(inode, dir, orig_name, page); in f2fs_init_inode_metadata()
391 if ((f2fs_encrypted_inode(dir) || dummy_encrypt) && in f2fs_init_inode_metadata()
393 err = fscrypt_inherit_context(dir, inode, page, false); in f2fs_init_inode_metadata()
398 page = f2fs_get_node_page(F2FS_I_SB(dir), inode->i_ino); in f2fs_init_inode_metadata()
405 if (f2fs_encrypted_inode(dir)) in f2fs_init_inode_metadata()
421 f2fs_remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino); in f2fs_init_inode_metadata()
433 void f2fs_update_parent_metadata(struct inode *dir, struct inode *inode, in f2fs_update_parent_metadata() argument
438 f2fs_i_links_write(dir, true); in f2fs_update_parent_metadata()
441 dir->i_mtime = dir->i_ctime = current_time(dir); in f2fs_update_parent_metadata()
442 f2fs_mark_inode_dirty_sync(dir, false); in f2fs_update_parent_metadata()
444 if (F2FS_I(dir)->i_current_depth != current_depth) in f2fs_update_parent_metadata()
445 f2fs_i_depth_write(dir, current_depth); in f2fs_update_parent_metadata()
493 int f2fs_add_regular_entry(struct inode *dir, const struct qstr *new_name, in f2fs_add_regular_entry() argument
513 current_depth = F2FS_I(dir)->i_current_depth; in f2fs_add_regular_entry()
514 if (F2FS_I(dir)->chash == dentry_hash) { in f2fs_add_regular_entry()
515 level = F2FS_I(dir)->clevel; in f2fs_add_regular_entry()
516 F2FS_I(dir)->chash = 0; in f2fs_add_regular_entry()
520 if (time_to_inject(F2FS_I_SB(dir), FAULT_DIR_DEPTH)) { in f2fs_add_regular_entry()
532 nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); in f2fs_add_regular_entry()
535 bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, in f2fs_add_regular_entry()
539 dentry_page = f2fs_get_new_data_page(dir, NULL, block, true); in f2fs_add_regular_entry()
560 page = f2fs_init_inode_metadata(inode, dir, new_name, in f2fs_add_regular_entry()
574 f2fs_i_pino_write(inode, dir->i_ino); in f2fs_add_regular_entry()
578 f2fs_update_parent_metadata(dir, inode, current_depth); in f2fs_add_regular_entry()
588 int f2fs_add_dentry(struct inode *dir, struct fscrypt_name *fname, in f2fs_add_dentry() argument
597 if (f2fs_has_inline_dentry(dir)) in f2fs_add_dentry()
598 err = f2fs_add_inline_entry(dir, &new_name, fname->usr_fname, in f2fs_add_dentry()
601 err = f2fs_add_regular_entry(dir, &new_name, fname->usr_fname, in f2fs_add_dentry()
604 f2fs_update_time(F2FS_I_SB(dir), REQ_TIME); in f2fs_add_dentry()
612 int f2fs_do_add_link(struct inode *dir, const struct qstr *name, in f2fs_do_add_link() argument
620 err = fscrypt_setup_filename(dir, name, 0, &fname); in f2fs_do_add_link()
631 if (current != F2FS_I(dir)->task) { in f2fs_do_add_link()
632 de = __f2fs_find_entry(dir, &fname, &page); in f2fs_do_add_link()
633 F2FS_I(dir)->task = NULL; in f2fs_do_add_link()
641 err = f2fs_add_dentry(dir, &fname, inode, ino, mode); in f2fs_do_add_link()
647 int f2fs_do_tmpfile(struct inode *inode, struct inode *dir) in f2fs_do_tmpfile() argument
653 page = f2fs_init_inode_metadata(inode, dir, NULL, NULL, NULL); in f2fs_do_tmpfile()
667 void f2fs_drop_nlink(struct inode *dir, struct inode *inode) in f2fs_drop_nlink() argument
669 struct f2fs_sb_info *sbi = F2FS_I_SB(dir); in f2fs_drop_nlink()
674 f2fs_i_links_write(dir, false); in f2fs_drop_nlink()
695 struct inode *dir, struct inode *inode) in f2fs_delete_entry() argument
702 f2fs_update_time(F2FS_I_SB(dir), REQ_TIME); in f2fs_delete_entry()
704 if (F2FS_OPTION(F2FS_I_SB(dir)).fsync_mode == FSYNC_MODE_STRICT) in f2fs_delete_entry()
705 f2fs_add_ino_entry(F2FS_I_SB(dir), dir->i_ino, TRANS_DIR_INO); in f2fs_delete_entry()
707 if (f2fs_has_inline_dentry(dir)) in f2fs_delete_entry()
708 return f2fs_delete_inline_entry(dentry, page, dir, inode); in f2fs_delete_entry()
724 dir->i_ctime = dir->i_mtime = current_time(dir); in f2fs_delete_entry()
725 f2fs_mark_inode_dirty_sync(dir, false); in f2fs_delete_entry()
728 f2fs_drop_nlink(dir, inode); in f2fs_delete_entry()
731 !f2fs_truncate_hole(dir, page->index, page->index + 1)) { in f2fs_delete_entry()
736 inode_dec_dirty_pages(dir); in f2fs_delete_entry()
737 f2fs_remove_dirty_inode(dir); in f2fs_delete_entry()
742 bool f2fs_empty_dir(struct inode *dir) in f2fs_empty_dir() argument
748 unsigned long nblock = dir_blocks(dir); in f2fs_empty_dir()
750 if (f2fs_has_inline_dentry(dir)) in f2fs_empty_dir()
751 return f2fs_empty_inline_dir(dir); in f2fs_empty_dir()
754 dentry_page = f2fs_get_lock_data_page(dir, bidx, false); in f2fs_empty_dir()