From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA17D370D77 for ; Thu, 7 May 2026 13:22:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778160129; cv=none; b=WWlQsGXvKnlG1e/C7m01CDYbhLBDzR3moW1pBGwkWoCMGXRn0fVCcs4y6PIZln1D9Oa8QDgRw68kZWDTXeRH5i6Wm+MUrC+IgzjAMHHwxy34x0d+uP/0RmsrCGt91Cxs643Y5pRvCS6lDl81bPu+0Pb12vUhSW2jjc8lDrp+vxw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778160129; c=relaxed/simple; bh=OhpqxMAqbL90RIcIWGGXHIj289zQf56H6WmwZODxN2M=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KH1vS3ln06v72RnYJnnkhMEJtuBTrXLgj3oUfAhVdx4FX/+9Y2A5qkCBqI8uH7RjxdZIiLS6LwWEBBvKE9NRtjaFbCpnvHQnxfYFWHVtISanLb8NzUVh6ZNfsXprHePG4sMOlAjnNst0QiRnwxLuyttk5CwOUwa3Q2I7t0fHYAw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=permerror header.from=versity.com; spf=pass smtp.mailfrom=versity.com; dkim=pass (2048-bit key) header.d=versity.com header.i=@versity.com header.b=hIGhBfJQ; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=permerror header.from=versity.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=versity.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=versity.com header.i=@versity.com header.b="hIGhBfJQ" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b79f8f7ea43so135351166b.2 for ; Thu, 07 May 2026 06:22:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=versity.com; s=google; t=1778160126; x=1778764926; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=o+cAImCHmdSwzhjIIVm/961FHryfEhRaGxq1gwyjmVM=; b=hIGhBfJQkTDVL/mulNAyat3nlAjSJsWcraZA64k6ZyNC0ZgmsiIZPqiGYrmYfNXjDo 1JEdguXpXO+mo4bbEwUwsCJ4Gvch+PgS5hFv+tRC3prcxEH9UrtyQOeSwxNB2BluB70B z9WSuz6askNNHK1zQuMBaJPTWP16VWvVAc4DKuZ7cMIsxiy4oNloSEF/WJIe5V92TcNX I1ILgU3acxTxslXgWVduAf1al7lAzHNk+TRScvAoE7QYQ3TE/VNvC6QZZFO+97SQ/sqX I8Cv/knFoUSbY7f56HvfPM8hQLzOhym87Pi1b//izHZM6BJnjCeaqsdeCLRNMgDjjzEC V9CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778160126; x=1778764926; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=o+cAImCHmdSwzhjIIVm/961FHryfEhRaGxq1gwyjmVM=; b=bHHkAkH24ZJRC7+lqf7aly/4NW9Z5nR0X9DYDUxJuMoeGI2jafcxdVci2Hyju9HKCn asoGWcEs3Gz0iFDY9+2YgMrEOo++JvKkGTtbXrgSUL5zI7fH5rqCP9ZNHvCiG5KUk6K8 IoZTiMQu45s3kEdPGfyn+M/I5MtnQG50IAiASQPSvbYPgXPfEKLyGexUC/9V6+UHpOuf LYrdesn5BTrQPhx1wuW+nG0iiZwDrmfGg1tCTTRLDuEuTl7zbBQ6d3qFS+Iy09y/jmnl ulUyJH2SClWdEwnoFKnu1cJDFNSSBqV36G/YTX1wVsQGTzNLtn/hrEWLXkxABLfn7A60 dWnw== X-Gm-Message-State: AOJu0Yz2ohDJfvX50foF8QZSsBjKUSwqqWQQ7j95EMWvpJ+PXzMUUOVy O7HClCn1gtc76ZKSIClkC3ySyo0rkALYlrbBV5lNlWvoR1PrC+pSDcVV/sDYp0YUfmgWP0H9Oqv an3EIx7U= X-Gm-Gg: AeBDietmwh03w4xGx/xtrGzUdCoSTKdZiAphj5mXUluDFDezsStB+7A3ld2v/pWMKFd Rykx7K/2rpbpcAlB9uyh6iKO2R0DVyxfJeX4CtWqJA037lxAr3GFCK0ffd4qOBRDbLhhB8nnQ6L qaW9m/iaIrxP+I0wZ4xAEaXMmI3Dtv0QRN+v9brcKoTXIIo56FrjEqiDtMMLtLYDnNJDfqG0wKQ pE7ajIytJdoykq/ZRgi9eCpkReBpNpBktW8lP9uPZ9OVFAw9SE8l3S8m9aqYcCRTkXQbtNB8apE 8VVn2tu90+xdjMDzkOXnOR7VhQQNOciti2edMZESn34FBBQ64Ln2dKUHEX1j3EgP/eayoC5oj1k +RJBuJfo1D/JQ5xGRb0DIIpJxZnTvrSNe1BGlBAVyP4oeu8wZXTSJ60GUjoLzCw0Ss6Rxa/tQEf FFgryFwFqJzQfN2ceptrd8ojUcbxgaoVgZQJmjkF0G5rXzSUCOXzZf7WmlLg2MxnbEHHdMmbITn L4gCb8Fr43elmF01aUt5mPi/c5xXCizXX3j9TOx+0BpA2Wh X-Received: by 2002:a17:907:da16:b0:bc2:e438:da0c with SMTP id a640c23a62f3a-bc56c72d871mr475175366b.22.1778160125573; Thu, 07 May 2026 06:22:05 -0700 (PDT) Received: from localhost.localdomain (46-117-212-87.ftth.glasoperator.nl. [87.212.117.46]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bc83364c5e3sm80638666b.35.2026.05.07.06.22.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 06:22:05 -0700 (PDT) From: Valerie Aurora To: rpdfs-devel@lists.linux.dev Subject: [PATCH 5/6] rpdfs: add rpdfs_write_iter/rpdfs_read_iter Date: Thu, 7 May 2026 15:21:52 +0200 Message-ID: <20260507132153.1161324-6-val@versity.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20260507132153.1161324-1-val@versity.com> References: <20260507132153.1161324-1-val@versity.com> Precedence: bulk X-Mailing-List: rpdfs-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Implement write_iter/read_iter with generic functions. Signed-off-by: Valerie Aurora --- fs/rpdfs/file.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/fs/rpdfs/file.c b/fs/rpdfs/file.c index e8918e38b3fe..060de1070963 100644 --- a/fs/rpdfs/file.c +++ b/fs/rpdfs/file.c @@ -1,9 +1,12 @@ /* SPDX-License-Identifier: GPL-2.0 */ +#include #include +#include #include "file.h" #include "inode.h" +#include "pr.h" static loff_t rpdfs_file_llseek(struct file *file, loff_t offset, int whence) { @@ -22,6 +25,60 @@ static loff_t rpdfs_file_llseek(struct file *file, loff_t offset, int whence) return ret; } +static ssize_t rpdfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file->f_mapping->host; + struct rpdfs_fs_info *rfi = RPDFS_INODE_FS(inode); + struct rpdfs_block_handle *hnd = NULL; + struct rpdfs_transaction txn = RPDFS_INIT_TXN; + ssize_t ret; + + rpdfs_prd("ino %llu count %lu pos %lu", + rpdfs_inode_ino(inode), iov_iter_count(from), (unsigned long) iocb->ki_pos); + + inode_lock(inode); + + ret = rpdfs_inode_acquire(rfi, &txn, inode, &hnd, RBAF_WRITE); + if (ret < 0) + goto out; + + ret = generic_write_checks(iocb, from); + if (ret <= 0) + goto out; + + ret = __generic_file_write_iter(iocb, from); +out: + rpdfs_block_release(rfi, &hnd); + inode_unlock(inode); + + if (ret > 0) + ret = generic_write_sync(iocb, ret); + + 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); + struct rpdfs_fs_info *rfi = RPDFS_INODE_FS(inode); + struct rpdfs_block_handle *hnd = NULL; + int ret; + + ret = rpdfs_inode_acquire(rfi, NULL, inode, &hnd, 0); + if (ret < 0) + goto out; + + 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); +out: + rpdfs_block_release(rfi, &hnd); + return ret; +} + const struct inode_operations rpdfs_file_iops = { .getattr = rpdfs_getattr, .setattr = rpdfs_setattr, @@ -29,4 +86,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