Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
file.c
Go to the documentation of this file.
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  */
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 
48  .truncate = minix_truncate,
49  .setattr = minix_setattr,
50  .getattr = minix_getattr,
51 };