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 8struct file; 9struct extent_state; 10struct kiocb; 11struct iov_iter; 12struct page; 13struct btrfs_ioctl_encoded_io_args; 14struct btrfs_drop_extents_args; 15struct btrfs_inode; 16struct btrfs_root; 17struct btrfs_path; 18struct btrfs_replace_extent_info; 19struct btrfs_trans_handle; 20 21extern const struct file_operations btrfs_file_operations; 22 23int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync); 24int btrfs_drop_extents(struct btrfs_trans_handle *trans, 25 struct btrfs_root *root, struct btrfs_inode *inode, 26 struct btrfs_drop_extents_args *args); 27int btrfs_replace_file_extents(struct btrfs_inode *inode, 28 struct btrfs_path *path, const u64 start, 29 const u64 end, 30 struct btrfs_replace_extent_info *extent_info, 31 struct btrfs_trans_handle **trans_out); 32int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, 33 struct btrfs_inode *inode, u64 start, u64 end); 34ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from, 35 const struct btrfs_ioctl_encoded_io_args *encoded); 36int btrfs_release_file(struct inode *inode, struct file *file); 37int btrfs_dirty_pages(struct btrfs_inode *inode, struct page **pages, 38 size_t num_pages, loff_t pos, size_t write_bytes, 39 struct extent_state **cached, bool noreserve); 40int btrfs_fdatawrite_range(struct inode *inode, loff_t start, loff_t end); 41int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos, 42 size_t *write_bytes, bool nowait); 43void btrfs_check_nocow_unlock(struct btrfs_inode *inode); 44bool btrfs_find_delalloc_in_range(struct btrfs_inode *inode, u64 start, u64 end, 45 struct extent_state **cached_state, 46 u64 *delalloc_start_ret, u64 *delalloc_end_ret); 47 48#endif 49