]>
git.ipfire.org Git - thirdparty/kernel/linux.git/blob - include/linux/backing-file.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Common helpers for stackable filesystems and backing files.
5 * Copyright (C) 2023 CTERA Networks.
8 #ifndef _LINUX_BACKING_FILE_H
9 #define _LINUX_BACKING_FILE_H
11 #include <linux/file.h>
12 #include <linux/uio.h>
15 struct backing_file_ctx
{
16 const struct cred
*cred
;
17 struct file
*user_file
;
18 void (*accessed
)(struct file
*);
19 void (*end_write
)(struct file
*);
22 struct file
*backing_file_open(const struct path
*user_path
, int flags
,
23 const struct path
*real_path
,
24 const struct cred
*cred
);
25 ssize_t
backing_file_read_iter(struct file
*file
, struct iov_iter
*iter
,
26 struct kiocb
*iocb
, int flags
,
27 struct backing_file_ctx
*ctx
);
28 ssize_t
backing_file_write_iter(struct file
*file
, struct iov_iter
*iter
,
29 struct kiocb
*iocb
, int flags
,
30 struct backing_file_ctx
*ctx
);
31 ssize_t
backing_file_splice_read(struct file
*in
, loff_t
*ppos
,
32 struct pipe_inode_info
*pipe
, size_t len
,
34 struct backing_file_ctx
*ctx
);
35 ssize_t
backing_file_splice_write(struct pipe_inode_info
*pipe
,
36 struct file
*out
, loff_t
*ppos
, size_t len
,
38 struct backing_file_ctx
*ctx
);
39 int backing_file_mmap(struct file
*file
, struct vm_area_struct
*vma
,
40 struct backing_file_ctx
*ctx
);
42 #endif /* _LINUX_BACKING_FILE_H */