Lines Matching refs:dir

49 static inline void fat_dir_readahead(struct inode *dir, sector_t iblock,  in fat_dir_readahead()  argument
52 struct super_block *sb = dir->i_sb; in fat_dir_readahead()
61 if (!is_fat32(sbi) && (dir->i_ino == MSDOS_ROOT_INO)) in fat_dir_readahead()
82 static int fat__get_entry(struct inode *dir, loff_t *pos, in fat__get_entry() argument
85 struct super_block *sb = dir->i_sb; in fat__get_entry()
94 err = fat_bmap(dir, iblock, &phys, &mapped_blocks, 0, false); in fat__get_entry()
98 fat_dir_readahead(dir, iblock, phys); in fat__get_entry()
116 static inline int fat_get_entry(struct inode *dir, loff_t *pos, in fat_get_entry() argument
123 MSDOS_SB(dir->i_sb)->dir_per_block - 1) { in fat_get_entry()
128 return fat__get_entry(dir, pos, bh, de); in fat_get_entry()
279 static int fat_parse_long(struct inode *dir, loff_t *pos, in fat_parse_long() argument
316 if (fat_get_entry(dir, pos, bh, de) < 0) in fat_parse_long()
869 static int fat_get_short_entry(struct inode *dir, loff_t *pos, in fat_get_short_entry() argument
873 while (fat_get_entry(dir, pos, bh, de) >= 0) { in fat_get_short_entry()
890 int fat_get_dotdot_entry(struct inode *dir, struct buffer_head **bh, in fat_get_dotdot_entry() argument
896 while (fat_get_short_entry(dir, &offset, bh, de) >= 0) { in fat_get_dotdot_entry()
905 int fat_dir_empty(struct inode *dir) in fat_dir_empty() argument
914 while (fat_get_short_entry(dir, &cpos, &bh, &de) >= 0) { in fat_dir_empty()
930 int fat_subdirs(struct inode *dir) in fat_subdirs() argument
939 while (fat_get_short_entry(dir, &cpos, &bh, &de) >= 0) { in fat_subdirs()
951 int fat_scan(struct inode *dir, const unsigned char *name, in fat_scan() argument
954 struct super_block *sb = dir->i_sb; in fat_scan()
958 while (fat_get_short_entry(dir, &sinfo->slot_off, &sinfo->bh, in fat_scan()
975 int fat_scan_logstart(struct inode *dir, int i_logstart, in fat_scan_logstart() argument
978 struct super_block *sb = dir->i_sb; in fat_scan_logstart()
982 while (fat_get_short_entry(dir, &sinfo->slot_off, &sinfo->bh, in fat_scan_logstart()
994 static int __fat_remove_entries(struct inode *dir, loff_t pos, int nr_slots) in __fat_remove_entries() argument
996 struct super_block *sb = dir->i_sb; in __fat_remove_entries()
1003 if (fat_get_entry(dir, &pos, &bh, &de) < 0) { in __fat_remove_entries()
1015 mark_buffer_dirty_inode(bh, dir); in __fat_remove_entries()
1016 if (IS_DIRSYNC(dir)) in __fat_remove_entries()
1029 int fat_remove_entries(struct inode *dir, struct fat_slot_info *sinfo) in fat_remove_entries() argument
1031 struct super_block *sb = dir->i_sb; in fat_remove_entries()
1050 mark_buffer_dirty_inode(bh, dir); in fat_remove_entries()
1051 if (IS_DIRSYNC(dir)) in fat_remove_entries()
1056 inode_inc_iversion(dir); in fat_remove_entries()
1064 err = __fat_remove_entries(dir, sinfo->slot_off, nr_slots); in fat_remove_entries()
1071 fat_truncate_time(dir, NULL, S_ATIME|S_MTIME); in fat_remove_entries()
1072 if (IS_DIRSYNC(dir)) in fat_remove_entries()
1073 (void)fat_sync_inode(dir); in fat_remove_entries()
1075 mark_inode_dirty(dir); in fat_remove_entries()
1081 static int fat_zeroed_cluster(struct inode *dir, sector_t blknr, int nr_used, in fat_zeroed_cluster() argument
1084 struct super_block *sb = dir->i_sb; in fat_zeroed_cluster()
1102 mark_buffer_dirty_inode(bhs[n], dir); in fat_zeroed_cluster()
1107 if (IS_DIRSYNC(dir)) { in fat_zeroed_cluster()
1117 if (IS_DIRSYNC(dir)) { in fat_zeroed_cluster()
1133 int fat_alloc_new_dir(struct inode *dir, struct timespec64 *ts) in fat_alloc_new_dir() argument
1135 struct super_block *sb = dir->i_sb; in fat_alloc_new_dir()
1144 err = fat_alloc_clusters(dir, &cluster, 1); in fat_alloc_new_dir()
1178 fat_set_start(&de[1], MSDOS_I(dir)->i_logstart); in fat_alloc_new_dir()
1183 mark_buffer_dirty_inode(bhs[0], dir); in fat_alloc_new_dir()
1185 err = fat_zeroed_cluster(dir, blknr, 1, bhs, MAX_BUF_PER_PAGE); in fat_alloc_new_dir()
1192 fat_free_clusters(dir, cluster); in fat_alloc_new_dir()
1198 static int fat_add_new_entries(struct inode *dir, void *slots, int nr_slots, in fat_add_new_entries() argument
1202 struct super_block *sb = dir->i_sb; in fat_add_new_entries()
1218 err = fat_alloc_clusters(dir, cluster, *nr_cluster); in fat_add_new_entries()
1245 mark_buffer_dirty_inode(bhs[n], dir); in fat_add_new_entries()
1263 err = fat_zeroed_cluster(dir, start_blknr, ++n, bhs, MAX_BUF_PER_PAGE); in fat_add_new_entries()
1276 fat_free_clusters(dir, cluster[0]); in fat_add_new_entries()
1281 int fat_add_entries(struct inode *dir, void *slots, int nr_slots, in fat_add_entries() argument
1284 struct super_block *sb = dir->i_sb; in fat_add_entries()
1298 while (fat_get_entry(dir, &pos, &bh, &de) > -1) { in fat_add_entries()
1319 if (dir->i_ino == MSDOS_ROOT_INO) { in fat_add_entries()
1322 } else if (MSDOS_I(dir)->i_start == 0) { in fat_add_entries()
1324 MSDOS_I(dir)->i_pos); in fat_add_entries()
1347 mark_buffer_dirty_inode(bhs[i], dir); in fat_add_entries()
1352 if (long_bhs && IS_DIRSYNC(dir)) in fat_add_entries()
1358 mark_buffer_dirty_inode(bhs[i], dir); in fat_add_entries()
1359 if (IS_DIRSYNC(dir)) in fat_add_entries()
1376 cluster = fat_add_new_entries(dir, slots, nr_slots, &nr_cluster, in fat_add_entries()
1382 err = fat_chain_add(dir, cluster, nr_cluster); in fat_add_entries()
1384 fat_free_clusters(dir, cluster); in fat_add_entries()
1387 if (dir->i_size & (sbi->cluster_size - 1)) { in fat_add_entries()
1389 dir->i_size = (dir->i_size + sbi->cluster_size - 1) in fat_add_entries()
1392 dir->i_size += nr_cluster << sbi->cluster_bits; in fat_add_entries()
1393 MSDOS_I(dir)->mmu_private += nr_cluster << sbi->cluster_bits; in fat_add_entries()
1411 __fat_remove_entries(dir, pos, free_slots); in fat_add_entries()