1 /* 2 * linux/fs/minix/file.c 3 * 4 * Copyright (C) 1991, 1992 Linus Torvalds 5 * 6 * minix regular file handling primitives 7 */ 8 9 #include "minix.h" 10 11 /* 12 * We have mostly NULLs here: the current defaults are OK for 13 * the minix filesystem. 14 */ 15 const struct file_operations minix_file_operations = { 16 .llseek = generic_file_llseek, 17 .read = new_sync_read, 18 .read_iter = generic_file_read_iter, 19 .write = new_sync_write, 20 .write_iter = generic_file_write_iter, 21 .mmap = generic_file_mmap, 22 .fsync = generic_file_fsync, 23 .splice_read = generic_file_splice_read, 24 }; 25 26 static int minix_setattr(struct dentry *dentry, struct iattr *attr) 27 { 28 struct inode *inode = dentry->d_inode; 29 int error; 30 31 error = inode_change_ok(inode, attr); 32 if (error) 33 return error; 34 35 if ((attr->ia_valid & ATTR_SIZE) && 36 attr->ia_size != i_size_read(inode)) { 37 error = inode_newsize_ok(inode, attr->ia_size); 38 if (error) 39 return error; 40 41 truncate_setsize(inode, attr->ia_size); 42 minix_truncate(inode); 43 } 44 45 setattr_copy(inode, attr); 46 mark_inode_dirty(inode); 47 return 0; 48 } 49 50 const struct inode_operations minix_file_inode_operations = { 51 .setattr = minix_setattr, 52 .getattr = minix_getattr, 53 }; 54