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 44FBDC83F1B for ; Mon, 14 Jul 2025 20:38:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 731366B00B4; Mon, 14 Jul 2025 16:37:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6BADF6B00B5; Mon, 14 Jul 2025 16:37:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 534356B00B6; Mon, 14 Jul 2025 16:37:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3E66A6B00B4 for ; Mon, 14 Jul 2025 16:37:59 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 0F299B8122 for ; Mon, 14 Jul 2025 20:37:59 +0000 (UTC) X-FDA: 83664031878.20.2097256 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf19.hostedemail.com (Postfix) with ESMTP id 4FBD41A0007 for ; Mon, 14 Jul 2025 20:37:57 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=MpG2ExYv; spf=pass (imf19.hostedemail.com: domain of bfoster@redhat.com designates 170.10.133.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=1752525477; 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=hooFAAb2LyfYsY6syiVx3vKXoJCft1FIzUwOLKeoBCA=; b=FncTDT5bHGYxh3BAwNwSD9Em7UJgKkiupFqaG6XcpgecELtM12YjxkSMaN2loj51lC7OTn isYv2U+1JPflZ3Bod3W7ztggMD1XiGUvHlAZPGJd/0t/jRgv42hrOLNgayG9rocbWreyz3 RDSgDehm8HRpGLB+9dvwhYp3Iah/FGw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=MpG2ExYv; spf=pass (imf19.hostedemail.com: domain of bfoster@redhat.com designates 170.10.133.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=1752525477; a=rsa-sha256; cv=none; b=ak4nxh5OfxMuhytxtVhHL4u/B2k2MOc4mTtTz4nMTZ+cJVPIMOrHtZmfXPNfkwv34Z8KW/ LvMsx9d4qY/5w5WUZcp/UgktniK3C9VWNUA/TD3tZVcgwDFj6FlZDR4wGRVPo70g7IKiOB 2XCR4k9Rl35OyGSDRvPBfJ5kUwtsVO0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752525476; 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=hooFAAb2LyfYsY6syiVx3vKXoJCft1FIzUwOLKeoBCA=; b=MpG2ExYvPHyS4DokmBOYr2sFISBAWw2h4Q734rHtRVofrA097ajT+pEB9vGO2kHNKZmDhf cwO2F7gzvCetoKNHIpsFhOoEw6Ch2RIsn0eiNnAR7/aNrVDKuJGAB42hh3XA+5NizvYUB1 qMdYElH3brYSyWGqiTyRpXNOO3w5xXE= Received: from mx-prod-mc-08.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-652-_DSMM__jPKGZa9FcPaY93w-1; Mon, 14 Jul 2025 16:37:53 -0400 X-MC-Unique: _DSMM__jPKGZa9FcPaY93w-1 X-Mimecast-MFC-AGG-ID: _DSMM__jPKGZa9FcPaY93w_1752525472 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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2523218002ED; Mon, 14 Jul 2025 20:37:52 +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 C8BD819560A3; Mon, 14 Jul 2025 20:37:50 +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 6/7] iomap: remove old partial eof zeroing optimization Date: Mon, 14 Jul 2025 16:41:21 -0400 Message-ID: <20250714204122.349582-7-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-Rspam-User: X-Rspamd-Queue-Id: 4FBD41A0007 X-Rspamd-Server: rspam06 X-Stat-Signature: 7pyrkpyprogf83tdrttsgpfuz3dqdo8d X-HE-Tag: 1752525477-176790 X-HE-Meta: U2FsdGVkX18Xrb1ELFrtALtLrSvpcB9XqA4dlB/u9pIrBmaSOCQkSljyjfFXWKNHrW8gaZKNBHNVw1dCSyJfZjjl57e9nFa9fTSQmorYoJwuhyceWyjtoCs4SZlxPnTG8nIi6KEYM95WvyF8Jh6lT4XJFC2xs1xQJuJSrQWDm8fq3JKAksrs0uGMwPNn+kgHi/htZ97V+UfsdI4PuZclcSHympsLa/gMdbQAWHBttcKd8vaRx96sJlr7xNIO5h2dSArYE48bqe9ZpPUkkjI1zatyhnF0mYK6tMIRo+PMpeI3RHxwcK5kaiCyZjE1KiQJOT5v5aMp40uYB7qtgkt34JX6sJm398SYYsmklpzzvCiG+nj5F+4oUsLLWhlUVWzCdMxizrtU+zzfFyiazJplfXHWZ0zYNUp1BQ2tDZwYjiQffVkxLucr9FogPCDF3V0A+JNEqo9Tv/yzJ5i/M/o6GMObVluMQ6LcKWPKz8BiOhSXPlKQrGe7Kcy2LUcdcWU0niOVqJFG22g4OaRDxFonzoEVX3afT0fV2Al0Gyhv2C8iLsXM628tLoe7C8Uyt32L+06CP2T1esfApmYtJbaC4qbHa8LPmjsaykuNAqShCXph4BhEaYDXTcEzN7k1Gr69iuW23v+V2mzm9c0bK92b99ji04Q+OERW6CIg+2oM9haN12rd+KF7Q8wbHDHnsd+1pWSIyoVd9VBYACLfjCcAOBaQrm91qEn4ZmuttisxbpJElSgpV/ZmQGjRcGWiqdwALG7C2h54DqAfUERauIh6AxfgU8RnHeWi5siDm/nv6slLBiMfjFv6/PJp1v9IhEbSWQnsGyxH47rQt5u/iwIya9j3ReLnqYwukmYPMzHYdaHJfjWJN4Em8VMR7bvYYbDQtHSVWFmtA6rTF6THikajXcRLZAT1ZIQQmVCLKR4fhCRLZDubzVPVbEgH3Dp5qWWAoIDWK2qrqulOYA5o1tT EUjBsJMF LzIYIhTuQjOrZQnQlvRgMlZLnowQ78jGP+QEWjnAYsH78TQniv/e6eJ9RFia+a1324luUoI61UNtOpiSQCEGtb//dCsu2TnYJTrcyKQ0U9Jpeofrx7DM1J7PfyWYXKeszcq/Ig+d9HnGl6czzT5quRTeoJrZuUSRjldwHenfC+tQ4q0Yx/BSFmhtubsQ4GgQKJ7Z2e+sZO/SscA3D/KCyQS7oYiRG6tK6//sTz2zLvCQ/Z9fHv9XsJLGXZW4mBtDu3foMOREF/ntZyMw2oKOrg2NIcSU2n1X/rSqGJDEff/TDCQvPP3SeQ0p+g9bu2u7TzDRaZG5v0azvpso= 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: iomap_zero_range() optimizes the partial eof block zeroing use case by force zeroing if the mapping is dirty. This is to avoid frequent flushing on file extending workloads, which hurts performance. Now that the folio batch mechanism provides a more generic solution and is used by the only real zero range user (XFS), this isolated optimization is no longer needed. Remove the unnecessary code and let callers use the folio batch or fall back to flushing by default. Signed-off-by: Brian Foster Reviewed-by: Christoph Hellwig --- fs/iomap/buffered-io.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index 194e3cc0857f..d2bbed692c06 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1484,33 +1484,9 @@ iomap_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero, .private = private, }; struct address_space *mapping = inode->i_mapping; - unsigned int blocksize = i_blocksize(inode); - unsigned int off = pos & (blocksize - 1); - loff_t plen = min_t(loff_t, len, blocksize - off); int ret; bool range_dirty; - /* - * Zero range can skip mappings that are zero on disk so long as - * pagecache is clean. If pagecache was dirty prior to zero range, the - * mapping converts on writeback completion and so must be zeroed. - * - * The simplest way to deal with this across a range is to flush - * pagecache and process the updated mappings. To avoid excessive - * flushing on partial eof zeroing, special case it to zero the - * unaligned start portion if already dirty in pagecache. - */ - if (!iter.fbatch && off && - filemap_range_needs_writeback(mapping, pos, pos + plen - 1)) { - iter.len = plen; - while ((ret = iomap_iter(&iter, ops)) > 0) - iter.status = iomap_zero_iter(&iter, did_zero); - - iter.len = len - (iter.pos - pos); - if (ret || !iter.len) - return ret; - } - /* * To avoid an unconditional flush, check pagecache state and only flush * if dirty and the fs returns a mapping that might convert on -- 2.50.0