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 B47B8C83F21 for ; Mon, 14 Jul 2025 13:17:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C5D936B00A0; Mon, 14 Jul 2025 09:17:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BE7816B00A1; Mon, 14 Jul 2025 09:17:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A89386B00A2; Mon, 14 Jul 2025 09:17:31 -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 921CF6B00A0 for ; Mon, 14 Jul 2025 09:17:31 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5F243129AE7 for ; Mon, 14 Jul 2025 13:17:31 +0000 (UTC) X-FDA: 83662921902.26.FA72911 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf12.hostedemail.com (Postfix) with ESMTP id 80A9940004 for ; Mon, 14 Jul 2025 13:17:29 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=OGV6XXvY; spf=pass (imf12.hostedemail.com: domain of bfoster@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bfoster@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752499049; 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=2V/k40OfDRfmxpJ0yORpp6OeZtn7KeoK43jsdFQ6TEy5kXO72wTQHMkPz/zJUrPmDhTwbn /qw69E9YTx3qotJ329b/75ZSVuhymFoFZMLNTdO2yKGU0T5IkYGAsP0Lqw6eSa7RJqs1Yk ixJX2k/JU0NPtmD9FcvXI13+wdVMnXM= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=OGV6XXvY; spf=pass (imf12.hostedemail.com: domain of bfoster@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bfoster@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752499049; a=rsa-sha256; cv=none; b=zCR86GZt2+h4aZFfYr34KkIOa4t0xCrw2NDCE3YJVPtobBFZyA7FRVMaR5zq1yYjEmKCFo 7Lxt+z3MrlAC9b99fv2NzB3aXvrXEvXuVOltv3OyOUI34xIlyox43YRlMEb4aEmP8LB6jb +3GY1FlkcN3zt8cIVbRjAbg0HZJ3juA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752499048; 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=OGV6XXvYO7RRZS9KMSHVPKyRL5AI8dsKnXv9TNp6OmKjyZBMlMrdZmtcf5pmxfKrva/4xC 1a1JigVZXTkGo62U8opNL/0/nHdNPgsi1xNvCnrCu3s1xFlm3hVlVic0IT3ESuDXXe5QIb syc0DfXszlmqQ8zuENQEEVm/OXui/tE= Received: from mx-prod-mc-04.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-609-j42SyLOVPIOfnQBBtoAETQ-1; Mon, 14 Jul 2025 09:17:25 -0400 X-MC-Unique: j42SyLOVPIOfnQBBtoAETQ-1 X-Mimecast-MFC-AGG-ID: j42SyLOVPIOfnQBBtoAETQ_1752499043 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C96A719560B6; Mon, 14 Jul 2025 13:17:23 +0000 (UTC) Received: from bfoster.redhat.com (unknown [10.22.64.43]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8CD3818002B2; Mon, 14 Jul 2025 13:17:22 +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 v2 4/7] xfs: always trim mapping to requested range for zero range Date: Mon, 14 Jul 2025 09:20:56 -0400 Message-ID: <20250714132059.288129-5-bfoster@redhat.com> In-Reply-To: <20250714132059.288129-1-bfoster@redhat.com> References: <20250714132059.288129-1-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Rspamd-Queue-Id: 80A9940004 X-Stat-Signature: iy1mo3t34tz9wmoqpwbsqrqs6zibbj49 X-Rspamd-Server: rspam02 X-Rspam-User: X-HE-Tag: 1752499049-346974 X-HE-Meta: U2FsdGVkX19Ew9U2fNf8FDKzfIZlR+RSTg47NeW7mW1w9evcW54fLKJYcev4ycg/0nzCtdhoVRNTz+KyGWQYMe/l9fdPkR2zHZfBKQ7Gbv7TQVWbzybktHCK4Q/6w/EdYN57NTM0e9YnjJo3Iu4xoqUYsRtS36hIPV7wciKf85S0a3+wCixuWEiXL93JEOvzxrwe/njCP/9R1OJs+eloUyIC4Uq0VajJvIpIyVmPTFQUTcQ+oHLwPF+Th5xvBSWe+A20v2ignyDbvg+GMQMC+aeFhY5UOLaks12I6aLHAubKZ/3NP8lxM1uRqC0ybtRSSv8OeDEI7AEtQtKCMUax2jkJfD1Cs7HTV9KL3SkxQVepisCxOIdJlEaUq2AdUpFnsNnS3Fy3k3d5seNBk5u9U/10QC2p0D6LNXxBNtjoTQGRwhWtvfKmXRg87qzy1sixtQnGgiZDHaDXKgS4hl3aB4d+PR8nfYVb1qwN6iHUkPSTMWWhuU0TKZYwKpCIwGN6g2gXOFzypHZjv3PK4k9wibwrMdag4kKLQC3qHCtkHVnYQxZ3JaUiRuchOZleZiJ2jtsCuQzH3ub8AB0C+hSxGWcWuLGjSWuhAJkbRRmuzeTVy0dHxQpzc8c+LBHqgp4Z8MoubV3B9ytnMIJVGtO1nlkNJiCCVIlCfRKQp3sJuzX0t/Ji+dHEnOg7M9CPwQYFqXA8sjTlZiQ4sOSIHUZ8y1sBn9/MPmS8J4Q/cHq+fiYWq2ypulsKrxkWZdDYnd7cSXcXb19KURZjxdF50BtxwvgjehYIJYq49M/LATbY4XvOu/FcQIFyLj4SbYzLJPNk7b7x/Iq6/4IOexIgWloXmmrn33M0zTMZoQ2VDfZC4XbhdF+/tVPt3hmFTjh5lPxPTqGdR2SnSZRgXp5SgKiFJzqeA+2NTG0c6PToso/Ns6p1Rh0YRLD8xnhQWhb88MAu8+xPj92y+MSMobYRU5u Ew9AMF7O 8jxBz2ETd1E6CoujjvbykjoRizrXqVhwQNiP1cDciWeA5ziELb7UZRcg7k7+IZQ0tZQCaoaPRCJkEF/oJbJyUy6wuNDGe7YBlT1rt+yXVY/sZ8ga3NlGeptdWmQQecNeJh9h7IqoUJz0B2O+Rxn9Pn22h/tlAtAtQwyJwEqlPihTvnuM4fkKgZHjTELTLWPU8DBb8KQXufDjQ8I8RngMo4XrFiKCKrcSrrQDXb/tS42JI5CH2pvssEZKjZfeV2jM4Qcynp8J9kiJ1Fv7OZRYrwCrHYr/XjOYbTZh+umcj7AkBarufMelFXz7nzw== 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