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_iter = generic_file_read_iter, 18 .write_iter = generic_file_write_iter, 19 .mmap = generic_file_mmap, 20 .fsync = generic_file_fsync, 21 .splice_read = generic_file_splice_read, 22 }; 23 24 static int minix_setattr(struct dentry *dentry, struct iattr *attr) 25 { 26 struct inode *inode = d_inode(dentry); 27 int error; 28 29 error = setattr_prepare(dentry, attr); 30 if (error) 31 return error; 32 33 if ((attr->ia_valid & ATTR_SIZE) && 34 attr->ia_size != i_size_read(inode)) { 35 error = inode_newsize_ok(inode, attr->ia_size); 36 if (error) 37 return error; 38 39 truncate_setsize(inode, attr->ia_size); 40 minix_truncate(inode); 41 } 42 43 setattr_copy(inode, attr); 44 mark_inode_dirty(inode); 45 return 0; 46 } 47 48 const struct inode_operations minix_file_inode_operations = { 49 .setattr = minix_setattr, 50 .getattr = minix_getattr, 51 }; 52