[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