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 59FA8C83038 for ; Tue, 1 Jul 2025 18:49:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E40206B00B3; Tue, 1 Jul 2025 14:49:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E17FD6B00B4; Tue, 1 Jul 2025 14:49:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D554C6B00B6; Tue, 1 Jul 2025 14:49:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C48896B00B3 for ; Tue, 1 Jul 2025 14:49:17 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 69C411244F5 for ; Tue, 1 Jul 2025 18:49:17 +0000 (UTC) X-FDA: 83616583554.27.4FC9618 Received: from mail-oa1-f48.google.com (mail-oa1-f48.google.com [209.85.160.48]) by imf28.hostedemail.com (Postfix) with ESMTP id 8B781C0009 for ; Tue, 1 Jul 2025 18:49:15 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eYrAjRZL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of suresh.k.chandrappa@gmail.com designates 209.85.160.48 as permitted sender) smtp.mailfrom=suresh.k.chandrappa@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751395755; a=rsa-sha256; cv=none; b=tWF05oNgXKkfMI7cz1bb/dJSpFuJ/FA0HtFvbtTJwqXOFyCyZhcjohaTot0jm2rFGbnTN4 9buUsLINdapWZ6JCqgbMJ4FEuDzyQf6XXNA69tSR+m0ZaeENIX+MxFGuZcoL8uFOLiYREM vig5LYZXQ66/JN7sofrAUlRlYoVh+3s= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eYrAjRZL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of suresh.k.chandrappa@gmail.com designates 209.85.160.48 as permitted sender) smtp.mailfrom=suresh.k.chandrappa@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751395755; 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=6T6ShIaDgYa+eLDzLK1Z4CLo4u4A8Rd31tmUlpMfZZg=; b=QjWj6bQ4Ig2JekJ+CPhRo9UlfNHecat45rCBqWasMv6DkmP7UvPoHRHDpomg+jKaUpKf85 v3jxxQ+2qzJb61RkgQ5Ai90NfPWFQO7WHb1ehkKEYhLf4fsaL0H2d1esNv2f9REadh/CxI YvEyIZoPSyB2x9pbsTP09584bcgx6Jw= Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-2e999729ccbso2177265fac.2 for ; Tue, 01 Jul 2025 11:49:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751395754; x=1752000554; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=6T6ShIaDgYa+eLDzLK1Z4CLo4u4A8Rd31tmUlpMfZZg=; b=eYrAjRZLM/JIjp0ZidSBYWt5OgtSLrCpSEBWRPJ04DTFgqrxDZGRMxRki/CavlLDh2 q6nzIb5+FNxzg3PQkyPtlz4fXbPvxa/fl0Hd8vOY1+qvy042s1KmA/9/Cd7mtD9Tvv3H coIe1gmCrLF99jxxz4iTElWn8VODtZjx/T5E2OYeVjQkoOYQyhXc8pyx/MY3FyDZk18N yNk5auKOL7tht3CmksGRkAwxbWTc2Ei2uhqRqp1LsWEzTmhduA/SWi02t24EynQQ2/Lb 2RcFb9BIm8AYUJjKTQvz2zVYunCuilPsiJMam6xeKgxMVyNUFZ0EDr5orDhayYncv+Fy rxcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751395754; x=1752000554; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6T6ShIaDgYa+eLDzLK1Z4CLo4u4A8Rd31tmUlpMfZZg=; b=WWKFAUGXOtTLwfDnSJBIZsI5mMp+olmX1hFYKktc7sOFq+xsrCBkNIBrEaivtmU9Rc qFYPan9iKJOkFMcjJZYQfk61lpDwmdKn5nglXCzv+OJPDtoyWsKgaFF2DinRxmipMypD ACPrk51Z+Lk2Iu2RD+VT5XtiOys2yrHgkylDkCXPcLkg5pT0a6WUN+WVl7bBqZFsv5l5 rt41uhRzUSP1ULyMjv7bH2WRLi/IMAptkwjJYb5gZCEudevL9devoaOIhPgsU4MieR6u x/q4TXQxNea++HJppVFWgLtgwAeD5OS+kBFrlmJCOHa0j+Ok0mWM+vyaWkGqP9M7ebFI BwoA== X-Gm-Message-State: AOJu0YxCtjNEp8Rh3NONQFhLeNvJA2M8ZGAueVsBlsHgOIlHorCdzVgD NikawAUX1jvqORKjqEX30WmI19nNQM83vwEPpZoDefaG08EliEkzeH0j X-Gm-Gg: ASbGnct2M4LaFWewB3MOsApuaMV4TwADrBIUmNiZms5XXywgMlzcGT1aTguk/zKudf5 t1ih/cCT2WyJhmczuh5uTxZs3tFDzL5LGgyim53ppKegMn3z5PrCafagzYfD80NWNuJQ66lg7WB PlwWCx4x36KLeRacMFnuhlv0ldXaObb5sjn/3Oc8+op+xXZSjMeOkuNXv8TXnbyFL2eBq41Ypvb JCkfpKOqjOaWl/P+mkzKqWESUApll0a+Aj8HYV2vkJ8rAeZm7wP+5N/tiAznLe/d2ZYBgT3ldHE bo1ZBQXw/YzE33q6x6UMXvjK+f2Ixq/m8Hf6emkkq/oLNuchhMfMxfEGU2wEANf4lfXu/X5h8Q= = X-Google-Smtp-Source: AGHT+IFQar7eRKIGXm/cAgR40K7ZQCBU6V/9cWUE3jHqi9PpFBjVeAa5Z08aoxBYmDlj+ul5E6tD3g== X-Received: by 2002:a05:6871:3748:b0:2d6:2a40:fb9d with SMTP id 586e51a60fabf-2efed81d50cmr14218187fac.28.1751395754357; Tue, 01 Jul 2025 11:49:14 -0700 (PDT) Received: from skc-Dell-Pro-16-Plus-PB16250.. ([132.237.156.254]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-73afb0e3160sm2213242a34.44.2025.07.01.11.49.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Jul 2025 11:49:13 -0700 (PDT) From: Suresh K C X-Google-Original-From: Suresh K C To: nphamcs@gmail.com, hannes@cmpxchg.org, joshua.hahnjy@gmail.com, shuah@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Suresh K C Subject: [PATCH v2 1/2] selftests: cachestat: add tests for mmap Date: Wed, 2 Jul 2025 00:19:01 +0530 Message-ID: <20250701184902.8927-1-suresh.k.chandrappa@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 8B781C0009 X-Stat-Signature: ja9kdpnqffyaft3hqq4e1akiqg4cs6er X-HE-Tag: 1751395755-892028 X-HE-Meta: U2FsdGVkX18XufNHquJRNK/D/E3E5P+UMVmh5QnXD7O9RnIfuNhFfl6Y5EMyXbiJb0VTkpT5ry1Rr8bMzxHREYJqsV9Iq+d78vDAFrpoUQHdDIG6dccM5XvgEobAQWbyqm15qHIZAgCCQR4bNvXfS/2+btz85iEr8rPI2An//oIR3JVJjjTKdArXz89JI57nYPM4ZeCiGNix5OxMCsO3CCeujdZ5qm28b1cSf98x9fC279zjLUAgfvfuUVkIX5bf3/YzI+Ly2Cn4dUbh4i19v2TD0iSgwfsa44VXXUtR/ooJ+Dc2e4wB7xA2W1m0T9iX7aHSeS4wkLLDRo7Tfm4hfRKp1ESkwovodLOWyvbY+9mURpdvs+K/TLR6S5+0L9xrXxiJObUfjopO+cZ4o3UUrpo8qw+x5nAaQcWglc19BhoLWHFgNYoHyLq7usB9bWgAAP7ee48hKWIil/D6sQoCj0RQq0IhHcWtv5K0maMwzCPPuINyjWiKZZHrzpuVM5tNxLNg8twcL7WCt72V2mOBVEBchP8bnOq1sFrDEQEzuoMtL0hgPIZJUnn5joCLCDdZgugwqLuVFH8Qclc+VK0JjrM44NDLN0b1U99w8bB9k2yH9mf+MAVQG53V6WxaLyNSHgQiHiBoYgGGUBnudmp0uHyoqG/Ll1tQLkys6Vc+XrsHgtl+jBtZ3j22qQg1qqtOX0piBzBAa4WdKRrWEp/HeQRKZJa7ntvgJgxaxLlSf/zrYzDDcQ0KUFW/np50kyaIDznGnW4O0QGo+fUvBsn/8B7w53Kvht6sWvZqEBipRQ+GHYJNUzZR/4frSyYcxTEVcWh8v3EIjmNeTkTq9uwgvxNogG9LPNrwGxr9aJwVJX7r6EQDbVN3FbPJu+9mtir5Uz6SV7LPtCHFera8xxW9MEsUJLENRUsTM3zNNjfH7ZZLBW0qWDuYSj69jpWpkzzxAoFySaeuxefDIA2KcZX BV5EpF98 gtbAR4T0el4NbwajWR68i2SwDJzJhEHsCusqcaLMnLLSiivGDg4Q0NhPrrDXGZUZrYc711NF0X2TZCFzMM0Jq3HWrYhQ/FqS1NbYXDoyGRyi10vxSbA9PMtoEKQ6Cb0jmeAFW0psKrioF3UqQe6aCZvpc6+4LeYOJ+7SppMQk/NHPYbQZl0/G2y4YoW8czFCofQE0Srzo636THFrnwYGbBuzluzcRfZQaLNfJsc+DCQD7CDs/kYpupQEqpPmfZ+vpXI05BR/853mrp3r225hwTvVoRYCSEgwB9w0uhh8IpG6YQp8yv7v8gCDF6SZy+5w+c0XHZ3W3Ta4weAOVZl7dfZHxCR6hLprcN8LxLzBK7QPJ310GE6icQzQnhYYfGvkooPY+KdCez+rS2F5UqUzXPiLC7qqeYDieGlWjbr1Bh4c0FOaAMshmHJIkoRx51xQtCPwXplzvDDJJ4LYU8VTq8fZ5ezIRggoUyK+cimn4+mLTDpbrgsWNSRefEVfG9Sciig74 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: From: Suresh K C Add a test case to verify cachestat behavior with memory-mapped files using mmap(). This ensures that pages accessed via mmap are correctly accounted for in the page cache. Tested on x86_64 with default kernel config Signed-off-by: Suresh K C --- .../selftests/cachestat/test_cachestat.c | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/cachestat/test_cachestat.c b/tools/testing/selftests/cachestat/test_cachestat.c index 632ab44737ec..b6452978dae0 100644 --- a/tools/testing/selftests/cachestat/test_cachestat.c +++ b/tools/testing/selftests/cachestat/test_cachestat.c @@ -33,6 +33,11 @@ void print_cachestat(struct cachestat *cs) cs->nr_evicted, cs->nr_recently_evicted); } +enum file_type { + FILE_MMAP, + FILE_SHMEM +}; + bool write_exactly(int fd, size_t filesize) { int random_fd = open("/dev/urandom", O_RDONLY); @@ -202,7 +207,7 @@ static int test_cachestat(const char *filename, bool write_random, bool create, return ret; } -bool test_cachestat_shmem(void) +bool run_cachestat_test(enum file_type type) { size_t PS = sysconf(_SC_PAGESIZE); size_t filesize = PS * 512 * 2; /* 2 2MB huge pages */ @@ -212,27 +217,43 @@ bool test_cachestat_shmem(void) char *filename = "tmpshmcstat"; struct cachestat cs; bool ret = true; + int fd; unsigned long num_pages = compute_len / PS; - int fd = shm_open(filename, O_CREAT | O_RDWR, 0600); + if (type == FILE_SHMEM) + fd = shm_open(filename, O_CREAT | O_RDWR, 0600); + else + fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, 0666); if (fd < 0) { - ksft_print_msg("Unable to create shmem file.\n"); + ksft_print_msg("Unable to create file.\n"); ret = false; goto out; } if (ftruncate(fd, filesize)) { - ksft_print_msg("Unable to truncate shmem file.\n"); + ksft_print_msg("Unable to truncate file.\n"); ret = false; goto close_fd; } if (!write_exactly(fd, filesize)) { - ksft_print_msg("Unable to write to shmem file.\n"); + ksft_print_msg("Unable to write to file.\n"); ret = false; goto close_fd; } + if (type == FILE_MMAP){ + char *map = mmap(NULL, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (map == MAP_FAILED) { + ksft_print_msg("mmap failed.\n"); + ret = false; + goto close_fd; + } + for (int i = 0; i < filesize; i++) { + map[i] = 'A'; + } + map[filesize - 1] = 'X'; + } syscall_ret = syscall(__NR_cachestat, fd, &cs_range, &cs, 0); if (syscall_ret) { @@ -308,12 +329,18 @@ int main(void) break; } - if (test_cachestat_shmem()) + if (run_cachestat_test(FILE_SHMEM)) ksft_test_result_pass("cachestat works with a shmem file\n"); else { ksft_test_result_fail("cachestat fails with a shmem file\n"); ret = 1; } + if (run_cachestat_test(FILE_MMAP)) + ksft_test_result_pass("cachestat works with a mmap file\n"); + else { + ksft_test_result_fail("cachestat fails with a mmap file\n"); + ret = 1; + } return ret; } -- 2.43.0