Lines Matching full:dir
34 static int exfat_d_revalidate(struct inode *dir, const struct qstr *name, in exfat_d_revalidate() argument
60 return inode_eq_iversion(dir, exfat_d_version(dentry)); in exfat_d_revalidate()
236 clu.dir != EXFAT_EOF_CLUSTER) { in exfat_search_empty_slot()
251 clu.dir++; in exfat_search_empty_slot()
253 clu.dir = EXFAT_EOF_CLUSTER; in exfat_search_empty_slot()
255 if (exfat_get_next_cluster(sb, &clu.dir)) in exfat_search_empty_slot()
265 if (dentry == total_entries || clu.dir == EXFAT_EOF_CLUSTER) in exfat_search_empty_slot()
278 * exFAT spec allows a dir to grow up to 8388608(256MB) in exfat_check_max_dentries()
354 if (exfat_zeroed_cluster(inode, clu.dir)) in exfat_find_empty_entry()
358 ei->start_clu = clu.dir; in exfat_find_empty_entry()
359 p_dir->dir = clu.dir; in exfat_find_empty_entry()
368 exfat_chain_cont_cluster(sb, p_dir->dir, p_dir->size); in exfat_find_empty_entry()
374 if (exfat_ent_set(sb, last_clu, clu.dir)) in exfat_find_empty_entry()
377 if (hint_femp.cur.dir == EXFAT_EOF_CLUSTER) in exfat_find_empty_entry()
378 exfat_chain_set(&hint_femp.cur, clu.dir, 0, clu.flags); in exfat_find_empty_entry()
393 p_dir->dir = exfat_sector_to_cluster(sbi, es->bh[0]->b_blocknr); in exfat_find_empty_entry()
464 return ((loff_t) info->dir.dir << 32) | (info->entry & 0xffffffff); in exfat_make_i_pos()
491 dentry = exfat_find_empty_entry(inode, &info->dir, num_entries, &es); in exfat_add_entry()
503 start_clu = clu.dir; in exfat_add_entry()
545 static int exfat_create(struct mnt_idmap *idmap, struct inode *dir, in exfat_create() argument
548 struct super_block *sb = dir->i_sb; in exfat_create()
553 loff_t size = i_size_read(dir); in exfat_create()
560 err = exfat_add_entry(dir, dentry->d_name.name, TYPE_FILE, &info); in exfat_create()
564 inode_inc_iversion(dir); in exfat_create()
565 inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir)); in exfat_create()
566 if (IS_DIRSYNC(dir) && size != i_size_read(dir)) in exfat_create()
567 exfat_sync_inode(dir); in exfat_create()
569 mark_inode_dirty(dir); in exfat_create()
590 static int exfat_find(struct inode *dir, struct qstr *qname, in exfat_find() argument
596 struct super_block *sb = dir->i_sb; in exfat_find()
598 struct exfat_inode_info *ei = EXFAT_I(dir); in exfat_find()
601 /* for optimized dir & entry to prevent long traverse of cluster chain */ in exfat_find()
608 ret = exfat_resolve_path_for_lookup(dir, qname->name, &uni_name); in exfat_find()
613 EXFAT_B_TO_CLU(i_size_read(dir), sbi), ei->flags); in exfat_find()
616 if (ei->version != (inode_peek_iversion_raw(dir) & 0xffffffff)) { in exfat_find()
617 ei->hint_stat.clu = cdir.dir; in exfat_find()
619 ei->version = (inode_peek_iversion_raw(dir) & 0xffffffff); in exfat_find()
629 cdir.dir = hint_opt.clu; in exfat_find()
634 info->dir = cdir; in exfat_find()
694 i_size_read(dir), ei->dir.dir, ei->entry); in exfat_find()
715 static struct dentry *exfat_lookup(struct inode *dir, struct dentry *dentry, in exfat_lookup() argument
718 struct super_block *sb = dir->i_sb; in exfat_lookup()
727 err = exfat_find(dir, &dentry->d_name, &info); in exfat_lookup()
747 * FS is not corrupted (especially double linked dir). in exfat_lookup()
783 exfat_d_version_set(dentry, inode_query_iversion(dir)); in exfat_lookup()
792 static int exfat_unlink(struct inode *dir, struct dentry *dentry) in exfat_unlink() argument
794 struct super_block *sb = dir->i_sb; in exfat_unlink()
804 if (ei->dir.dir == DIR_DELETED) { in exfat_unlink()
826 ei->dir.dir = DIR_DELETED; in exfat_unlink()
828 inode_inc_iversion(dir); in exfat_unlink()
829 simple_inode_init_ts(dir); in exfat_unlink()
830 exfat_truncate_inode_atime(dir); in exfat_unlink()
831 mark_inode_dirty(dir); in exfat_unlink()
837 exfat_d_version_set(dentry, inode_query_iversion(dir)); in exfat_unlink()
843 static int exfat_mkdir(struct mnt_idmap *idmap, struct inode *dir, in exfat_mkdir() argument
846 struct super_block *sb = dir->i_sb; in exfat_mkdir()
851 loff_t size = i_size_read(dir); in exfat_mkdir()
858 err = exfat_add_entry(dir, dentry->d_name.name, TYPE_DIR, &info); in exfat_mkdir()
862 inode_inc_iversion(dir); in exfat_mkdir()
863 inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir)); in exfat_mkdir()
864 if (IS_DIRSYNC(dir) && size != i_size_read(dir)) in exfat_mkdir()
865 exfat_sync_inode(dir); in exfat_mkdir()
867 mark_inode_dirty(dir); in exfat_mkdir()
868 inc_nlink(dir); in exfat_mkdir()
900 if (p_dir->dir == EXFAT_EOF_CLUSTER) in exfat_check_dir_empty()
905 while (clu.dir != EXFAT_EOF_CLUSTER) { in exfat_check_dir_empty()
923 clu.dir++; in exfat_check_dir_empty()
925 clu.dir = EXFAT_EOF_CLUSTER; in exfat_check_dir_empty()
927 if (exfat_get_next_cluster(sb, &(clu.dir))) in exfat_check_dir_empty()
935 static int exfat_rmdir(struct inode *dir, struct dentry *dentry) in exfat_rmdir() argument
950 if (ei->dir.dir == DIR_DELETED) { in exfat_rmdir()
977 err = exfat_put_dentry_set(&es, IS_DIRSYNC(dir)); in exfat_rmdir()
981 ei->dir.dir = DIR_DELETED; in exfat_rmdir()
983 inode_inc_iversion(dir); in exfat_rmdir()
984 simple_inode_init_ts(dir); in exfat_rmdir()
985 exfat_truncate_inode_atime(dir); in exfat_rmdir()
986 if (IS_DIRSYNC(dir)) in exfat_rmdir()
987 exfat_sync_inode(dir); in exfat_rmdir()
989 mark_inode_dirty(dir); in exfat_rmdir()
990 drop_nlink(dir); in exfat_rmdir()
996 exfat_d_version_set(dentry, inode_query_iversion(dir)); in exfat_rmdir()
1028 struct exfat_chain dir; in exfat_rename_file() local
1030 newentry = exfat_find_empty_entry(parent_inode, &dir, in exfat_rename_file()
1055 ei->dir = dir; in exfat_rename_file()
1111 ei->dir = newdir; in exfat_move_file()
1143 if (ei->dir.dir == DIR_DELETED) { in __exfat_rename()
1148 /* check whether new dir is existing directory and empty */ in __exfat_rename()
1153 if (new_ei->dir.dir == DIR_DELETED) { in __exfat_rename()
1162 new_clu.dir = new_ei->start_clu; in __exfat_rename()
1202 /* Free the clusters if new_inode is a dir(as if exfat_rmdir) */ in __exfat_rename()
1227 new_ei->dir.dir = DIR_DELETED; in __exfat_rename()
1269 i_pos = ((loff_t)EXFAT_I(old_inode)->dir.dir << 32) | in exfat_rename()