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