From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 41B551FF15C for ; Wed, 2 Oct 2024 16:36:45 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E4D9C1153D; Wed, 2 Oct 2024 16:37:03 +0200 (CEST) From: Christian Ebner To: pve-devel@lists.proxmox.com Date: Wed, 2 Oct 2024 16:36:24 +0200 Message-Id: <20241002143624.1260363-1-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.024 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com] Subject: [pve-devel] [[PATCH kernel]] fix 5683: netfs: reset subreq iov iter before tail clean X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Fixes rare read corruption issues using the in kernel ceph client. On incomplete read requests, the clean tail flag should make sure to zero fill the remaining bytes for the subrequest. If the iov iterator is not at the correct position, this can however zero fill downloaded data, corrupting the read content. Link to issue: https://bugzilla.proxmox.com/show_bug.cgi?id=5683 Link to upstream issue: https://bugzilla.kernel.org/show_bug.cgi?id=219237 Signed-off-by: Christian Ebner --- This fixes the read corruption issue with my local reproducer. Providing a patched kernel to users affected by the issue for testing would be probably the best way to verify the fix. Also, I reached out once again to the kernel developers asking if this fix is a valid approach, hoping this can be included in current stable (as the patch does fix the issue also when applied on 6.11.1). ...et-subreq-iov-iter-before-tail-clean.patch | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 patches/kernel/0021-netfs-reset-subreq-iov-iter-before-tail-clean.patch diff --git a/patches/kernel/0021-netfs-reset-subreq-iov-iter-before-tail-clean.patch b/patches/kernel/0021-netfs-reset-subreq-iov-iter-before-tail-clean.patch new file mode 100644 index 0000000..a87e722 --- /dev/null +++ b/patches/kernel/0021-netfs-reset-subreq-iov-iter-before-tail-clean.patch @@ -0,0 +1,31 @@ +From cd27abf0c555f39b12c05f9f6a8cb59ff25dfe45 Mon Sep 17 00:00:00 2001 +From: Christian Ebner +Date: Wed, 2 Oct 2024 15:24:31 +0200 +Subject: [PATCH] netfs: reset subreq iov iter before tail clean + +Make sure the iter is at the correct location when cleaning up tail +bytes for incomplete read subrequests. + +Fixes: 92b6cc5d ("netfs: Add iov_iters to (sub)requests to describe various buffers") +Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219237 + +Signed-off-by: Christian Ebner +--- + fs/netfs/io.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/fs/netfs/io.c b/fs/netfs/io.c +index d6ada4eba744..500119285346 100644 +--- a/fs/netfs/io.c ++++ b/fs/netfs/io.c +@@ -528,6 +528,7 @@ void netfs_subreq_terminated(struct netfs_io_subrequest *subreq, + + incomplete: + if (test_bit(NETFS_SREQ_CLEAR_TAIL, &subreq->flags)) { ++ netfs_reset_subreq_iter(rreq, subreq); + netfs_clear_unread(subreq); + subreq->transferred = subreq->len; + goto complete; +-- +2.39.5 + -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel