file.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * linux/fs/ufs/file.c
  3. *
  4. * Copyright (C) 1998
  5. * Daniel Pirkl <daniel.pirkl@email.cz>
  6. * Charles University, Faculty of Mathematics and Physics
  7. *
  8. * from
  9. *
  10. * linux/fs/ext2/file.c
  11. *
  12. * Copyright (C) 1992, 1993, 1994, 1995
  13. * Remy Card (card@masi.ibp.fr)
  14. * Laboratoire MASI - Institut Blaise Pascal
  15. * Universite Pierre et Marie Curie (Paris VI)
  16. *
  17. * from
  18. *
  19. * linux/fs/minix/file.c
  20. *
  21. * Copyright (C) 1991, 1992 Linus Torvalds
  22. *
  23. * ext2 fs regular file handling primitives
  24. */
  25. #include <linux/fs.h>
  26. #include <linux/ufs_fs.h>
  27. #include <linux/buffer_head.h> /* for sync_mapping_buffers() */
  28. static int ufs_sync_file(struct file *file, struct dentry *dentry, int datasync)
  29. {
  30. struct inode *inode = dentry->d_inode;
  31. int err;
  32. int ret;
  33. ret = sync_mapping_buffers(inode->i_mapping);
  34. if (!(inode->i_state & I_DIRTY))
  35. return ret;
  36. if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
  37. return ret;
  38. err = ufs_sync_inode(inode);
  39. if (ret == 0)
  40. ret = err;
  41. return ret;
  42. }
  43. /*
  44. * We have mostly NULL's here: the current defaults are ok for
  45. * the ufs filesystem.
  46. */
  47. const struct file_operations ufs_file_operations = {
  48. .llseek = generic_file_llseek,
  49. .read = generic_file_read,
  50. .write = generic_file_write,
  51. .mmap = generic_file_mmap,
  52. .open = generic_file_open,
  53. .fsync = ufs_sync_file,
  54. .sendfile = generic_file_sendfile,
  55. };