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 24501EB64D7 for ; Wed, 28 Jun 2023 04:43:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0EEE58D0002; Wed, 28 Jun 2023 00:43:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 09FE58D0001; Wed, 28 Jun 2023 00:43:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EA7F28D0002; Wed, 28 Jun 2023 00:43:16 -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 D7FCA8D0001 for ; Wed, 28 Jun 2023 00:43:16 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id A982BC0B5E for ; Wed, 28 Jun 2023 04:43:16 +0000 (UTC) X-FDA: 80950912392.13.174C974 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by imf10.hostedemail.com (Postfix) with ESMTP id 0E01DC0012 for ; Wed, 28 Jun 2023 04:43:12 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=J6SqnEp8; spf=pass (imf10.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=1687927393; 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=k/S0b2lQYRv+KQguwwQz4tzRmPBLvV4N0uBTkM2W2Z4=; b=ZxamvBmaCPZt6BA0QLJ49CuF9JD13spwayA1nvEDnB5sZHph7BnxkLiNHliN7jxTskHbSn /HMHxntbmMujZMQNB1ET587ardXH3XWVJy9Z7hC9IWMz7j0wa5anI4vlbtTyaYxfNFn+WX /yR0RfVzQBKzrIaYvQeV/wrMHUsHliw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687927393; a=rsa-sha256; cv=none; b=A+pUqVh9U/Lm1pnUxxjU/DkSan38bMZWjW9GnJvdrC/QMqszKNa7TKquP3j5A5sklnxnl2 1bxr8CSCALZPnQNWKUB1IJi8vUOTOtvDpkl8I5LPpH8sXJ7xXe684ntr25bBBwvCj3S8B4 Bkce7v89pzKCZpIcvQhvq/rQRIymgW0= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=J6SqnEp8; spf=pass (imf10.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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1687927393; x=1719463393; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=/qPMcMuAbH8XbNYSsnxXR9j+8vlCJi+JFzYYpfZQA1s=; b=J6SqnEp8+YhCERj9vY8G0PDAM6dyIhNbHLiQ1veFSGvKP2T8q09HXYb7 2NlzBVDxDSODMA+TyhsZRO2wJbz+/lQDdfhO69vrgsx7kSJ3H8awVlzY6 vlUa8I1ezm+IxWYfE9cdoYOuGb9CVJJnOdtxCWK3IGnbG3A8d3TJNXkWJ FjG0pJbjsIRA6vdity5ma5jvZYvsQs42bTwL69jNokDzAKDVBCuNo6ZNf kb4fsEmGTyDdVqYx8o9KRv4Ex+odtN2F2V/ePHc11rRgrKwC5GAp7Yodr ZkwqQAvWRMFZcCTt6f5eYfwEtmFJKTBy4eIMoesaoLfAlGVifhns7x87F w==; X-IronPort-AV: E=McAfee;i="6600,9927,10754"; a="342087738" X-IronPort-AV: E=Sophos;i="6.01,164,1684825200"; d="scan'208";a="342087738" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jun 2023 21:43:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10754"; a="806741515" X-IronPort-AV: E=Sophos;i="6.01,164,1684825200"; d="scan'208";a="806741515" Received: from fyin-dev.sh.intel.com ([10.239.159.32]) by FMSMGA003.fm.intel.com with ESMTP; 27 Jun 2023 21:43: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, oliver.sang@intel.com Subject: [PATCH v2] readahead: Correct the start and size in ondemand_readahead() Date: Wed, 28 Jun 2023 12:43:03 +0800 Message-Id: <20230628044303.1412624-1-fengwei.yin@intel.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 0E01DC0012 X-Rspam-User: X-Stat-Signature: 4x5izc4k4ore8wkihutp1syytk1awpeb X-Rspamd-Server: rspam03 X-HE-Tag: 1687927392-753647 X-HE-Meta: U2FsdGVkX18YqQ0dA4+/4JdvV8BEpyO2eF65corHlQuF+4hipYsYf5U6v89gKQkEHv6r7hnPjljawgf3LL6AA013m404iKewcQYIwWIiaQShpOH87l/TfJ0zHEROyMi85O0ZPG8D8xk+zFng0In/gMsNt2+c2xZBUTBmhhmchLWuEidjDxPVsw36+IrPVV1Lr6Ytpr3FwjZOWlAazhsqL2t7I+Ta2S24J2sKvOhhM2Ye24x+MEWj+A4KhEfWCKEbCrBGJ44pgkW2VX6G9ZQlP1eNYTOEDiS/CK0emk5SdxMBN2bJ4EBu/IAcaq16MW98Q3rOhO+rUEMj3rvBk1P3HlagEsDz1cYi3ewCY5Rkk426YbldYOQem3D0Pu9cxw4rSyQTLWPlHYGAc12RkdN4PLiCiLedcmjNV2qbu4m4133lDuD/w0TdHc8UVAJ/px28+yGRnq2aoh35pWik2iiSC2rAamb1TjXR6+nENS6sgzYtRR4HNrP2SNGOH/TO0AOXYkmnI6gOMRfl0FWnO409guuq/3qSaaxThosc/rH0KGoxfwHXx4TvEsAxGkLl/B9634TTZkStSMCKvRC1bkjNmtcKQvqe4RHkeliicnwbXiT8IJq778Kyt+bpGkE7LMc+HEqivy29cI5NOJg2jsMsvqto7h7jRuoqRLfNc+9iVDmWVUYey/ueVp7kf0/g41yuO9y6wInTFsMmn+X0aAdvOuTIwr/aQH37r4vgiFHjz/4NA02EUSFXueRHFZd91OeJWNabPjANu/lSop0Pp6CKH2yy/jkpVUSzdRwWmNnBEWB+JPgBcNK2xjV8CPfPjffVLxQM2dK9PYrpEvVWAiraoEhy9stY1fh1+7LHWQTbyZz8VtKvkta+OrVfpwuxbWHFP4BLRzIWnfZNoZHfGOzr7Jn4iELU7S0TYijjSh4lySWomj3evMzo2H2SdHM1lYLr/Jy8wd4/NnmrR8z5tWd 7GtiJfXO o/d60HQtNeWIBy262g/ZTlS/qkmp6TL13+hUBD+KTJ4/gNyWqyF4owEZMLjPvPkwKcEl60H9TzIMOuy4NC5xkn4LeCRXhm/J4wINhxQAkq7r1kmZrp2Nq2wqs3ckvKkfo/Wt25c+5C2YMEJmOEWHKTT2/I+jaKJw7Hpzqm3xkFIHPw20hgBJgIpXMc5bj1m/0LMDKFfTVUn31mzBZY7kU47bAv/gnnZdh+KQfSmnk9UzgR1aWDbXJxQ4ikJ6bAXcZ8wdd 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 removing the offset by one when page_cache_next_miss() returns no gaps in the range. After the fix: page order : count distribution 0 : 2598561 |*** | 1 : 0 | | 2 : 687739 | | 3 : 288 | | 4 : 207210 | | 5 : 32628260 |****************************************| 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 --- Changes from v1: - only removing offset by one when there is no gaps found by page_cache_next_miss() - Update commit message to include the histogram of page order after fix mm/readahead.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mm/readahead.c b/mm/readahead.c index 47afbca1d122..a93af773686f 100644 --- a/mm/readahead.c +++ b/mm/readahead.c @@ -614,9 +614,17 @@ 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; + /* + * If no gaps in the range, page_cache_next_miss() returns + * index beyond range. Adjust it back to make sure + * ractl->_index is updated correctly later. + */ + if ((start - index - 1) == max_pages) + start--; + ra->start = start; ra->size = start - index; /* old async_size */ ra->size += req_size; -- 2.39.2