[PATCH 7/8] rpdfs: add rpdfs_write_iter/rpdfs_read_iter
Valerie Aurora <[email protected]> Fri, 24 Apr 2026 16:05:19 +0200
| Newsgroups | dev.linux.lists.rpdfs-devel |
|---|---|
| Message-ID | <[email protected]> |
Implement write_iter/read_iter with generic functions. Signed-off-by: Valerie Aurora <[email protected]> --- fs/rpdfs/file.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/fs/rpdfs/file.c b/fs/rpdfs/file.c index 8e46047d9d1e..773fca90e1e9 100644 --- a/fs/rpdfs/file.c +++ b/fs/rpdfs/file.c @@ -1,15 +1,51 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#include <linux/kernel.h> #include <linux/fs.h> +#include <linux/slab.h> +#include "inode.h" #include "file.h" #include "inode.h" +#include "pr.h" static loff_t rpdfs_file_llseek(struct file *file, loff_t offset, int whence) { return generic_file_llseek(file, offset, whence); } +static ssize_t rpdfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file_inode(file); + int ret; + + rpdfs_prd("ino %llu count %lu pos %lu", + rpdfs_inode_ino(inode), iov_iter_count(from), (unsigned long) iocb->ki_pos); + + ret = generic_write_checks(iocb, from); + if (ret <= 0) + goto out; + + ret = generic_perform_write(iocb, from); +out: + return ret; +} + +static ssize_t rpdfs_file_read_iter(struct kiocb *iocb, struct iov_iter *from) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file_inode(file); + int ret; + + rpdfs_prd("ino %llu count %lu pos %lu", + rpdfs_inode_ino(inode), iov_iter_count(from), (unsigned long) iocb->ki_pos); + + ret = generic_file_read_iter(iocb, from); + + return ret; +} + const struct inode_operations rpdfs_file_iops = { .getattr = rpdfs_getattr, .setattr = rpdfs_setattr, @@ -17,4 +53,6 @@ const struct inode_operations rpdfs_file_iops = { const struct file_operations rpdfs_file_fops = { .llseek = rpdfs_file_llseek, + .write_iter = rpdfs_file_write_iter, + .read_iter = rpdfs_file_read_iter, }; -- 2.49.0