From patchwork Thu Jun 20 17:31:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Howells X-Patchwork-Id: 13705985 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1F64AC27C79 for ; Thu, 20 Jun 2024 17:32:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A7EB26B0371; Thu, 20 Jun 2024 13:32:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2D5C6B0372; Thu, 20 Jun 2024 13:32:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 91CB76B0373; Thu, 20 Jun 2024 13:32:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6D7D16B0371 for ; Thu, 20 Jun 2024 13:32:32 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 26C211C0E32 for ; Thu, 20 Jun 2024 17:32:32 +0000 (UTC) X-FDA: 82251961344.28.1A60228 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf17.hostedemail.com (Postfix) with ESMTP id 647A740017 for ; Thu, 20 Jun 2024 17:32:30 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=bWbuJCtj; spf=pass (imf17.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718904746; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9Za3sI46DNoDRS2zLMaVKKAo5577Q7Mj2mbpphqJpg8=; b=gFAG0N4Pw319bp8Ubb7uoYkh78aOC1W83JQAQ69Mfnq8tWVTgtBDUvV4JKpuNqrmJO+KGj wP8gobkm3v9Q43r5alJY3m86gSCUAeE5ek+uMwaTTtc3tsl+W2kWKj0axi9w1OjdFAfPBC aVzlpgVKTFw2xg5++5M6ZfanA1gNT9Q= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=bWbuJCtj; spf=pass (imf17.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718904746; a=rsa-sha256; cv=none; b=HMOY5otAmd3l/g5S8/aWzKt5o4zba7WpFFST95/0Rg7pDikO1ND8Hbpkrbw7nJfGA0u2Z2 kn3lHE2lg00bqhAcomYDq/O1200ZY5fU4Sg56/+x1NlTIe3zEvjV2+MQC2kZiEkizGKypj RG8Fn3t+o7B5Zk7o0cV2xCTAxtQTk0M= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1718904749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9Za3sI46DNoDRS2zLMaVKKAo5577Q7Mj2mbpphqJpg8=; b=bWbuJCtjBSe16YrY1PhW64apgpHONEWD6qlM0yKaAxGssSM22k8CjYlRUxrhT6Riup7ftF x/ygLHZuNkOQlkJz6CcpbrAs/0DYLVmDudsWgaCx+AAaykCstuSek8S9QiBobU/b2IepxE WF6HzncpdcGHUqrSB1iAx2jsnxMAOsk= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-133-lamvqmTDOOq2ya95QZA4mQ-1; Thu, 20 Jun 2024 13:32:23 -0400 X-MC-Unique: lamvqmTDOOq2ya95QZA4mQ-1 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 270E61956068; Thu, 20 Jun 2024 17:32:16 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.39.195.156]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 7215F3000602; Thu, 20 Jun 2024 17:32:08 +0000 (UTC) From: David Howells To: Christian Brauner , Steve French , Matthew Wilcox Cc: David Howells , Jeff Layton , Gao Xiang , Dominique Martinet , Marc Dionne , Paulo Alcantara , Shyam Prasad N , Tom Talpey , Eric Van Hensbergen , Ilya Dryomov , netfs@lists.linux.dev, linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, v9fs@lists.linux.dev, linux-erofs@lists.ozlabs.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Latchesar Ionkov , Christian Schoenebeck , Steve French Subject: [PATCH 03/17] netfs: Fix early issue of write op on partial write to folio tail Date: Thu, 20 Jun 2024 18:31:21 +0100 Message-ID: <20240620173137.610345-4-dhowells@redhat.com> In-Reply-To: <20240620173137.610345-1-dhowells@redhat.com> References: <20240620173137.610345-1-dhowells@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 647A740017 X-Stat-Signature: 7q5ofwj1xi5sa51zccd481bjpei8c7ez X-HE-Tag: 1718904750-390775 X-HE-Meta: U2FsdGVkX19xH08qxcvUO85xL0a2S2SWa9VbPdBiv996yIPvJZEtv0KdH6sTsPCRoOerOYpUbsAo6MfIx6HcOqIjkB2M7Uvlqwd1br6pWlcRUJCHKMkCBk4UcYfmsP/DKXSxoCB7Jp5PNuk4YUzSgyvq42WsnfHODcXgtjogDPa6Zd7e8liL2v1CDJFG88teQszeh7J2Es5hUNztuPrtD30iLzTx2ox7ZZmEzcCZwkVQkLD8+f3LVdtIG8JvD/NEZRyaFe+6tOuvdjozCRy+73Nj/7LdLRWT6/be4zmp9xZwPKfqZgFlogtX9f1rtb5aZP+whM7/yZ9rmgq+cuXsKRMcuiSE83AP4thVh6F9t0P+0CKDb7EYenD0hVZ6TCPMWjiXo3PYi8SV6MI0KfZqt9/y9zwa29qe4xS0CFmyi+ITaqOqQ7OWYRhGLx4KEpRhnztoiFpNi0l5FEwIoZDMKcvgOIaSIPcjQY+lxrh8WHKuM/WZ6zkO3mcUusofbrSHLNXw3r6VL3c0OQHtVv4HSWxAG9k3txK9C8jlY8hL1SBCocy81bFFIXTGCeVbhQF8Ege5IA9NWHexu97ViSt7KlYHkUkEbkSxDfj0gL6hljlqI72/Pu7v47h79UuKTHQ8PiongqD3fn7V5opeBBcJ/Wt3dCgIS//e788QClV6gTp4ayIWCEGw5A0yhto5FInY+rKojO9qzk6uOyYtcR5N6VcLDt+E+eDi6kb6n0ZnY03XynjA5t/y2YGO6IL7eL3498YSa2oa8PuajFO5P0+ySSU2MoE56pyTPM87lChzk8GlPs+l3FzGkMQ/F4bm9S13xVND1qky8EuAhQENW7SWGpmxQXQrw4ViR/PIClWCg2zQkDqBE9wKqsE9VM5dursauFrUcjGm5GSgA9RVRkSvUHFGe5uJaKLDqydEkCTx2cmwqsc2SMx10LOsDwSkiZ9mBPHkZC4fFxH2DOyBOcP wCMNxU31 fUZuKVmBYeVaSNXvBtTEkP8fB0QdrO36iXM7SivaAolcks1xj7J1tSQ3sd9ELTOXtDoU4cUYbnxxiPAFq/R2ycdobcxcdHGNexCgHWaP5/C5e7RCtoX6DAlFtXa/xeaqbJJZuLXXyh6OCGte1wXA65bSkWCixqGB6HXLkJTKd87bamyYI65dZ32NWueXtfDuHs+t7DDnyKRX3wOESjPnGtgLbG4HCj6tDuNnJs638Inca2e8Tz1D0LHT/G9xZcEsauMlJ+QZ01K4RYLSvAwAfPxGgwnzsR3e8o3fguoKXhJvepy+8FGZhvTiTCPNcKP3n6EFFJQub3orjtXGx44kdheYFhPMjMIMBGXazAtxk/WOXJ9LzUDQU0oQzJoB3ewkAGWkLSG67JT0xPf7D9KVIojLNnxz/8VFipxuig4rl3HSIHS2gJipFC+vTz1cXK9Jqsdc40asutJADZZl822W9jD6MqD6jv4Yzd+bBd5IwNPfgPspvNasgs+4zomjVX872liGxD1TeJw/9q1XjkdXWenK6XBieIa5JPPq6wHFHQPKknz4h24fxahviuQKVBkFrTTc/25F4o/RS2b7wfEKGwVW8VXSm7tRT0VFf0YOzU8Ri/uuLWEP7QgAVf2rTKtNSsUBMqfnJTVHmZ6wtoJilrIvIWzfqejF719AOBFHzMfU1W4VOpU5MFagfAudnC839raFXY/dLB/Pft264XZdr99clsFhLzLX79/nJI3UdjmvkeSKutWd6UZRsky1AEaZk3rmioGH12VPn/28= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: During the writeback procedure, at the end of netfs_write_folio(), pending write operations are flushed if the amount of write-streaming data stored in a page is less than the size of the folio because if we haven't modified a folio to the end, it cannot be contiguous with the following folio... except if the dirty region of the folio is right at the end of the folio space. Fix the test to take the offset into the folio into account as well, such that if the dirty region runs right up to the end of the folio, we leave the flushing for later. Fixes: 288ace2f57c9 ("netfs: New writeback implementation") Signed-off-by: David Howells cc: Jeff Layton cc: Eric Van Hensbergen cc: Latchesar Ionkov cc: Dominique Martinet cc: Christian Schoenebeck cc: Marc Dionne cc: Steve French cc: Paulo Alcantara (DFS, global name space) cc: v9fs@lists.linux.dev cc: linux-afs@lists.infradead.org cc: linux-cifs@vger.kernel.org cc: netfs@lists.linux.dev cc: linux-fsdevel@vger.kernel.org --- fs/netfs/write_issue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/netfs/write_issue.c b/fs/netfs/write_issue.c index 3aa86e268f40..ec6cf8707fb0 100644 --- a/fs/netfs/write_issue.c +++ b/fs/netfs/write_issue.c @@ -483,7 +483,7 @@ static int netfs_write_folio(struct netfs_io_request *wreq, if (!debug) kdebug("R=%x: No submit", wreq->debug_id); - if (flen < fsize) + if (foff + flen < fsize) for (int s = 0; s < NR_IO_STREAMS; s++) netfs_issue_write(wreq, &wreq->io_streams[s]);