file.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/fs/sysv/file.c
  3.  *
  4.  *  minix/file.c
  5.  *  Copyright (C) 1991, 1992  Linus Torvalds
  6.  *
  7.  *  coh/file.c
  8.  *  Copyright (C) 1993  Pascal Haible, Bruno Haible
  9.  *
  10.  *  sysv/file.c
  11.  *  Copyright (C) 1993  Bruno Haible
  12.  *
  13.  *  SystemV/Coherent regular file handling primitives
  14.  */
  15. #include <linux/fs.h>
  16. #include <linux/sysv_fs.h>
  17. /*
  18.  * We have mostly NULLs here: the current defaults are OK for
  19.  * the coh filesystem.
  20.  */
  21. struct file_operations sysv_file_operations = {
  22. llseek: generic_file_llseek,
  23. read: generic_file_read,
  24. write: generic_file_write,
  25. mmap: generic_file_mmap,
  26. fsync: sysv_sync_file,
  27. };
  28. struct inode_operations sysv_file_inode_operations = {
  29. truncate: sysv_truncate,
  30. };
  31. int sysv_sync_file(struct file * file, struct dentry *dentry, int datasync)
  32. {
  33. struct inode *inode = dentry->d_inode;
  34. int err;
  35. err = fsync_inode_buffers(inode);
  36. err |= fsync_inode_data_buffers(inode);
  37. if (!(inode->i_state & I_DIRTY))
  38. return err;
  39. if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
  40. return err;
  41. err |= sysv_sync_inode(inode);
  42. return err ? -EIO : 0;
  43. }