1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef BTRFS_FILE_H 4 #define BTRFS_FILE_H 5 6 #include <linux/types.h> 7 8 struct file; 9 struct extent_state; 10 struct kiocb; 11 struct iov_iter; 12 struct inode; 13 struct folio; 14 struct page; 15 struct btrfs_ioctl_encoded_io_args; 16 struct btrfs_drop_extents_args; 17 struct btrfs_inode; 18 struct btrfs_root; 19 struct btrfs_path; 20 struct btrfs_replace_extent_info; 21 struct btrfs_trans_handle; 22 23 extern const struct file_operations btrfs_file_operations; 24 25 int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync); 26 int btrfs_drop_extents(struct btrfs_trans_handle *trans, 27 struct btrfs_root *root, struct btrfs_inode *inode, 28 struct btrfs_drop_extents_args *args); 29 int btrfs_replace_file_extents(struct btrfs_inode *inode, 30 struct btrfs_path *path, const u64 start, 31 const u64 end, 32 struct btrfs_replace_extent_info *extent_info, 33 struct btrfs_trans_handle **trans_out); 34 int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, 35 struct btrfs_inode *inode, u64 start, u64 end); 36 ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from, 37 const struct btrfs_ioctl_encoded_io_args *encoded); 38 int btrfs_release_file(struct inode *inode, struct file *file); 39 int btrfs_dirty_folio(struct btrfs_inode *inode, struct folio *folio, loff_t pos, 40 size_t write_bytes, struct extent_state **cached, bool noreserve); 41 int btrfs_fdatawrite_range(struct btrfs_inode *inode, loff_t start, loff_t end); 42 int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos, 43 size_t *write_bytes, bool nowait); 44 void btrfs_check_nocow_unlock(struct btrfs_inode *inode); 45 bool btrfs_find_delalloc_in_range(struct btrfs_inode *inode, u64 start, u64 end, 46 struct extent_state **cached_state, 47 u64 *delalloc_start_ret, u64 *delalloc_end_ret); 48 int btrfs_write_check(struct kiocb *iocb, size_t count); 49 ssize_t btrfs_buffered_write(struct kiocb *iocb, struct iov_iter *i); 50 51 #endif 52