Lines Matching refs:dir
353 struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir,
358 struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb);
364 ipage = f2fs_get_node_page(sbi, dir->i_ino);
370 inline_dentry = inline_data_addr(dir, ipage);
372 make_dentry_ptr_inline(dir, &d, inline_dentry);
410 static int f2fs_move_inline_dirents(struct inode *dir, struct page *ipage,
419 page = f2fs_grab_cache_page(dir->i_mapping, 0, true);
425 set_new_dnode(&dn, dir, ipage, NULL, 0);
434 __func__, dir->i_ino, dn.data_blkaddr);
450 make_dentry_ptr_inline(dir, &src, inline_dentry);
451 make_dentry_ptr_block(dir, &dst, dentry_blk);
462 /* clear inline dir and flag after data writeback */
463 f2fs_truncate_inline_inode(dir, ipage, 0);
465 stat_dec_inline_dir(dir);
466 clear_inode_flag(dir, FI_INLINE_DENTRY);
472 if (!f2fs_sb_has_flexible_inline_xattr(F2FS_I_SB(dir)) &&
473 !f2fs_has_inline_xattr(dir))
474 F2FS_I(dir)->i_inline_xattr_size = 0;
476 f2fs_i_depth_write(dir, 1);
477 if (i_size_read(dir) < PAGE_SIZE)
478 f2fs_i_size_write(dir, PAGE_SIZE);
484 static int f2fs_add_inline_entries(struct inode *dir, void *inline_dentry)
490 make_dentry_ptr_inline(dir, &d, inline_dentry);
522 err = f2fs_add_regular_entry(dir, &fname, NULL, ino, fake_mode);
530 truncate_inode_pages(&dir->i_data, 0);
531 f2fs_truncate_blocks(dir, 0, false);
532 f2fs_remove_dirty_inode(dir);
536 static int f2fs_move_rehashed_dirents(struct inode *dir, struct page *ipage,
542 backup_dentry = f2fs_kmalloc(F2FS_I_SB(dir),
543 MAX_INLINE_DATA(dir), GFP_F2FS_ZERO);
549 memcpy(backup_dentry, inline_dentry, MAX_INLINE_DATA(dir));
550 f2fs_truncate_inline_inode(dir, ipage, 0);
554 err = f2fs_add_inline_entries(dir, backup_dentry);
560 stat_dec_inline_dir(dir);
561 clear_inode_flag(dir, FI_INLINE_DENTRY);
567 if (!f2fs_sb_has_flexible_inline_xattr(F2FS_I_SB(dir)) &&
568 !f2fs_has_inline_xattr(dir))
569 F2FS_I(dir)->i_inline_xattr_size = 0;
576 memcpy(inline_dentry, backup_dentry, MAX_INLINE_DATA(dir));
577 f2fs_i_depth_write(dir, 0);
578 f2fs_i_size_write(dir, MAX_INLINE_DATA(dir));
586 static int do_convert_inline_dir(struct inode *dir, struct page *ipage,
589 if (!F2FS_I(dir)->i_dir_level)
590 return f2fs_move_inline_dirents(dir, ipage, inline_dentry);
592 return f2fs_move_rehashed_dirents(dir, ipage, inline_dentry);
595 int f2fs_try_convert_inline_dir(struct inode *dir, struct dentry *dentry)
597 struct f2fs_sb_info *sbi = F2FS_I_SB(dir);
603 if (!f2fs_has_inline_dentry(dir))
608 err = f2fs_setup_filename(dir, &dentry->d_name, 0, &fname);
612 ipage = f2fs_get_node_page(sbi, dir->i_ino);
618 if (f2fs_has_enough_room(dir, ipage, &fname)) {
623 inline_dentry = inline_data_addr(dir, ipage);
625 err = do_convert_inline_dir(dir, ipage, inline_dentry);
635 int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
638 struct f2fs_sb_info *sbi = F2FS_I_SB(dir);
647 ipage = f2fs_get_node_page(sbi, dir->i_ino);
651 inline_dentry = inline_data_addr(dir, ipage);
652 make_dentry_ptr_inline(dir, &d, inline_dentry);
656 err = do_convert_inline_dir(dir, ipage, inline_dentry);
666 page = f2fs_init_inode_metadata(inode, dir, fname, ipage);
682 f2fs_i_pino_write(inode, dir->i_ino);
691 f2fs_update_parent_metadata(dir, inode, 0);
701 struct inode *dir, struct inode *inode)
712 inline_dentry = inline_data_addr(dir, page);
713 make_dentry_ptr_inline(dir, &d, inline_dentry);
722 inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
723 f2fs_mark_inode_dirty_sync(dir, false);
726 f2fs_drop_nlink(dir, inode);
729 bool f2fs_empty_inline_dir(struct inode *dir)
731 struct f2fs_sb_info *sbi = F2FS_I_SB(dir);
737 ipage = f2fs_get_node_page(sbi, dir->i_ino);
741 inline_dentry = inline_data_addr(dir, ipage);
742 make_dentry_ptr_inline(dir, &d, inline_dentry);