GNU Linux-libre 6.9-gnu
[releases.git] / fs / btrfs / file.h
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 page;
13 struct btrfs_ioctl_encoded_io_args;
14 struct btrfs_drop_extents_args;
15 struct btrfs_inode;
16 struct btrfs_root;
17 struct btrfs_path;
18 struct btrfs_replace_extent_info;
19 struct btrfs_trans_handle;
20
21 extern const struct file_operations btrfs_file_operations;
22
23 int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync);
24 int btrfs_drop_extents(struct btrfs_trans_handle *trans,
25                        struct btrfs_root *root, struct btrfs_inode *inode,
26                        struct btrfs_drop_extents_args *args);
27 int 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);
32 int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
33                               struct btrfs_inode *inode, u64 start, u64 end);
34 ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
35                             const struct btrfs_ioctl_encoded_io_args *encoded);
36 int btrfs_release_file(struct inode *inode, struct file *file);
37 int 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);
40 int btrfs_fdatawrite_range(struct inode *inode, loff_t start, loff_t end);
41 int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos,
42                            size_t *write_bytes, bool nowait);
43 void btrfs_check_nocow_unlock(struct btrfs_inode *inode);
44 bool 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