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 74641C5AE59 for ; Thu, 5 Jun 2025 17:30:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 22E146B00C2; Thu, 5 Jun 2025 13:30:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1DD406B00C3; Thu, 5 Jun 2025 13:30:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0CCB76B00C4; Thu, 5 Jun 2025 13:30:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DE9616B00C2 for ; Thu, 5 Jun 2025 13:30:39 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 84F3D5ED85 for ; Thu, 5 Jun 2025 17:30:39 +0000 (UTC) X-FDA: 83522036598.01.B78CA0D 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 A6A831A0019 for ; Thu, 5 Jun 2025 17:30:37 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=LYDVqTcF; 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=1749144637; 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=RYOthLuNgac4RW4o21rqMbEJL8YFxEWElKsq4syPZ7w=; b=bLZ7FjOR3bNe3AGEDb3GJUjrfnNLMIBqfL93Cc9xO6KPleNHsU4b1QCnXGjhldC5uhovU6 ueTCnF6DngJPaBHmNJT6xsrxGDhxNEwkde3yOwbEX7M1DJpOZWIvYteHck7Mes/XdJr+S9 bt+dW8KTL2/kY5lKWqWCYTaVcPghznU= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=LYDVqTcF; 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=1749144637; a=rsa-sha256; cv=none; b=SeQaqp+omgh8cn/74t5cjfswYtYORg3ppqbSIb/RzIl+dAvI1uTMZhx32iywd8kichMqOX iCbFE2lQF7U0bPTaaXDoniC8/DHBhykZRlddovnaYNad7VklEbvZWj72Y917OU6UrJxHQU QD66lib4tGOgCtueKyAXPtclnIcY3lk= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1749144636; 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=RYOthLuNgac4RW4o21rqMbEJL8YFxEWElKsq4syPZ7w=; b=LYDVqTcFHUKw5i32VxAVxVGErO8+OneV7Tj/PTnYreNxuEYOdjZWLX4BVTFyphmuoe/nAj GNO7Ehfc1fOzx3gNbXw59eTRcydsLhPThEn2K8WphZHsVKKy/6/68XVNHEZA+x1epAV/1E oPjl8UkJnyR0BjIQ0cu6dfWmux5VbZI= 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-502-7znD5oX6PBCeGIvFNUNTrA-1; Thu, 05 Jun 2025 13:30:35 -0400 X-MC-Unique: 7znD5oX6PBCeGIvFNUNTrA-1 X-Mimecast-MFC-AGG-ID: 7znD5oX6PBCeGIvFNUNTrA_1749144634 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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 55DCD1956048; Thu, 5 Jun 2025 17:30:34 +0000 (UTC) Received: from bfoster.redhat.com (unknown [10.22.88.123]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9B42A30002C0; Thu, 5 Jun 2025 17:30:33 +0000 (UTC) From: Brian Foster To: linux-fsdevel@vger.kernel.org Cc: linux-xfs@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 6/7] iomap: remove old partial eof zeroing optimization Date: Thu, 5 Jun 2025 13:33:56 -0400 Message-ID: <20250605173357.579720-7-bfoster@redhat.com> In-Reply-To: <20250605173357.579720-1-bfoster@redhat.com> References: <20250605173357.579720-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.4 X-Rspam-User: X-Stat-Signature: rp5sh69fd5tqgcodedo6ns4e9e7hb8me X-Rspamd-Queue-Id: A6A831A0019 X-Rspamd-Server: rspam11 X-HE-Tag: 1749144637-831665 X-HE-Meta: U2FsdGVkX1/DcbehQuVAbE+Of/VlwPZi1IKsvzuh40xYYUWIHnuR96Nk5rN0SlMgMzPGHvLBGD47VgXMqrHcPR5pb5bjwSVxRHb+lpqay3YQoVczpASI99JM/o7IWMVgLaK+zC6ytuRWKEEM85uEyQP9oMPwtHGNchk9a9aSSjL8F9oFiPoj0U5ByC8LtPRaMjzW/INBNF5D8Jy8gjsqWiYgOWF/smnD7ZKucTiQPyYJiYIQV1o+bLa5sB+CdHhToRJJXFUPFsAEjbfJT4bqkqDhSdE91Uwfxeyl5MQYc9R7ScC7bRrar2AP3xHQScCdPrGmUDa0qtrnBXhLpzIxcSfMUhv1f/MXhmXeTdafYJ43WoXMVp2+L3Z1f8oFwKoCsqkdyBC0kw6y1PC0U/FJB/yPpb0Z8YceRFkAgHMfsLN2cRa1JvyFng+aAakxZhvls2bzJzbiW3243ciB2CgfuvOWR9J6a4aOvt/FmC1zvwMbWhPpwfQJ4vDJCPlMLJ/geLgA36P0R5doTVkdOD1bv9sjMSYLqBgUDgBZW/YnjtNp1thFL4Vrlc0gIafYNhhN/3IFClTtxojIDgnVppAGQPFHnvKIKcF7KGsXNQlZVgWF1u3mhhzdcAXvr7l4e1RpuY1XrRMm87XKhEUQcbSexBjj+q/ZeUrt5yBtIPjVFnui3xGlpHw2zkSGZJFzKAQpB2Cs41tYlhfUFChJKZ0YWky9LlV+zSlbCMxnq96Bh4B/xXb2T34WdDvqUq9Bz/aTI+BhL99cAmz+BCf3puyn+YdwDM23fHrnB9M5vBrjmQzgliPtL6U1A0vi/Dk2e+wj7NMDkcKEBznpIkpeQHPcYxc1RKC9QgpCyFh+h/sc2SBWKY1m8G/zzPvC96aDPfK5vBd8bRh6D12Ps2fxCuIueLxSkuO7eUcV5ekqdacVvIHEJink6VscNR2e4aUAz+PE1AFbNu8S4cnF3KdMP9K LeZz2e47 /0Sj0VgmMtnlGhSNUO2/gBDLNSnHgOQN5XZLbCfg9ObFjEEaCk2ozbuvIyQqmwMuPv6w9jtvgCHtLvJ5Hzok9D3Td23T4x0dVOu2lTheZNhCnGooensuJYPMm8FhP6K6IrxqqyluJTs2zz1cWQt6XiOzQkcyrDlnFzaKFcUniph3Vgla04mwqiKeyrr+kBiuMDdBctJrPFcM0ThifXZmeyYUiX44mfiHj3OCi24AjYeuat2Q2liiTwtPpckMU9wto6w3stK2ZS0LZY77UDDrPWOpddhWGyChmVdNU/PV84fHzx7ZG6gD8DdV1hrtw6UXZkmGsnfI412HA4xc= 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 --- 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 cf2f4f869920..ec58f5dae71c 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1471,33 +1471,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.49.0