Lines Matching refs:inode

24 static int fat_ioctl_get_attributes(struct inode *inode, u32 __user *user_attr)
28 inode_lock_shared(inode);
29 attr = fat_make_attrs(inode);
30 inode_unlock_shared(inode);
37 struct inode *inode = file_inode(file);
38 struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb);
39 int is_dir = S_ISDIR(inode->i_mode);
51 inode_lock(inode);
61 attr |= (MSDOS_I(inode)->i_attrs & ATTR_VOLUME) |
63 oldattr = fat_make_attrs(inode);
67 ia.ia_ctime = current_time(inode);
72 S_IRUGO | S_IWUGO | (inode->i_mode & S_IXUGO));
76 if (inode->i_ino == MSDOS_ROOT_INO && attr != ATTR_DIR) {
106 inode->i_flags |= S_IMMUTABLE;
108 inode->i_flags &= ~S_IMMUTABLE;
111 fat_save_attrs(inode, attr);
112 mark_inode_dirty(inode);
114 inode_unlock(inode);
120 static int fat_ioctl_get_volume_id(struct inode *inode, u32 __user *user_attr)
122 struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb);
126 static int fat_ioctl_fitrim(struct inode *inode, unsigned long arg)
128 struct super_block *sb = inode->i_sb;
146 err = fat_trim_fs(inode, &range);
158 struct inode *inode = file_inode(filp);
163 return fat_ioctl_get_attributes(inode, user_attr);
167 return fat_ioctl_get_volume_id(inode, user_attr);
169 return fat_ioctl_fitrim(inode, arg);
175 static int fat_file_release(struct inode *inode, struct file *filp)
178 MSDOS_SB(inode->i_sb)->options.flush) {
179 fat_flush_inodes(inode->i_sb, inode, NULL);
188 struct inode *inode = filp->f_mapping->host;
195 err = sync_mapping_buffers(MSDOS_SB(inode->i_sb)->fat_inode->i_mapping);
199 return blkdev_issue_flush(inode->i_sb->s_bdev);
217 static int fat_cont_expand(struct inode *inode, loff_t size)
219 struct address_space *mapping = inode->i_mapping;
220 loff_t start = inode->i_size, count = size - inode->i_size;
223 err = generic_cont_expand_simple(inode, size);
227 fat_truncate_time(inode, NULL, S_CTIME|S_MTIME);
228 mark_inode_dirty(inode);
229 if (IS_SYNC(inode)) {
241 err2 = write_inode_now(inode, 1);
266 struct inode *inode = file->f_mapping->host;
267 struct super_block *sb = inode->i_sb;
276 if (!S_ISREG(inode->i_mode))
279 inode_lock(inode);
281 ondisksize = inode->i_blocks << 9;
292 err = fat_add_cluster(inode);
297 if ((offset + len) <= i_size_read(inode))
301 err = fat_cont_expand(inode, (offset + len));
305 inode_unlock(inode);
310 static int fat_free(struct inode *inode, int skip)
312 struct super_block *sb = inode->i_sb;
315 if (MSDOS_I(inode)->i_start == 0)
318 fat_cache_inval_inode(inode);
320 wait = IS_DIRSYNC(inode);
321 i_start = free_start = MSDOS_I(inode)->i_start;
322 i_logstart = MSDOS_I(inode)->i_logstart;
326 MSDOS_I(inode)->i_start = 0;
327 MSDOS_I(inode)->i_logstart = 0;
329 MSDOS_I(inode)->i_attrs |= ATTR_ARCH;
330 fat_truncate_time(inode, NULL, S_CTIME|S_MTIME);
332 err = fat_sync_inode(inode);
334 MSDOS_I(inode)->i_start = i_start;
335 MSDOS_I(inode)->i_logstart = i_logstart;
339 mark_inode_dirty(inode);
346 ret = fat_get_cluster(inode, skip - 1, &fclus, &dclus);
353 ret = fat_ent_read(inode, &fatent, dclus);
360 __func__, MSDOS_I(inode)->i_pos);
363 err = fat_ent_write(inode, &fatent, FAT_ENT_EOF, wait);
373 inode->i_blocks = skip << (MSDOS_SB(sb)->cluster_bits - 9);
376 return fat_free_clusters(inode, free_start);
379 void fat_truncate_blocks(struct inode *inode, loff_t offset)
381 struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb);
389 if (MSDOS_I(inode)->mmu_private > offset)
390 MSDOS_I(inode)->mmu_private = offset;
394 fat_free(inode, nr_clusters);
395 fat_flush_inodes(inode->i_sb, inode, NULL);
401 struct inode *inode = d_inode(path->dentry);
402 struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb);
404 generic_fillattr(idmap, request_mask, inode, stat);
409 stat->ino = fat_i_pos_read(sbi, inode);
414 stat->btime = MSDOS_I(inode)->i_crtime;
422 struct inode *inode, umode_t *mode_ptr)
431 if (S_ISREG(inode->i_mode))
442 * If fat_mode_can_hold_ro(inode) is false, can't change w bits.
444 if ((perm & (S_IRUGO | S_IXUGO)) != (inode->i_mode & (S_IRUGO|S_IXUGO)))
446 if (fat_mode_can_hold_ro(inode)) {
460 struct msdos_sb_info *sbi, struct inode *inode)
464 if (!vfsuid_eq_kuid(i_uid_into_vfsuid(idmap, inode),
466 if (vfsgid_in_group_p(i_gid_into_vfsgid(idmap, inode)))
484 struct inode *inode = d_inode(dentry);
488 /* Check for setting the inode time. */
491 if (fat_allow_set_time(idmap, sbi, inode))
510 inode_dio_wait(inode);
512 if (attr->ia_size > inode->i_size) {
513 error = fat_cont_expand(inode, attr->ia_size);
521 (!uid_eq(from_vfsuid(idmap, i_user_ns(inode), attr->ia_vfsuid),
524 (!gid_eq(from_vfsgid(idmap, i_user_ns(inode), attr->ia_vfsgid),
541 if (fat_sanitize_mode(sbi, inode, &attr->ia_mode) < 0)
546 error = fat_block_truncate_page(inode, attr->ia_size);
549 down_write(&MSDOS_I(inode)->truncate_lock);
550 truncate_setsize(inode, attr->ia_size);
551 fat_truncate_blocks(inode, attr->ia_size);
552 up_write(&MSDOS_I(inode)->truncate_lock);
560 fat_truncate_time(inode, &attr->ia_atime, S_ATIME);
562 fat_truncate_time(inode, &attr->ia_ctime, S_CTIME);
564 fat_truncate_time(inode, &attr->ia_mtime, S_MTIME);
567 setattr_copy(idmap, inode, attr);
568 mark_inode_dirty(inode);