file.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * file.h
  4. *
  5. * Function prototypes
  6. *
  7. * Copyright (C) 2002, 2004 Oracle. All rights reserved.
  8. */
  9. #ifndef OCFS2_FILE_H
  10. #define OCFS2_FILE_H
  11. extern const struct file_operations ocfs2_fops;
  12. extern const struct file_operations ocfs2_dops;
  13. extern const struct file_operations ocfs2_fops_no_plocks;
  14. extern const struct file_operations ocfs2_dops_no_plocks;
  15. extern const struct inode_operations ocfs2_file_iops;
  16. extern const struct inode_operations ocfs2_special_file_iops;
  17. struct ocfs2_alloc_context;
  18. enum ocfs2_alloc_restarted;
  19. struct ocfs2_file_private {
  20. u64 cookie;
  21. struct file *fp_file;
  22. struct mutex fp_mutex;
  23. struct ocfs2_lock_res fp_flock;
  24. };
  25. int ocfs2_add_inode_data(struct ocfs2_super *osb,
  26. struct inode *inode,
  27. u32 *logical_offset,
  28. u32 clusters_to_add,
  29. int mark_unwritten,
  30. struct buffer_head *fe_bh,
  31. handle_t *handle,
  32. struct ocfs2_alloc_context *data_ac,
  33. struct ocfs2_alloc_context *meta_ac,
  34. enum ocfs2_alloc_restarted *reason_ret);
  35. int ocfs2_set_inode_size(handle_t *handle,
  36. struct inode *inode,
  37. struct buffer_head *fe_bh,
  38. u64 new_i_size);
  39. int ocfs2_simple_size_update(struct inode *inode,
  40. struct buffer_head *di_bh,
  41. u64 new_i_size);
  42. int ocfs2_truncate_file(struct inode *inode,
  43. struct buffer_head *di_bh,
  44. u64 new_i_size);
  45. int ocfs2_extend_no_holes(struct inode *inode, struct buffer_head *di_bh,
  46. u64 new_i_size, u64 zero_to);
  47. int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh,
  48. loff_t zero_to);
  49. int ocfs2_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
  50. struct iattr *attr);
  51. int ocfs2_getattr(struct mnt_idmap *idmap, const struct path *path,
  52. struct kstat *stat, u32 request_mask, unsigned int flags);
  53. int ocfs2_permission(struct mnt_idmap *idmap,
  54. struct inode *inode,
  55. int mask);
  56. int ocfs2_should_update_atime(struct inode *inode,
  57. struct vfsmount *vfsmnt);
  58. int ocfs2_update_inode_atime(struct inode *inode,
  59. struct buffer_head *bh);
  60. int ocfs2_change_file_space(struct file *file, unsigned int cmd,
  61. struct ocfs2_space_resv *sr);
  62. int ocfs2_check_range_for_refcount(struct inode *inode, loff_t pos,
  63. size_t count);
  64. int ocfs2_remove_inode_range(struct inode *inode,
  65. struct buffer_head *di_bh, u64 byte_start,
  66. u64 byte_len);
  67. #endif /* OCFS2_FILE_H */