Lines Matching refs:dir
310 struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir, in f2fs_find_in_inline_dir() argument
313 struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb); in f2fs_find_in_inline_dir()
321 ipage = f2fs_get_node_page(sbi, dir->i_ino); in f2fs_find_in_inline_dir()
329 inline_dentry = inline_data_addr(dir, ipage); in f2fs_find_in_inline_dir()
331 make_dentry_ptr_inline(dir, &d, inline_dentry); in f2fs_find_in_inline_dir()
365 static int f2fs_move_inline_dirents(struct inode *dir, struct page *ipage, in f2fs_move_inline_dirents() argument
374 page = f2fs_grab_cache_page(dir->i_mapping, 0, false); in f2fs_move_inline_dirents()
380 set_new_dnode(&dn, dir, ipage, NULL, 0); in f2fs_move_inline_dirents()
391 __func__, dir->i_ino, dn.data_blkaddr); in f2fs_move_inline_dirents()
400 make_dentry_ptr_inline(dir, &src, inline_dentry); in f2fs_move_inline_dirents()
401 make_dentry_ptr_block(dir, &dst, dentry_blk); in f2fs_move_inline_dirents()
420 f2fs_truncate_inline_inode(dir, ipage, 0); in f2fs_move_inline_dirents()
422 stat_dec_inline_dir(dir); in f2fs_move_inline_dirents()
423 clear_inode_flag(dir, FI_INLINE_DENTRY); in f2fs_move_inline_dirents()
425 f2fs_i_depth_write(dir, 1); in f2fs_move_inline_dirents()
426 if (i_size_read(dir) < PAGE_SIZE) in f2fs_move_inline_dirents()
427 f2fs_i_size_write(dir, PAGE_SIZE); in f2fs_move_inline_dirents()
433 static int f2fs_add_inline_entries(struct inode *dir, void *inline_dentry) in f2fs_add_inline_entries() argument
439 make_dentry_ptr_inline(dir, &d, inline_dentry); in f2fs_add_inline_entries()
465 err = f2fs_add_regular_entry(dir, &new_name, NULL, NULL, in f2fs_add_inline_entries()
474 truncate_inode_pages(&dir->i_data, 0); in f2fs_add_inline_entries()
475 f2fs_truncate_blocks(dir, 0, false); in f2fs_add_inline_entries()
476 f2fs_remove_dirty_inode(dir); in f2fs_add_inline_entries()
480 static int f2fs_move_rehashed_dirents(struct inode *dir, struct page *ipage, in f2fs_move_rehashed_dirents() argument
486 backup_dentry = f2fs_kmalloc(F2FS_I_SB(dir), in f2fs_move_rehashed_dirents()
487 MAX_INLINE_DATA(dir), GFP_F2FS_ZERO); in f2fs_move_rehashed_dirents()
493 memcpy(backup_dentry, inline_dentry, MAX_INLINE_DATA(dir)); in f2fs_move_rehashed_dirents()
494 f2fs_truncate_inline_inode(dir, ipage, 0); in f2fs_move_rehashed_dirents()
498 err = f2fs_add_inline_entries(dir, backup_dentry); in f2fs_move_rehashed_dirents()
504 stat_dec_inline_dir(dir); in f2fs_move_rehashed_dirents()
505 clear_inode_flag(dir, FI_INLINE_DENTRY); in f2fs_move_rehashed_dirents()
511 memcpy(inline_dentry, backup_dentry, MAX_INLINE_DATA(dir)); in f2fs_move_rehashed_dirents()
512 f2fs_i_depth_write(dir, 0); in f2fs_move_rehashed_dirents()
513 f2fs_i_size_write(dir, MAX_INLINE_DATA(dir)); in f2fs_move_rehashed_dirents()
521 static int f2fs_convert_inline_dir(struct inode *dir, struct page *ipage, in f2fs_convert_inline_dir() argument
524 if (!F2FS_I(dir)->i_dir_level) in f2fs_convert_inline_dir()
525 return f2fs_move_inline_dirents(dir, ipage, inline_dentry); in f2fs_convert_inline_dir()
527 return f2fs_move_rehashed_dirents(dir, ipage, inline_dentry); in f2fs_convert_inline_dir()
530 int f2fs_add_inline_entry(struct inode *dir, const struct qstr *new_name, in f2fs_add_inline_entry() argument
534 struct f2fs_sb_info *sbi = F2FS_I_SB(dir); in f2fs_add_inline_entry()
544 ipage = f2fs_get_node_page(sbi, dir->i_ino); in f2fs_add_inline_entry()
548 inline_dentry = inline_data_addr(dir, ipage); in f2fs_add_inline_entry()
549 make_dentry_ptr_inline(dir, &d, inline_dentry); in f2fs_add_inline_entry()
553 err = f2fs_convert_inline_dir(dir, ipage, inline_dentry); in f2fs_add_inline_entry()
562 page = f2fs_init_inode_metadata(inode, dir, new_name, in f2fs_add_inline_entry()
579 f2fs_i_pino_write(inode, dir->i_ino); in f2fs_add_inline_entry()
583 f2fs_update_parent_metadata(dir, inode, 0); in f2fs_add_inline_entry()
593 struct inode *dir, struct inode *inode) in f2fs_delete_inline_entry() argument
604 inline_dentry = inline_data_addr(dir, page); in f2fs_delete_inline_entry()
605 make_dentry_ptr_inline(dir, &d, inline_dentry); in f2fs_delete_inline_entry()
614 dir->i_ctime = dir->i_mtime = current_time(dir); in f2fs_delete_inline_entry()
615 f2fs_mark_inode_dirty_sync(dir, false); in f2fs_delete_inline_entry()
618 f2fs_drop_nlink(dir, inode); in f2fs_delete_inline_entry()
621 bool f2fs_empty_inline_dir(struct inode *dir) in f2fs_empty_inline_dir() argument
623 struct f2fs_sb_info *sbi = F2FS_I_SB(dir); in f2fs_empty_inline_dir()
629 ipage = f2fs_get_node_page(sbi, dir->i_ino); in f2fs_empty_inline_dir()
633 inline_dentry = inline_data_addr(dir, ipage); in f2fs_empty_inline_dir()
634 make_dentry_ptr_inline(dir, &d, inline_dentry); in f2fs_empty_inline_dir()