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 034E3C83F17 for ; Mon, 14 Jul 2025 20:38:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 44AE76B00B1; Mon, 14 Jul 2025 16:37:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D4D26B00B2; Mon, 14 Jul 2025 16:37:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 276086B00B3; Mon, 14 Jul 2025 16:37:57 -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 0760E6B00B2 for ; Mon, 14 Jul 2025 16:37:57 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C76241D95B3 for ; Mon, 14 Jul 2025 20:37:56 +0000 (UTC) X-FDA: 83664031752.21.A3E2C37 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf04.hostedemail.com (Postfix) with ESMTP id 103A34000F for ; Mon, 14 Jul 2025 20:37:54 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=O1xskP4s; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf04.hostedemail.com: domain of bfoster@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=bfoster@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752525475; a=rsa-sha256; cv=none; b=nYPOdALJaZwNzj7ohOG8uEZ5kVdLsIdPg5UDIMbiq1KbbaLEyWAK129ngsVCI/BtXbAMJW zts60dHlNiNa5pXUDTP5XFLdr4jFVaqGvG1iuIkkoC5sXNb5P8GJ86UyYJlDwjkhgPHjls CYZQGpZ74IhTQWqdXCiuu0VD1Ixy2aI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=O1xskP4s; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf04.hostedemail.com: domain of bfoster@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=bfoster@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752525475; 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=0uteaDe8EvXmtRIn0R0Xprl56k/DtY/7aoyuyVPzL80=; b=8p2BVXdAWHzkdND9Mm4weH16ZRaP/5ddfMKydiz69QsfBatd8zcbFh9pUEDWNFvvQJO8+B 2ocnk6GNw05wH2y9uAqlvoJSOcW5q3+nWGTQD3FsZVBYx5gZKqjqjfG+j9mNAq3MkP83Ga jdHqO41CdeVGS91Sv4fgNCB4sfp9Mn0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752525474; 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=0uteaDe8EvXmtRIn0R0Xprl56k/DtY/7aoyuyVPzL80=; b=O1xskP4s9LLefNHddcoO22NhmRF0Uje2m1Pfx4iAwGUgLZRKn2DTlzJF38I4mQxOGHxJy1 mq2fSkjkJJKy2jUbwHOkU1MAYltoiQHGjPewt//BJXJhqePwpCrNd+65DhLwuzS/fdwabG iD+nVN6HRh3PGlUByBJGq/W2tLCybzg= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-644-v3AkmtsJOrW9oJDFCg_DDg-1; Mon, 14 Jul 2025 16:37:50 -0400 X-MC-Unique: v3AkmtsJOrW9oJDFCg_DDg-1 X-Mimecast-MFC-AGG-ID: v3AkmtsJOrW9oJDFCg_DDg_1752525469 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C9F0D180028C; Mon, 14 Jul 2025 20:37:48 +0000 (UTC) Received: from bfoster.redhat.com (unknown [10.22.64.43]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9B4961955F21; Mon, 14 Jul 2025 20:37:47 +0000 (UTC) From: Brian Foster To: linux-fsdevel@vger.kernel.org Cc: linux-xfs@vger.kernel.org, linux-mm@kvack.org, hch@infradead.org, djwong@kernel.org, willy@infradead.org Subject: [PATCH v3 4/7] xfs: always trim mapping to requested range for zero range Date: Mon, 14 Jul 2025 16:41:19 -0400 Message-ID: <20250714204122.349582-5-bfoster@redhat.com> In-Reply-To: <20250714204122.349582-1-bfoster@redhat.com> References: <20250714204122.349582-1-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 X-Rspamd-Queue-Id: 103A34000F X-Stat-Signature: yeuo9o1fbif6yskoaqy1zjgdycgeo5y7 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1752525474-759921 X-HE-Meta: U2FsdGVkX1+CY0iMQzCtCj0qKrtMyJ/O1i7x+7QIky2GjF+mWGEdSJTXv+6YmjQSdVo1/qxaoj++4u9NMwm5y/pMkoFqJJ2wlo6j6bf9Mh6GHijoYu7SMmjmxPUA29EepBObNrgxv8xdfiX1Qn+yn3PK0VQv4VosD86tonBhzVyfMGr2NxqIHSsR/naRem0JvL3KJu2kP/gUv2MRilgsASY0s1qcfgNY5+HrWfWvybH7MclUC9Cyegnw062C3zZHJi0KB+Nxucp2DGwAVx5aWbBMwvKXNtp4Gm6BlJSTCYV1cryB8GIyp8L+vxAqPTHSVQ+DjugvA93oaBt3ULjP+KlCS3syCy/TCoKzf+RgtfWA+QiAra+8wALd11kVrC5qfDFDuI06MB4JoOnoihSEH5GCzATnUlFQ134dedV4EJjZc/H3ScdJCEj7Ww9lnAZoBr/g+zoAQefbT4aQfDHTVIVNFM/2bZdKwhnNp5bToXA8jf7HTgNeT/ixl9B14uc+1fvI7AbnDiX9/Gmch01qBXrUmWTDmnU/PZZRSjlnop8jMdEGNyO6o619mHmL0F/d4fnMe8pM+HM0I5gZuURfjJ3PmOGf2rG5+U79y+7gFozOdikEdVDYKagauapZuFHGuZP4/4iFhWlGAL7YVACUQ0AobHXx5k4iBD7FJsWyJGAMITyH9qsgFfPVkj7oVs6EpC48zxPUAqF4fH/lVOLI0fSsxdlWlMhpt7c5clhPtGXn/u3ela4cA+tmByr7Y1+VyCnMpep6ABeBYsQBYH3xjZdaXKkWfsxyc5VBeoselTv2K89BXPCfkqd0AIvoA2xYPCFZcLmyxkr/ucEo312oWueBWgRxZl2TIQdlYbIB3cuKJnUls/6p4m+tUTPYdbjqLaS4+DmngkARRJttvhQO1isPbDAfB8WaOSt/vdWdnSbf7zQEt0JgMYIGZf3EhTFdEUvqPepobttb9P9cUxT /TRdtdRp UuLfKat1My4RgG0H6xCcPSL/T6iNiBcwS9fM2EUznbFI6AH6Cp0HCPyi3v7CUmBdsSZNqX96fMbh2r3MK/b2uu0KD0cFi8di02kqIhvIHEX/bpZlDi1bVZgSU7E5oLqicbhMWXFLnzUKCahGS1EcdG5C3FaNR/K5wcfK0xllu+0D2nlNzDRdfKikeJ4M6BBDd6kI8oC8MyWzoIGOKqxK5rZWn4N/CyuUUd6Og5KRjruYRNV55aHvUe7HdQLxNPHguuwqu1pk/OIsLHCmBsR+NirfIPdGjkW+KZ4G7V4wdWLAUr4BocddLZSij7oi1DyMHKS/CEflord9X7K929jDoPhaNdggmwLRvzVJ5 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: Refactor and tweak the IOMAP_ZERO logic in preparation to support filling the folio batch for unwritten mappings. Drop the superfluous imap offset check since the hole case has already been filtered out. Split the the delalloc case handling into a sub-branch, and always trim the imap to the requested offset/count so it can be more easily used to bound the range to lookup in pagecache. Signed-off-by: Brian Foster Reviewed-by: Christoph Hellwig Reviewed-by: "Darrick J. Wong" --- fs/xfs/xfs_iomap.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index ff05e6b1b0bb..b5cf5bc6308d 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -1756,21 +1756,20 @@ xfs_buffered_write_iomap_begin( } /* - * For zeroing, trim a delalloc extent that extends beyond the EOF - * block. If it starts beyond the EOF block, convert it to an + * For zeroing, trim extents that extend beyond the EOF block. If a + * delalloc extent starts beyond the EOF block, convert it to an * unwritten extent. */ - if ((flags & IOMAP_ZERO) && imap.br_startoff <= offset_fsb && - isnullstartblock(imap.br_startblock)) { + if (flags & IOMAP_ZERO) { xfs_fileoff_t eof_fsb = XFS_B_TO_FSB(mp, XFS_ISIZE(ip)); - if (offset_fsb >= eof_fsb) + if (isnullstartblock(imap.br_startblock) && + offset_fsb >= eof_fsb) goto convert_delay; - if (end_fsb > eof_fsb) { + if (offset_fsb < eof_fsb && end_fsb > eof_fsb) end_fsb = eof_fsb; - xfs_trim_extent(&imap, offset_fsb, - end_fsb - offset_fsb); - } + + xfs_trim_extent(&imap, offset_fsb, end_fsb - offset_fsb); } /* -- 2.50.0