Lines Matching refs:dir

228 	while (clu.dir != EXFAT_EOF_CLUSTER) {
244 clu.dir, clu.size, clu.flags);
260 p_dir->dir, clu.dir);
277 clu.dir++;
279 clu.dir = EXFAT_EOF_CLUSTER;
281 if (exfat_get_next_cluster(sb, &clu.dir))
293 * exFAT spec allows a dir to grow up to 8388608(256MB)
353 if (exfat_zeroed_cluster(inode, clu.dir))
357 ei->start_clu = clu.dir;
358 p_dir->dir = clu.dir;
366 exfat_chain_cont_cluster(sb, p_dir->dir, p_dir->size);
372 if (exfat_ent_set(sb, last_clu, clu.dir))
382 exfat_chain_set(&hint_femp.cur, clu.dir, 0, clu.flags);
389 if (p_dir->dir != sbi->root_dir) {
393 &(ei->dir), ei->entry + 1, &bh, &sector);
402 if (exfat_update_dir_chksum(inode, &(ei->dir),
464 const unsigned char *path, struct exfat_chain *dir,
467 return __exfat_resolve_path(inode, path, dir, uni, 0);
471 const unsigned char *path, struct exfat_chain *dir,
474 return __exfat_resolve_path(inode, path, dir, uni, 1);
479 return ((loff_t) info->dir.dir << 32) | (info->entry & 0xffffffff);
515 start_clu = clu.dir;
532 info->dir = *p_dir;
555 static int exfat_create(struct inode *dir, struct dentry *dentry, umode_t mode,
558 struct super_block *sb = dir->i_sb;
567 err = exfat_add_entry(dir, dentry->d_name.name, &cdir, TYPE_FILE,
573 inode_inc_iversion(dir);
574 dir->i_ctime = dir->i_mtime = current_time(dir);
575 if (IS_DIRSYNC(dir))
576 exfat_sync_inode(dir);
578 mark_inode_dirty(dir);
599 static int exfat_find(struct inode *dir, struct qstr *qname,
605 struct super_block *sb = dir->i_sb;
607 struct exfat_inode_info *ei = EXFAT_I(dir);
610 /* for optimized dir & entry to prevent long traverse of cluster chain */
617 ret = exfat_resolve_path_for_lookup(dir, qname->name, &cdir, &uni_name);
626 if (ei->version != (inode_peek_iversion_raw(dir) & 0xffffffff)) {
627 ei->hint_stat.clu = cdir.dir;
629 ei->version = (inode_peek_iversion_raw(dir) & 0xffffffff);
640 info->dir = cdir;
645 cdir.dir = hint_opt.clu;
687 i_size_read(dir), ei->dir.dir, ei->entry);
708 static struct dentry *exfat_lookup(struct inode *dir, struct dentry *dentry,
711 struct super_block *sb = dir->i_sb;
720 err = exfat_find(dir, &dentry->d_name, &info);
740 * FS is not corrupted (especially double linked dir).
776 exfat_d_version_set(dentry, inode_query_iversion(dir));
785 static int exfat_unlink(struct inode *dir, struct dentry *dentry)
789 struct super_block *sb = dir->i_sb;
797 exfat_chain_dup(&cdir, &ei->dir);
799 if (ei->dir.dir == DIR_DELETED) {
821 if (exfat_remove_entries(dir, &cdir, entry, 0, num_entries)) {
827 ei->dir.dir = DIR_DELETED;
830 inode_inc_iversion(dir);
831 dir->i_mtime = dir->i_atime = current_time(dir);
832 exfat_truncate_atime(&dir->i_atime);
833 if (IS_DIRSYNC(dir))
834 exfat_sync_inode(dir);
836 mark_inode_dirty(dir);
842 exfat_d_version_set(dentry, inode_query_iversion(dir));
848 static int exfat_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
850 struct super_block *sb = dir->i_sb;
859 err = exfat_add_entry(dir, dentry->d_name.name, &cdir, TYPE_DIR,
865 inode_inc_iversion(dir);
866 dir->i_ctime = dir->i_mtime = current_time(dir);
867 if (IS_DIRSYNC(dir))
868 exfat_sync_inode(dir);
870 mark_inode_dirty(dir);
871 inc_nlink(dir);
904 if (p_dir->dir == EXFAT_EOF_CLUSTER)
909 while (clu.dir != EXFAT_EOF_CLUSTER) {
927 clu.dir++;
929 clu.dir = EXFAT_EOF_CLUSTER;
931 if (exfat_get_next_cluster(sb, &(clu.dir)))
939 static int exfat_rmdir(struct inode *dir, struct dentry *dentry)
953 exfat_chain_dup(&cdir, &ei->dir);
956 if (ei->dir.dir == DIR_DELETED) {
989 err = exfat_remove_entries(dir, &cdir, entry, 0, num_entries);
994 ei->dir.dir = DIR_DELETED;
997 inode_inc_iversion(dir);
998 dir->i_mtime = dir->i_atime = current_time(dir);
999 exfat_truncate_atime(&dir->i_atime);
1000 if (IS_DIRSYNC(dir))
1001 exfat_sync_inode(dir);
1003 mark_inode_dirty(dir);
1004 drop_nlink(dir);
1010 exfat_d_version_set(dentry, inode_query_iversion(dir));
1168 exfat_chain_set(&ei->dir, p_newdir->dir, p_newdir->size,
1185 * because of flag-mismatch of ei->dir,
1188 if (unlikely(parent_ei->flags != ei->dir.flags ||
1189 parent_isize != EXFAT_CLU_TO_B(ei->dir.size, sbi) ||
1190 parent_ei->start_clu != ei->dir.dir)) {
1191 exfat_chain_set(&ei->dir, parent_ei->start_clu,
1222 if (ei->dir.dir == DIR_DELETED) {
1229 exfat_chain_dup(&olddir, &ei->dir);
1239 /* check whether new dir is existing directory and empty */
1244 if (new_ei->dir.dir == DIR_DELETED) {
1251 p_dir = &(new_ei->dir);
1264 new_clu.dir = new_ei->start_clu;
1284 if (olddir.dir == newdir.dir)
1312 /* Free the clusters if new_inode is a dir(as if exfat_rmdir) */
1336 new_ei->dir.dir = DIR_DELETED;
1377 i_pos = ((loff_t)EXFAT_I(old_inode)->dir.dir << 32) |