diff options
| author | Christian Brauner <brauner@kernel.org> | 2023-12-23 22:17:05 +0300 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2023-12-23 22:50:20 +0300 |
| commit | 7a18c0fff41ee60438ab2a1837d5b1a73ca2e2dd (patch) | |
| tree | d5da6a53b7bb039eaaf9e75720a24f4b0a955602 /include/linux | |
| parent | d9e5d31084b024734e64307521414ef0ae1d5333 (diff) | |
| parent | f567377e406c032fff0799bde4fdf4a977529b84 (diff) | |
| download | linux-7a18c0fff41ee60438ab2a1837d5b1a73ca2e2dd.tar.xz | |
Merge tag 'ovl-vfs-6.8' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs
Pull backing file updates from Amir Goldstein:
These patches essentially just lift some overlayfs code to common code.
The motivation is to reuse common stacking code for the FUSE passthrough
patches that I am shaping up for upstream. The FUSE passthrough work
will be coming in over the next cycles.
I have been testing those patches with my fuse-backing-fd development
branch for quite some time and I think both you and Miklos gave a
conceptual ACK to some version of this work.
* tag 'ovl-vfs-6.8' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs:
fs: factor out backing_file_mmap() helper
fs: factor out backing_file_splice_{read,write}() helpers
fs: factor out backing_file_{read,write}_iter() helpers
fs: prepare for stackable filesystems backing file helpers
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/backing-file.h | 42 | ||||
| -rw-r--r-- | include/linux/fs.h | 3 |
2 files changed, 42 insertions, 3 deletions
diff --git a/include/linux/backing-file.h b/include/linux/backing-file.h new file mode 100644 index 000000000000..3f1fe1774f1b --- /dev/null +++ b/include/linux/backing-file.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Common helpers for stackable filesystems and backing files. + * + * Copyright (C) 2023 CTERA Networks. + */ + +#ifndef _LINUX_BACKING_FILE_H +#define _LINUX_BACKING_FILE_H + +#include <linux/file.h> +#include <linux/uio.h> +#include <linux/fs.h> + +struct backing_file_ctx { + const struct cred *cred; + struct file *user_file; + void (*accessed)(struct file *); + void (*end_write)(struct file *); +}; + +struct file *backing_file_open(const struct path *user_path, int flags, + const struct path *real_path, + const struct cred *cred); +ssize_t backing_file_read_iter(struct file *file, struct iov_iter *iter, + struct kiocb *iocb, int flags, + struct backing_file_ctx *ctx); +ssize_t backing_file_write_iter(struct file *file, struct iov_iter *iter, + struct kiocb *iocb, int flags, + struct backing_file_ctx *ctx); +ssize_t backing_file_splice_read(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags, + struct backing_file_ctx *ctx); +ssize_t backing_file_splice_write(struct pipe_inode_info *pipe, + struct file *out, loff_t *ppos, size_t len, + unsigned int flags, + struct backing_file_ctx *ctx); +int backing_file_mmap(struct file *file, struct vm_area_struct *vma, + struct backing_file_ctx *ctx); + +#endif /* _LINUX_BACKING_FILE_H */ diff --git a/include/linux/fs.h b/include/linux/fs.h index 900d0cd55b50..db5d07e6e02e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2575,9 +2575,6 @@ struct file *dentry_open(const struct path *path, int flags, const struct cred *creds); struct file *dentry_create(const struct path *path, int flags, umode_t mode, const struct cred *cred); -struct file *backing_file_open(const struct path *user_path, int flags, - const struct path *real_path, - const struct cred *cred); struct path *backing_file_user_path(struct file *f); /* |
