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 = do_sync_read, 18 .aio_read = generic_file_aio_read, 19 .write = do_sync_write, 20 .aio_write = generic_file_aio_write, 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 = vmtruncate(inode, attr->ia_size); 38 if (error) 39 return error; 40 } 41 42 setattr_copy(inode, attr); 43 mark_inode_dirty(inode); 44 return 0; 45 } 46 47 const struct inode_operations minix_file_inode_operations = { 48 .truncate = minix_truncate, 49 .setattr = minix_setattr, 50 .getattr = minix_getattr, 51 }; 52