xref: /openbmc/linux/fs/minix/file.c (revision d2f4a190)
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 mnt_idmap *idmap,
26  			 struct dentry *dentry, struct iattr *attr)
27  {
28  	struct inode *inode = d_inode(dentry);
29  	int error;
30  
31  	error = setattr_prepare(&nop_mnt_idmap, 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(&nop_mnt_idmap, 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