file.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * linux/fs/minix/file.c
  3. *
  4. * Copyright (C) 1991, 1992 Linus Torvalds
  5. *
  6. * minix regular file handling primitives
  7. */
  8. #include "minix.h"
  9. /*
  10. * We have mostly NULLs here: the current defaults are OK for
  11. * the minix filesystem.
  12. */
  13. const struct file_operations minix_file_operations = {
  14. .llseek = generic_file_llseek,
  15. .read = do_sync_read,
  16. .aio_read = generic_file_aio_read,
  17. .write = do_sync_write,
  18. .aio_write = generic_file_aio_write,
  19. .mmap = generic_file_mmap,
  20. .fsync = generic_file_fsync,
  21. .splice_read = generic_file_splice_read,
  22. };
  23. static int minix_setattr(struct dentry *dentry, struct iattr *attr)
  24. {
  25. struct inode *inode = dentry->d_inode;
  26. int error;
  27. error = inode_change_ok(inode, attr);
  28. if (error)
  29. return error;
  30. if ((attr->ia_valid & ATTR_SIZE) &&
  31. attr->ia_size != i_size_read(inode)) {
  32. error = vmtruncate(inode, attr->ia_size);
  33. if (error)
  34. return error;
  35. }
  36. setattr_copy(inode, attr);
  37. mark_inode_dirty(inode);
  38. return 0;
  39. }
  40. const struct inode_operations minix_file_inode_operations = {
  41. .truncate = minix_truncate,
  42. .setattr = minix_setattr,
  43. .getattr = minix_getattr,
  44. };