From patchwork Tue Jun 27 05:07:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yin Fengwei X-Patchwork-Id: 13294006 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 6F65BEB64DC for ; Tue, 27 Jun 2023 05:07:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C05EF8D0002; Tue, 27 Jun 2023 01:07:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BB63B8D0001; Tue, 27 Jun 2023 01:07:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA4CA8D0002; Tue, 27 Jun 2023 01:07:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 9C2938D0001 for ; Tue, 27 Jun 2023 01:07:15 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5BE54B00F3 for ; Tue, 27 Jun 2023 05:07:15 +0000 (UTC) X-FDA: 80947344030.09.5539289 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by imf27.hostedemail.com (Postfix) with ESMTP id 5727640005 for ; Tue, 27 Jun 2023 05:07:12 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=JeNF2d0A; spf=pass (imf27.hostedemail.com: domain of fengwei.yin@intel.com designates 192.55.52.151 as permitted sender) smtp.mailfrom=fengwei.yin@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687842433; a=rsa-sha256; cv=none; b=dX1zCMnnjTdEfO9a7O5DoewhuYGkBNjIET0zktN8m0ZCt9KUWPOGoCDEXvm0nSvQ551oSc lOfG7r/lM6/yvZWxdnBTtnVUDQY/bD4y7fGYQqXBEysZwihgq1ci4Sw9WbFLQVrn+0c3DT qEY7XsyRkp7Zdwy46PY53LrILS2GujQ= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=JeNF2d0A; spf=pass (imf27.hostedemail.com: domain of fengwei.yin@intel.com designates 192.55.52.151 as permitted sender) smtp.mailfrom=fengwei.yin@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687842433; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=FhTRP0e1hlPeVc/1zTc9kB113BtqpEKosEn7G/IlGwM=; b=ZZhrepzjnKu/A4fNhumuLfS7yFZ8qMyqnJhCdrBwR6c+K1IyE+3bYRTINmb5d2k2FsBhC4 rghdhw2YNCwXgESYZfibcSr1sUDcJFo4fQkJdSkVDObNxd3A+OIPWN5XimIfS27f/FPxD9 WRgyOg0RrZDg74JoRcyj7sTOeMihGdQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1687842432; x=1719378432; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=ud+CunnfVYp9ThBCLHD+sITFdVXD+yTRAxxIAbdMevk=; b=JeNF2d0ALHk0PfeazuAG79fFqX/3m0FS25qdSI0dvOgEufnaWaqXLG4w KWX/hdcq6DAYyCDH11S0Z9jth2VAcm0Vx03KB+irg7rTtkVWv1hJKRkIF FgI7S+dqmT1dvOXwYZXasRq+3jc+1ICRRNuf0S1zUZExvv2BKzQkPL5+q r+hrDDXfr3MjUfZV+uXLIH4ioJSCgVnV1EzDGejxFJBixZOLRyrokp/YE CBgdHfIhUSFFiV0GRSttOB1V29PJ/qWBHSnoRbsXKTwt3HGR4s98Cq2Mz nXkmT/MOeUUYV2anJqB5AQJ6Tvz9xYgQaRAI+ubZuWsoquZSKye+izf0E A==; X-IronPort-AV: E=McAfee;i="6600,9927,10753"; a="341816757" X-IronPort-AV: E=Sophos;i="6.01,161,1684825200"; d="scan'208";a="341816757" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jun 2023 22:07:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10753"; a="806315435" X-IronPort-AV: E=Sophos;i="6.01,161,1684825200"; d="scan'208";a="806315435" Received: from fyin-dev.sh.intel.com ([10.239.159.32]) by FMSMGA003.fm.intel.com with ESMTP; 26 Jun 2023 22:07:08 -0700 From: Yin Fengwei To: akpm@linux-foundation.org, mike.kravetz@oracle.com, willy@infradead.org, ackerleytng@google.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: fengwei.yin@intel.com, kernel test robot Subject: [PATCH] readahead: Correct the start and size in ondemand_readahead() Date: Tue, 27 Jun 2023 13:07:02 +0800 Message-Id: <20230627050702.823033-1-fengwei.yin@intel.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 5727640005 X-Stat-Signature: drgygj9dcir5oyfa43e6wduukifh5rbs X-Rspam-User: X-HE-Tag: 1687842432-117700 X-HE-Meta: U2FsdGVkX19SZwGiGvOs+yqtXde239qSEFXE0J7ms4dsKABbRAoDd0YzmJHIGWoAnRz2pYBy6Rz2VBBbBO2SFNzyMigzzkaCdboiEKZWJhEV7nI3W+0KweadCAHbK60J/ogthuu/ZMlR9yPcZBlb/U8BF0BfPJft8aFv99oc95GqWV0jMZpP5NMeDB+pbrZ+dSvU8+xgo/of0tqCRxS3K4PVTGzOyFuXh1z/SqPXGkx5EeOHeK6GKo7NVQGYYQgK0HhJTBJ7ADc3XHoRSbfdkSKKOppMztrLzdqcaDh1oWqzWzp2RnohPhxEP3WSJhXSIze18+mOZiQN+jKksuSGBGFRTRKYVGA8IaGRLI5cNLzNdBFGF0IQ41TOYv3w5lIgIVPNOesN+I789pQGCH2H4WirDftP/XFGGBr/xSPmKMppJ/fFWUtQwwh3sdejvriqzvKF7nM2+N8N+Irj/GQkrOOvRMbD2Z/62nxO9JMg3TQAncfBDDtF6YxghJ60UbtbIbKvyxJtRD4Xw3bWxM8SEHlT5UkKNWiZ6si8kJoRbTFkcHwkBMbHJqwr0DO6ddYsJd0oRqit6iijl9H2od+Mh/l7T5WE2dnaUxhz2YEokajBrKUtNNvoeJqePuN+/icp5nKOpumoRLvWtwqqfJczHld5qv2/zrqYmTxxUQ5XZ/EO98SFpUdrnI32/kxBhPmPGN6TbHZ+Rucd1mggDGgw7NYLR1LpBXYhQUU1DGESAlhO6O0Lg8pXnjsrCnTkhe3TtaE8b27G2AfRLzoOGxQHSH1bXp5lo4gbl0q0+hUfiC205Qzy0YgZI9QQ+hclINTBAPs+d2uFSL5PSZOyn9+gXUPW28Sw/3piQnRoNHVBV6yu3bCGTBM51jrDln5HAY0L0Mu96jeTXRmKSO7u/ia47GCK8s4reeHGIcz3wko7znUl9w8iZLCYzqGlJVN3NnYBF3ePxkkkqByBJclg1jr esFtUPa0 0ZkasmPlL7ioGnm2bi/EtzmWr4Nf0TtnjoQdDouPnzjY1NSbV2o/Dn6Cuspw77pYnGn5mHBMkrmnCxwPUN+6uDDMVkS929efjvkjh8Vo2wfB7AL04RdRfQMsYbBMvOP2jT7mnjyiF7gRbEO54ObQ+ozVk4v/04TI9QIBleeR/HoWzbT7Q4S2ev/pxxTuOxH1hjMhzgc6V07WPVZy/gZDIhJXGGDG82IomRjjB641jhy8E0J/aFgigXOnumns9D9cNAye3 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: The commit 9425c591e06a ("page cache: fix page_cache_next/prev_miss off by one") updated the page_cache_next_miss() to return the index beyond range. But it breaks the start/size of ra in ondemand_readahead() because the offset by one is accumulated to readahead_index. As a consequence, not best readahead order is picked. Tracing of the order parameter of filemap_alloc_folio() showed: page order : count distribution 0 : 892073 | | 1 : 0 | | 2 : 65120457 |****************************************| 3 : 32914005 |******************** | 4 : 33020991 |******************** | with 9425c591e06a9. With parent commit: page order : count distribution 0 : 3417288 |**** | 1 : 0 | | 2 : 877012 |* | 3 : 288 | | 4 : 5607522 |******* | 5 : 29974228 |****************************************| Fix the issue by set correct start/size of ra in ondemand_readahead(). Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-lkp/202306211346.1e9ff03e-oliver.sang@intel.com Fixes: 9425c591e06a ("page cache: fix page_cache_next/prev_miss off by one") Signed-off-by: Yin Fengwei --- mm/readahead.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/readahead.c b/mm/readahead.c index 47afbca1d122e..a1b8c628851a9 100644 --- a/mm/readahead.c +++ b/mm/readahead.c @@ -614,11 +614,11 @@ static void ondemand_readahead(struct readahead_control *ractl, max_pages); rcu_read_unlock(); - if (!start || start - index > max_pages) + if (!start || start - index - 1 > max_pages) return; - ra->start = start; - ra->size = start - index; /* old async_size */ + ra->start = start - 1; + ra->size = start - index - 1; /* old async_size */ ra->size += req_size; ra->size = get_next_ra_size(ra, max_pages); ra->async_size = ra->size;