From patchwork Wed Mar 26 03:38:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolin Wang X-Patchwork-Id: 14029706 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 99691C3600D for ; Wed, 26 Mar 2025 03:38:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EBF55280051; Tue, 25 Mar 2025 23:38:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D2D96280058; Tue, 25 Mar 2025 23:38:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A700E280051; Tue, 25 Mar 2025 23:38:29 -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 81E6B280056 for ; Tue, 25 Mar 2025 23:38:29 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2323AC17A6 for ; Wed, 26 Mar 2025 03:38:31 +0000 (UTC) X-FDA: 83262294822.16.FDB7AAB Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by imf01.hostedemail.com (Postfix) with ESMTP id 1FBEC40002 for ; Wed, 26 Mar 2025 03:38:28 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b="yNpTLd/i"; spf=pass (imf01.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.132 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742960309; 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:in-reply-to:references:references:dkim-signature; bh=MAxRD8P9W2N0YRcf5gQPGY2DJk1Zq+bjVf3MR/WuNdQ=; b=tz5QztMp6rLh8k341gl5e4WWnWACgdRVHvkXZjokwitLfxMZy5RcLdUTM6q215yiZoQrkN pMSHnXRBX/AVjA1c3VrznQI+Bwnd/VWG1hBA35sds9TMaMxTpr/1P2TbiCRPj7d98giG5y 6gMsN0gl9znLtAbbtraW2vv3l0+Opm4= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b="yNpTLd/i"; spf=pass (imf01.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.132 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742960309; a=rsa-sha256; cv=none; b=6qAcRmv7wpf9DmTskI4yUSE53RJR5ofQkT225fgWVVKt1D9tTnl2MvrCEW0DmJ99/t7aC7 m/gaz1lzD4uuZFLRJvRsx962zYQRegSqSj9HYTrEZ7zUtKLU6hRUrAvc94Ogr6im4TfJ3K BsNi+2+RTck6U226QHMX1cEaS/Yr0Zo= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1742960306; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=MAxRD8P9W2N0YRcf5gQPGY2DJk1Zq+bjVf3MR/WuNdQ=; b=yNpTLd/iPC5YO6FcI60gIBnJ3lg0eQlrjiC+2HuhrGitutiwswAnRt+caB/XTta8elkCVwFCdC9wwQW4cxE3P0fa6DWtxXlvbsq3MkWJygyMiPo0uyBzMwj9KUvUPt5uhVN1QwsdS4NZ1HYrX1vn9vhThOCo3BC6Yh1CRcf0cks= Received: from localhost(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WT1p3wj_1742960303 cluster:ay36) by smtp.aliyun-inc.com; Wed, 26 Mar 2025 11:38:23 +0800 From: Baolin Wang To: akpm@linux-foundation.org, hughd@google.com Cc: willy@infradead.org, david@redhat.com, 21cnbao@gmail.com, ryan.roberts@arm.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] selftests: mincore: fix tmpfs mincore test failure Date: Wed, 26 Mar 2025 11:38:10 +0800 Message-ID: <99a3e190d38b08a2b96ede952a29893bffdb3432.1742960003.git.baolin.wang@linux.alibaba.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 1FBEC40002 X-Stat-Signature: wwnyax31zbksy3bfwxhcc9sdtghopbzq X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1742960308-614124 X-HE-Meta: U2FsdGVkX1/UzLC40PRL7PGmGAqiUHPWjKrFaKDqLodhO58EYr0xxK6FVOwPs9suwsJ4FjCJnqPl4hdyWJ05sO3r3qdfLcq5LOqdayjXYBLtFsHoPM7L4Dn26bCEwCjjoFdS/lRkRlV1ibigSx+VYw0OybcxG/ARyQApsnVfJpUb1HE4VJsKYa39398+y8sGi+Bi5TNf36ZWN3TR+VA5b8P5mGy9gSfCex5lP9OINILIkYkZih9miAwlj7nkcWYFlWdapKTvU5JkXRQtrlnvZou+7lh7f+ge0Ze6cXXuV8Lf/MnCiexHhV6nXmMthOyQO+o6lBC2mf5mfk/fhwDJ+ZoLnlq/3jmXh5dgAqf/jJLruqWbjMOnro4uRHgnE3hQuhZd09E6F2z2dRb9woPR8B7BTdRqOBmEdEdlAXKa/WDdDQlly92VA076c76mnAFwY7LZNy+y0hDbeD6ubPATG9uMykZsTs9+7LhXwAC/lZM2w4yJ4zjui1T25+NJAQEDoqXBYUfwxDG8TS3rF3m0OkJszTd9HzEFMKMf8v606SbJTB8KWL8kIB3LtZua/mU9iLr7kNug3NvPDMnueDEgDuHUJzSPV+ZgafURopcwwLdjp+cSP6igdegxaiA9TduJqhw2kjToKT9Jmt98WhYmQtT/+/1iG7VOsE22iw6WETEyvvfdNnae6lmoTr63co7joh6/CJ11+XB25DOz4aaRPlqTmVSO+7vtRApGoMjvN29cDo0mlHcRSoaR4LQ/98yiodovrCi5tqM9XD3CUvEgTBBhZUyPNPDW7wJCRv8rAtvzCHq26JEOgnzXWqoyR0C5Hzoevuz/peJ4KF3pz+d278foCVz6nzpKxMuouGY5mpzkfauTa6SNYogbHtFoUzkqYFJX7pgp55AsScMRI0eHfF1o3IgQjY+qa9tB1N7XAGdXPPnngDhsvnqxiU0RuwARW2B7u+Xxyh+qauIbpRR ZoFPkJ9b yFoV5nkYIZ1QjUgfXMR7XFTE+qteTshkpUcTlHhOu4dDE9mw+CxToHMxh2c6lkU2lAhOYYXVGpWXjklI3Dqqq07DWdbK0t9Dw719EGqOIGdrKlZobkIX/j7zEV9BNtL1lQAYbf95F/JmE4aozIzdog2McIwqoLgzulqk8O/XAsDH+we35sUG2HEvw+pL1WRZGZ61EYLJoM8EoWXWvOfbUGqxdPrKoAgeeLc6BXfJv4pu0pNGQ2o3equXPpKCbsSkFC3DT 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: When running mincore test cases, I encountered the following failures: " mincore_selftest.c:359:check_tmpfs_mmap:Expected ra_pages (511) == 0 (0) mincore_selftest.c:360:check_tmpfs_mmap:Read-ahead pages found in memory check_tmpfs_mmap: Test terminated by assertion FAIL global.check_tmpfs_mmap not ok 5 global.check_tmpfs_mmap FAILED: 4 / 5 tests passed " The reason for the test case failure is that my system automatically enabled tmpfs large folio allocation by adding the 'transparent_hugepage_tmpfs=always' cmdline. However, the test case still expects the tmpfs mounted on /dev/shm to allocate small folios, which leads to assertion failures when verifying readahead pages. To fix this issue, remount tmpfs to a new test directory and set the 'huge=never' parameter to avoid allocating large folios, which can pass the test. Signed-off-by: Baolin Wang --- .../selftests/mincore/mincore_selftest.c | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/mincore/mincore_selftest.c b/tools/testing/selftests/mincore/mincore_selftest.c index e949a43a6145..e8d7a3a4739f 100644 --- a/tools/testing/selftests/mincore/mincore_selftest.c +++ b/tools/testing/selftests/mincore/mincore_selftest.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -283,7 +284,7 @@ TEST(check_file_mmap) free(vec); } - +#define INPUT_MAX 80 /* * Test mincore() behavior on a page backed by a tmpfs file. This test * performs the same steps as the previous one. However, we don't expect @@ -291,6 +292,9 @@ TEST(check_file_mmap) */ TEST(check_tmpfs_mmap) { + char tmpfs_template[] = "/tmp/check_tmpfs_XXXXXX"; + const char *tmpfs_loc = mkdtemp(tmpfs_template); + char testfile[INPUT_MAX]; unsigned char *vec; int vec_size; char *addr; @@ -300,6 +304,10 @@ TEST(check_tmpfs_mmap) int i; int ra_pages = 0; + ASSERT_NE(NULL, tmpfs_loc) { + TH_LOG("Can't mkdir tmpfs dentry\n"); + } + page_size = sysconf(_SC_PAGESIZE); vec_size = FILE_SIZE / page_size; if (FILE_SIZE % page_size) @@ -311,7 +319,18 @@ TEST(check_tmpfs_mmap) } errno = 0; - fd = open("/dev/shm", O_TMPFILE | O_RDWR, 0600); + /* Do not use large folios for tmpfs mincore testing */ + retval = mount("tmpfs", tmpfs_loc, "tmpfs", 0, "huge=never,size=4M"); + ASSERT_EQ(0, retval) { + TH_LOG("Unable to mount tmpfs for testing\n"); + } + + retval = snprintf(testfile, INPUT_MAX, "%s/test_file", tmpfs_loc); + ASSERT_GE(INPUT_MAX, retval) { + TH_LOG("Unable to create a tmpfs for testing\n"); + } + + fd = open(testfile, O_CREAT|O_RDWR, 0664); ASSERT_NE(-1, fd) { TH_LOG("Can't create temporary file: %s", strerror(errno)); @@ -363,6 +382,8 @@ TEST(check_tmpfs_mmap) munmap(addr, FILE_SIZE); close(fd); free(vec); + umount(tmpfs_loc); + rmdir(tmpfs_loc); } TEST_HARNESS_MAIN