From mboxrd@z Thu Jan 1 00:00:00 1970 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 24B88C3DA4A for ; Mon, 19 Aug 2024 15:17:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA3616B0098; Mon, 19 Aug 2024 11:17:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A53EA6B009B; Mon, 19 Aug 2024 11:17:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 91B656B009D; Mon, 19 Aug 2024 11:17:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 7482A6B0098 for ; Mon, 19 Aug 2024 11:17:28 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 28265120F58 for ; Mon, 19 Aug 2024 15:17:28 +0000 (UTC) X-FDA: 82469348976.19.4DE4059 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf24.hostedemail.com (Postfix) with ESMTP id 4DF8F180011 for ; Mon, 19 Aug 2024 15:17:26 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=gWkHQgBU; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf24.hostedemail.com: domain of dhowells@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724080631; a=rsa-sha256; cv=none; b=pymUqMRd9NvEBgSkNzvso5xO67F91dBYMhfWIJrpMqWts+QM8YWFHFUrEDUh240y9HX9SI QroAezIqhxtaPrWrpac79CXdrIlC5aMf69VbujBJY7rwsSfDL49qoxGRTSKz5ttwLBK/Sb j01yU3BZu0mJtN7bRll71pY2tRxCDfw= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=gWkHQgBU; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf24.hostedemail.com: domain of dhowells@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724080631; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+oMbslWyUxniTyVqSh/iKY0BQR2pIPVrXRKHLsZfPgg=; b=jLnqk1psjPNASbVx4rEnCA92dmDemt79icRKl1SE2jW7ceCGi52d0mrNA1i9UUMq9cYISE RXogyKFE7KLmpap6ultZC7zfffsoTZlFcBBbW4nm7m2XSR10pro5oa6m1UmwbhDnsfxjoZ qFnvZOaawpwo8l2RUHgnL+BM40fTZqs= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1724080645; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+oMbslWyUxniTyVqSh/iKY0BQR2pIPVrXRKHLsZfPgg=; b=gWkHQgBUdJkHuIUz4nvP98a8EXUxy7TPJN7GrH0jkKO5ft6oLvGtznopa4PEaSX6xetnY1 jcMJflHnZWPckzhmlwRkq9HhBrGa4a1O1wJHVSuHJ/8z8VGbdjqymYcSjPhiyE7zyMUENK Tgs5nhcIvc747PAEobXznJA5fhQWgbI= Received: from mx-prod-mc-05.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-190-mFqV8Sn2ONiReiz4ntrKfw-1; Mon, 19 Aug 2024 11:17:21 -0400 X-MC-Unique: mFqV8Sn2ONiReiz4ntrKfw-1 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8A6B41956080; Mon, 19 Aug 2024 15:17:17 +0000 (UTC) Received: from warthog.procyon.org.uk (unknown [10.42.28.30]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1139719792D8; Mon, 19 Aug 2024 15:17:10 +0000 (UTC) Organization: Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 3798903 From: David Howells In-Reply-To: <2924797.1723836663@warthog.procyon.org.uk> References: <2924797.1723836663@warthog.procyon.org.uk> <20240815090849.972355-1-kernel@pankajraghav.com> To: "Pankaj Raghav (Samsung)" Cc: dhowells@redhat.com, brauner@kernel.org, akpm@linux-foundation.org, chandan.babu@oracle.com, linux-fsdevel@vger.kernel.org, djwong@kernel.org, hare@suse.de, gost.dev@samsung.com, linux-xfs@vger.kernel.org, hch@lst.de, david@fromorbit.com, Zi Yan , yang@os.amperecomputing.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, willy@infradead.org, john.g.garry@oracle.com, cl@os.amperecomputing.com, p.raghav@samsung.com, mcgrof@kernel.org, ryan.roberts@arm.com Subject: Re: [PATCH v12 00/10] enable bs > ps in XFS MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <3452630.1724080629.1@warthog.procyon.org.uk> Content-Transfer-Encoding: quoted-printable Date: Mon, 19 Aug 2024 16:17:09 +0100 Message-ID: <3452631.1724080629@warthog.procyon.org.uk> X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 X-Rspam-User: X-Rspamd-Queue-Id: 4DF8F180011 X-Rspamd-Server: rspam01 X-Stat-Signature: fhodqdp9qgq7q58jcnfun1axdif3k7w8 X-HE-Tag: 1724080646-121332 X-HE-Meta: U2FsdGVkX1/32hPE7+yaA6sT3eoo8fMeP+5DY+7pTNYMVXg8lEXaP1xe+HsxYOb5C6/vmn4zSSJCsu/zJJ28vBLsueouoFEq0KbPDEtkobROHaws/SKB0H0VA7BmEumxKzim+Smpi4Bzj2syvE5nIxer82c/p5WpFlkdFSY97RUO6/kFm4IbZFBI54UohrRHTEwLwadzzfUWJZLlSU7nFgSnjFt2AO10X2qIfa2rlSFJEFv5KdaT+u8YXrD1474Xqgl1Ef+PvsftTBdZADTgVYZ8pqpB8SnEauYhLf351MVzXqTXjxjyZUTm5lgyLvqn18KPrup1QYDsxYFzS+0FdtTw143C2KMzy5SkhjXU0hbTQ+EnJmpOlP80eo193yCOi3OTGm4uuaCFFfF7DX8Fdr6annb6lkXtZK2ZeylrzCa23BCauS+hcibGkMqPVrgrlM9RGO3Xt2EPKP9wYcEl2N3D+Gp9SU9cpxIVYj4lW8p80E46n2pQy5DY5ibDJwv/m3Zbg+tw4AbtcZbAMS+IE3423EixF+zzUakCGslxVcGd1D4JEJn7NShxoA3oybs3j8admk2bgGg0cexX60X1KICKY11293x9YPg7g+VxB60x9u/ebRaaVOysIlgCDdnpvg5gEGa5K2G27OfcqafmamTPOSnbkM5wwpSz2t+B3iOt1gVfQ5IPgVUZX58FcTeOC1vroNkvGr0U8sMJcUmJlfx2Q04Lh4DoZ/GDZ39IV7YZxEh/88/rEdpxUqZfUw6o+FBmhvOMwuppapnD9bNsdJPOOhmEoehubngxJSgDBtO//keDAyBX49uix88qbimu3NMwfcSZ9eStNpldsgOOvp7jhs4JqH2RBxXwtEh+8egUCQFT9NHSFkirSrIBeyxzj0IpmFGv6y6hHJCkvrDWq1m+I7Oo6tIG5TizWmHJm1Fn1MYxXyPofhOk/d91WVV7b5L5F+oIsvSUmjcqaF/ /ZJB0BZA S/MtLGX7UPdx7Kx6rFihc+CdLMyEXrOYjVjU2+za+bt6UBuRtjSZsLnRr9w0Kmy7pudnZs7uQP0mlpBuiY7CLXUtpjqrbHhR1do+wV3/AlK9vEGYHltrxx8jTAuHaysnTcIWviZcqKMvLzeK4GxEVl6GpWIajkRWDRy+rasWKYvwEx6eiAcsaVa+SjOI6W6yRcK+jJMCtzHSk4G5/EhKGX4S7DQGkMPd3532dnLrt55Wo+L9mU00SEvqs6Bt9HibZYkfhp+hwz/yEypl4Xa7pZcqv2LhyPKXQdFgP 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: Okay, the code in netfs_invalidate_folio() isn't correct in the way it red= uces streaming writes. Attached is a patch that shows some of the changes I ne= ed to make - but this is not yet working. David --- diff --git a/fs/netfs/misc.c b/fs/netfs/misc.c index eaa0a992d178..e237c771eeb5 100644 --- a/fs/netfs/misc.c +++ b/fs/netfs/misc.c @@ -214,18 +215,34 @@ void netfs_invalidate_folio(struct folio *folio, siz= e_t offset, size_t length) /* We have a partially uptodate page from a streaming write. */ unsigned int fstart =3D finfo->dirty_offset; unsigned int fend =3D fstart + finfo->dirty_len; - unsigned int end =3D offset + length; + unsigned int iend =3D offset + length; = if (offset >=3D fend) return; - if (end <=3D fstart) + if (iend <=3D fstart) + return; + + /* The invalidation region overlaps the data. If the region + * covers the start of the data, we either move along the start + * or just erase the data entirely. + */ + if (offset <=3D fstart) { + if (iend >=3D fend) + goto erase_completely; + /* Move the start of the data. */ + finfo->dirty_len =3D fend - iend; + finfo->dirty_offset =3D offset; return; - if (offset <=3D fstart && end >=3D fend) - goto erase_completely; - if (offset <=3D fstart && end > fstart) - goto reduce_len; - if (offset > fstart && end >=3D fend) - goto move_start; + } + + /* Reduce the length of the data if the invalidation region + * covers the tail part. + */ + if (iend >=3D fend) { + finfo->dirty_len =3D offset - fstart; + return; + } + /* A partial write was split. The caller has already zeroed * it, so just absorb the hole. */ @@ -238,12 +261,6 @@ void netfs_invalidate_folio(struct folio *folio, size= _t offset, size_t length) folio_clear_uptodate(folio); kfree(finfo); return; -reduce_len: - finfo->dirty_len =3D offset + length - finfo->dirty_offset; - return; -move_start: - finfo->dirty_len -=3D offset - finfo->dirty_offset; - finfo->dirty_offset =3D offset; } EXPORT_SYMBOL(netfs_invalidate_folio); =