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 inode;
13struct folio;
14struct page;
15struct btrfs_ioctl_encoded_io_args;
16struct btrfs_drop_extents_args;
17struct btrfs_inode;
18struct btrfs_root;
19struct btrfs_path;
20struct btrfs_replace_extent_info;
21struct btrfs_trans_handle;
22
23extern const struct file_operations btrfs_file_operations;
24
25int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync);
26int btrfs_drop_extents(struct btrfs_trans_handle *trans,
27 struct btrfs_root *root, struct btrfs_inode *inode,
28 struct btrfs_drop_extents_args *args);
29int 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);
34int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
35 struct btrfs_inode *inode, u64 start, u64 end);
36ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
37 const struct btrfs_ioctl_encoded_io_args *encoded);
38int btrfs_release_file(struct inode *inode, struct file *file);
39int btrfs_dirty_folio(struct btrfs_inode *inode, struct folio *folio, loff_t pos,
40 size_t write_bytes, struct extent_state **cached, bool noreserve);
41int btrfs_fdatawrite_range(struct btrfs_inode *inode, loff_t start, loff_t end);
42int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos,
43 size_t *write_bytes, bool nowait);
44void btrfs_check_nocow_unlock(struct btrfs_inode *inode);
45bool 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);
48int btrfs_write_check(struct kiocb *iocb, size_t count);
49ssize_t btrfs_buffered_write(struct kiocb *iocb, struct iov_iter *i);
50
51#endif
52

source code of linux/fs/btrfs/file.h