| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *  linux/fs/minix/file.c | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Copyright (C) 1991, 1992 Linus Torvalds | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  minix regular file handling primitives | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "minix.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * We have mostly NULLs here: the current defaults are OK for | 
					
						
							|  |  |  |  * the minix filesystem. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2006-03-28 01:56:42 -08:00
										 |  |  | const struct file_operations minix_file_operations = { | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	.llseek		= generic_file_llseek, | 
					
						
							| 
									
										
										
										
											2014-04-02 14:33:16 -04:00
										 |  |  | 	.read_iter	= generic_file_read_iter, | 
					
						
							| 
									
										
										
										
											2014-04-03 03:17:43 -04:00
										 |  |  | 	.write_iter	= generic_file_write_iter, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	.mmap		= generic_file_mmap, | 
					
						
							| 
									
										
										
										
											2010-05-26 17:53:41 +02:00
										 |  |  | 	.fsync		= generic_file_fsync, | 
					
						
							| 
									
										
										
										
											2007-06-01 11:49:19 +02:00
										 |  |  | 	.splice_read	= generic_file_splice_read, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-04 11:29:59 +02:00
										 |  |  | static int minix_setattr(struct dentry *dentry, struct iattr *attr) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-03-17 22:25:59 +00:00
										 |  |  | 	struct inode *inode = d_inode(dentry); | 
					
						
							| 
									
										
										
										
											2010-06-04 11:29:59 +02:00
										 |  |  | 	int error; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	error = inode_change_ok(inode, attr); | 
					
						
							|  |  |  | 	if (error) | 
					
						
							|  |  |  | 		return error; | 
					
						
							| 
									
										
										
										
											2010-06-04 11:30:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if ((attr->ia_valid & ATTR_SIZE) && | 
					
						
							|  |  |  | 	    attr->ia_size != i_size_read(inode)) { | 
					
						
							| 
									
										
										
										
											2012-12-15 11:56:25 +01:00
										 |  |  | 		error = inode_newsize_ok(inode, attr->ia_size); | 
					
						
							| 
									
										
										
										
											2010-06-04 11:30:02 +02:00
										 |  |  | 		if (error) | 
					
						
							|  |  |  | 			return error; | 
					
						
							| 
									
										
										
										
											2012-12-15 11:56:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		truncate_setsize(inode, attr->ia_size); | 
					
						
							|  |  |  | 		minix_truncate(inode); | 
					
						
							| 
									
										
										
										
											2010-06-04 11:30:02 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	setattr_copy(inode, attr); | 
					
						
							|  |  |  | 	mark_inode_dirty(inode); | 
					
						
							|  |  |  | 	return 0; | 
					
						
							| 
									
										
										
										
											2010-06-04 11:29:59 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-12 00:55:39 -08:00
										 |  |  | const struct inode_operations minix_file_inode_operations = { | 
					
						
							| 
									
										
										
										
											2010-06-04 11:29:59 +02:00
										 |  |  | 	.setattr	= minix_setattr, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	.getattr	= minix_getattr, | 
					
						
							|  |  |  | }; |