1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * linux/fs/minix/file.c 4 * 5 * Copyright (C) 1991, 1992 Linus Torvalds 6 * 7 * minix regular file handling primitives 8 */ 9 10 #include "minix.h" 11 12 /* 13 * We have mostly NULLs here: the current defaults are OK for 14 * the minix filesystem. 15 */ 16 const struct file_operations minix_file_operations = { 17 .llseek = generic_file_llseek, 18 .read_iter = generic_file_read_iter, 19 .write_iter = generic_file_write_iter, 20 .mmap = generic_file_mmap, 21 .fsync = generic_file_fsync, 22 .splice_read = generic_file_splice_read, 23 }; 24 25 static int minix_setattr(struct user_namespace *mnt_userns, 26 struct dentry *dentry, struct iattr *attr) 27 { 28 struct inode *inode = d_inode(dentry); 29 int error; 30 31 error = setattr_prepare(&init_user_ns, dentry, 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(&init_user_ns, 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